Системд ће променити начин на који ваш Линук кућни директоријум функционише

Tim koji stoji iza systemd-a uvodi potpuno nov pristup upravljanju kućnim direktorijumima. Ne radi se samo o maloj izmeni, već o fundamentalnoj promeni paradigme za Linux. U ovom tekstu ćete saznati sve bitne detalje o systemd-homed-u, koji će se uskoro pojaviti na većini Linux distribucija.

Kontroverze nisu novost

Kada je systemd prvi put predstavljen 2010. godine, Linux zajednica se podelila u tri različita tabora. Jedni su smatrali da je to poboljšanje, drugi su verovali da je reč o pogrešnom dizajnu koji ne sledi Unix filozofiju, dok je trećima bilo svejedno.

Protivnici su bili izrazito glasni, strastveni, a u nekim slučajevima i fanatični. Lennart Poettering, softverski inženjer u Red Hat-u i ko-programer systemd-a, čak je primao pretnje smrću.

Na YouTube-u su se pojavile pesme koje pozivaju na nasilje nad Poetteringom, a pokrenute su i web stranice koje su pokušavale da nateraju korisnike Linuxa da bojkotuju systemd. Njegov ko-programer, Kay Sievers, takođe je bio meta kritika i uvreda, ali je Poettering definitivno podneo najveći teret.

Ipak, za samo osam meseci, Fedora je prešla na korišćenje systemd-a. Do kraja 2013. godine, Arch, Debian, Manjaro, i Ubuntu su takođe prihvatili systemd. Naravno, lepota open-source-a je u tome što ako vam se nešto ne sviđa, možete da preuzmete izvorni kod i da ga prilagodite svojim potrebama. Nove distribucije, kao što je Devuan, koji je nastao kao fork Debiana, formirane su isključivo da bi se izbeglo korišćenje systemd-a.

Vaš $HOME direktorijum

U strukturi Linux direktorijuma, sve što radite nalazi se u „/home“ direktorijumu. Vaše datoteke, slike, muzika i cela struktura ličnih direktorijuma čuvaju se u ovom jedinstvenom direktorijumu, nazvanom po vašem korisničkom nalogu.

Podešavanja za vaše aplikacije čuvaju se u vašem kućnom direktorijumu u skrivenim „tačkastim direktorijumima“. Ako ime datoteke ili direktorijuma počinje tačkom (.), on je skriven. Pošto se ova podešavanja čuvaju lokalno, a ne u centralnom registru, i pošto rezervna kopija vašeg kućnog direktorijuma obuhvata ove skrivene datoteke i direktorijume, onda se i sve vaše postavke takođe bekapuju.

Kada vratite rezervnu kopiju i pokrenete aplikaciju, kao što je LibreOffice ili Thunderbird, ona traži svoj skriveni direktorijum. Tako pronalazi i vaša podešavanja dokumenata, postavke alatne trake i sva druga personalizovanja. Thunderbird pronalazi informacije o vašem nalogu e-pošte i vašu e-poštu. Tako se izbegava sporo podešavanje svake aplikacije iznova.

Možete da koristite komandu `ls` sa opcijom `-a` (all) da biste videli skrivene datoteke i direktorijume. Prvo otkucajte sledeće:

ls

Ovo prikazuje uobičajene datoteke i direktorijume. Zatim otkucajte sledeće:

ls -a

Sada možete videti i skrivene datoteke i direktorijume.

Pošto je to najvažniji deo instalacije, uobičajeno je da se „/home“ direktorijum montira na sopstvenu particiju ili na poseban hard disk. Na taj način, ukoliko dođe do katastrofalne greške u operativnom sistemu ili particiji na kojoj se nalazi, možete jednostavno reinstalirati vašu Linux distribuciju ili preći na novu. Zatim možete ponovo montirati postojeću kućnu particiju na „/home“.

Podaci o vama

Vaš kućni direktorijum ne čuva samo vaše podatke; on takođe čuva informacije o vama, uključujući i neke atribute vašeg digitalnog identiteta. Na primer, vaš „.ssh“ direktorijum sadrži informacije o udaljenim vezama koje ste uspostavili sa drugim računarima i svim SSH ključevima koje ste generisali.

Ostali sistemski atributi, kao što su korisničko ime, lozinka i jedinstveni ID korisnika, čuvaju se na drugom mestu u datotekama kao što su „/etc/passwd“ i „/etc/shadow“. Neke od ovih datoteka može da čita bilo ko, dok druge mogu čitati samo korisnici sa root privilegijama.

Ovako izgleda sadržaj datoteke „/etc/passwd“:

cat /etc/passwd

Promene koje donosi systemd-homed

Cilj systemd-homed-a je da obezbedi potpuno prenosivi kućni direktorijum sa vašim podacima i Linux digitalnim identitetom koji se u njemu čuva. Vaš UID i svi drugi mehanizmi identifikacije i autentifikacije biće sačuvani isključivo u vašem kućnom direktorijumu.

Zbog svog dizajna „sva jaja u jednoj korpi“, kućni direktorijumi su šifrovani. Oni se automatski dešifruju kada se prijavite i ponovo šifruju kada se odjavite. Preferirani metod je korišćenje Linux Unified Key Setup (LUKS) enkripcije diska. Međutim, postoje i druge opcije, kao što je fscrypt.

JSON (JavaScript Object Notation) korisnički zapis čuva sve informacije o vašem identitetu u direktorijumu pod nazivom „~/.identity“. On je kriptografski potpisan ključem koji je izvan vaše kontrole.

Kućni direktorijum svakog korisnika se montira na loopback uređaj, slično načinu na koji se montira snap aplikacija. Ovo je urađeno tako da se struktura direktorijuma unutar matičnog direktorijuma pojavljuje kao prirodni deo strukture direktorijuma operativnog sistema. Tačka montiranja se po default-u nalazi na „/home/$USER.homedir“ (gde se „$USER“ zamenjuje imenom korisničkog naloga).

Koje su prednosti?

Pošto vaš kućni direktorijum postaje bezbedna kapsula svih vaših podataka, možete čak imati svoj kućni direktorijum na prenosivom uređaju. Na primer, možete da koristite USB disk da biste ga premeštali između vaših radnih i kućnih računara ili bilo kog drugog računara sa systemd-om.

To je ono što je Poettering mislio pod „potpuno prenosivim kućnim direktorijumom“. On je rekao da čak i ako ne želite da premeštate svoj kućni direktorijum na prenosivom uređaju, ovo će pojednostaviti nadogradnje i migracije, kao i poboljšati sigurnost.

Ovo eliminiše ono što on naziva „baze podataka privesaka“, koje sadrže delove važnih informacija o vama za koje Poettering smatra da bi trebalo da budu centralizovane. Datoteke „/etc/passwd“ i „/etc/shadow“ sadrže informacije o autentifikaciji i heširane lozinke, ali sadrže i informacije kao što su vaš default shell i General Electric Comprehensive Operating Supervisor (GECOS) polje.

Poettering je izjavio da metapodaci treba da budu racionalizovani i čuvani u smislenim grupama u JSON zapisu svakog korisnika u njegovom kućnom direktorijumu.

Upravljanje vašim novim $HOME direktorijumom

Systemd-homed servis se kontroliše putem novog `homectl` alata komandne linije.

Postoje opcije za kreiranje korisničkih i kućnih direktorijuma i postavljanje ograničenja skladištenja za svakog korisnika. Takođe možete podesiti lozinku, blokirati nekoga sa njegovog naloga ili u potpunosti izbrisati nalog. Korisnici se mogu pregledati, a mogu se čitati i njihovi JSON korisnički zapisi.

Vremenske zone i druge informacije vezane za lokaciju takođe se mogu podesiti za svakog korisnika. Možete odrediti default shell, pa čak i podesiti promenljive okruženja tako da budu u određenom stanju kada se neko prijavi.

Ako pogledate u „/home“ direktorijum, videćete upravljane unose sa systemd-homed-om koji izgledaju ovako, sa „.homedir“ dodatim korisničkom imenu:

/home/dave.homedir

Zapamtite, ovo je samo tačka montiranja. Lokacija stvarnog šifrovanog kućnog direktorijuma se nalazi negde drugde.

Ograničenja i problemi

systemd-homed je namenjen samo za korisničke naloge ljudi. Ne može da obrađuje korisničke naloge sa UID-om manjim od 1000. Drugim rečima, root, daemon, bin i slični nalozi ne mogu se administrirati pomoću ove nove šeme. Uvek će postojati potreba za standardnim načinima administriranja korisnika. Stoga, systemd-homed nije sveobuhvatno rešenje.

Postoji poznati problem začarani krug koji treba rešiti. Kao što je već pomenuto, nečiji kućni direktorijum se dešifruje kada se ta osoba prijavi. Međutim, ako neko udaljeno pristupi računaru putem SSH-a, SSH ključevi u kućnom direktorijumu ne mogu se referencirati jer je kućni direktorijum i dalje šifrovan dok se ta osoba ne prijavi. Naravno, SSH ključevi su neophodni za autentifikaciju pre nego što se neko može prijaviti.

Ovo je prepoznat problem od strane systemd-homed tima, ali za sada nema informacija o rešenju. Verovatno će rešenje biti pronađeno, jer bi bilo loše ako se ovo ne reši.

Pretpostavimo da neko prebacuje svoj kućni direktorijum na novi računar. Ako neko drugi već koristi isti UID na novom računaru, automatski će mu biti dodeljen novi UID. Naravno, sve datoteke će morati da prenesu vlasništvo na novi UID.

Trenutno se ovo rešava rekurzivnom, automatskom primenom komande `chown -R`. Verovatno će se ovo rešavati na drugačiji način u budućnosti kada se razvije elegantnije rešenje. Ovaj pristup ne uzima u obzir demone i procese koji se pokreću kao drugi korisnici.

Kada će se ovo dogoditi?

Ovo se već dešava. Izmene koda su predate 20. januara 2020, i bile su uključene u build 245 systemd-a, koji je isporučen sa Ubuntu 20.04 u aprilu 2020.

Da biste proverili koju verziju imate, otkucajte sledeće:

systemd --version

Međutim, komanda `homectl` još uvek nije prisutna. Ubuntu 20.04 koristi tradicionalni `/home` direktorijum i ne koristi systemd-homed.

Naravno, na pojedinačnim distribucijama je da odluče kada će uključiti i podržati systemd-homed i homectl.

Dakle, nema potrebe da bilo ko preduzima drastične mere. Pošto će standardne metode za upravljanje korisnicima i kućnim direktorijumima ostati, svi ćemo i dalje imati izbor.