openSUSE > Palvelinohjelmat ja ohjelmointi

Miten irrottaa LUKS-osio nätisti sammutettaessa?

(1/2) > >>

SuperOscar:
Olen koonnut kaikki ”salaisuuteni” (salasanat eri sivustoille jne.) LUKS-salattuun tiedostoon, jonka tarvittaessa liitän loop-laitteena kansioksi /local/private/$user pienellä skriptillä. Koneen sammutus tiedoston ollessa liitettynä ei ole aiheuttanut ongelmia missään muussa Linux-jakelussa, ei muistaakseni vanhemmissa SUSEissakaan, mutta ainakin parissa viimeisemmässä Leapissä sammutus keskeytyy ikuisen oloisesti ”stop job running for” -viestiin: kello antaa irrottamiseen ensin aikaa jonkin verran, mutta kun se on kulunut loppuun, sitä tuntuu kerta toisensa jälkeen tulevan vain lisää.

Jos muistaisin aina ajaa ennen sammutusta irrotusskriptin, mitään ongelmaa ei olisi, mutta koska en muista, homma olisi hyvä saada jotenkin automatisoiduksi. Irrotusskripti koostuu oleellisesti vain riveistä:


--- Koodia: ---umount /local/private/$user
cryptsetup luksClose ${user}privatefs
--- Koodi päättyy ---

Miten tämän ajaminen sammutuksen yhteydessä kannattaisi automatisoida? SystemD:llä vai vanhanaikaisesti? Löysin joitakin malleja SystemD-uniteiksi googlaamalla, mutta en ole vielä kokeillut.

SuperOscar:
Tällainen ratkaisu on nyt kokeilussa: /etc/rc.d/halt.local-tiedostoon lisätty rivi, jolla kutsutaan skriptiä /usr/local/sbin/umount-privatefss. Tämän sisältö on:


--- Koodia: ---#!/usr/bin/zsh

emulate -L zsh

local mountpoint owner
local -a mountpoints

mountpoints=($(mount | grep /local/private | cut -d " " -f 3))
for mountpoint in $mountpoints; do
    owner=${mountpoint:t}
    umount $mountpoint
    cryptsetup luksClose ${owner}privatefs
fi
--- Koodi päättyy ---

(zsh:lla, koska sitä osaan parhaiten.)

raimo:
Viilaan pilkkua, mutta eikö fi tilalla pitäisi olla done  ;)

SuperOscar:

--- Lainaus käyttäjältä: raimo - 15.09.2017 - klo:17:11 ---Viilaan pilkkua, mutta eikö fi tilalla pitäisi olla done  ;)

--- Lainaus päättyy ---

Totta! Virhe lienee tullut siitä, kun poistin for-silmukkaa aiemmin ympäröineen ifin. (Eihän minun tietenkään tarvitse tarkistaa, onko $mountpoints tyhjä, koska for ei tee mitään tyhjälle listalle.)

Sitä paitsi en saanut vieläkään kokeiltua, toimiiko tämä. Kone oli erinäisistä syistä pari vuorokautta putkeen käynnissä, ja kun viimein lähdin sammuttamaan, sain ”stop job running” -viestin toisesta liitoksesta: olin mennyt sammuttamaan koneen, johon sammutettavalla koneella oli aktiivinen NFS-liitos.

SuperOscar:
Pahus, ei toimi :( Mahdollisesti /etc/rc.d/halt.local suoritetaan liian myöhään.

Navigaatio

[0] Viestien etusivu

[#] Seuraava sivu

Siirry pois tekstitilasta