Systemd va schimba modul în care funcționează directorul dvs. de acasă Linux

Echipa care dezvoltă systemd propune o abordare inovatoare pentru administrarea directoarelor personale. A califica această schimbare drept „nouă” este o subestimare, deoarece vorbim despre o adevărată transformare fundamentală pentru sistemul Linux. În acest articol, vom explora detaliile systemd-homed, o componentă care se va integra probabil în curând într-o distribuție Linux populară.

O istorie marcată de controverse

Introducerea systemd în 2010 a generat diviziuni puternice în comunitatea Linux. O parte a utilizatorilor a considerat-o o îmbunătățire, în timp ce alții au criticat designul, considerându-l o abatere de la principiile filozofiei Unix. Există și o categorie de utilizatori care au rămas indiferenți.

Reacția oponenților a fost vehementă și, în unele situații, aproape fanatică. Lennart Poettering, inginer software la Red Hat și co-dezvoltator al systemd, a fost chiar ținta unor amenințări cu moartea.

Au fost postate pe YouTube melodii care incitau la violență împotriva lui Poettering și au apărut site-uri web care îndemnau utilizatorii Linux să boicoteze systemd. Kay Sievers, celălalt co-dezvoltator, a primit de asemenea critici, însă Poettering a fost principalul vizat.

Cu toate acestea, în doar opt luni, Fedora a adoptat systemd. Până la finalul anului 2013, și distribuții precum Arch, Debian, Manjaro și Ubuntu au migrat la systemd. Un avantaj al codului open-source este posibilitatea de a adapta codul sursă, oferind alternative. Astfel, distribuții noi, cum ar fi Devuan, o variantă a Debian, au apărut tocmai pentru a evita utilizarea systemd.

Directorul $HOME: un spațiu personal

În structura de directoare Linux, toate fișierele și personalizările tale sunt stocate în directorul „/home”. Acesta conține datele, imaginile, muzica și întreaga structură de directoare personală, fiind numit după contul tău de utilizator.

Preferințele aplicațiilor sunt păstrate în directoare ascunse, numite „directoare cu puncte”. Un fișier sau director al cărui nume începe cu un punct (.) este ascuns. Aceste setări, stocate local și nu într-un registru central, sunt incluse în copiile de rezervă ale directorului personal, ceea ce asigură salvarea lor.

În cazul unei restaurări, la lansarea aplicațiilor precum LibreOffice sau Thunderbird, acestea accesează directoarele ascunse, unde găsesc preferințele, setările barelor de instrumente și alte personalizări. Thunderbird, de exemplu, regăsește informațiile despre contul de e-mail. Astfel, nu este necesară reconfigurarea detaliată a fiecărei aplicații.

Comanda `ls -a` permite vizualizarea fișierelor și directoarelor ascunse. Pentru a observa diferența, introdu mai întâi comanda:

ls

Aceasta va afișa fișierele și directoarele obișnuite. Apoi, introdu comanda:

ls -a

Acum, vei putea vedea și elementele ascunse.

Datorită importanței sale, directorul „/home” este frecvent montat pe o partiție separată sau pe un alt hard disk. În cazul unei probleme majore a sistemului de operare, se poate reinstala distribuția Linux sau se poate trece la alta, remontând ulterior partiția existentă în „/home”.

Datele tale personale

Directorul personal nu stochează doar datele tale, ci și informații despre identitatea ta digitală. Spre exemplu, directorul „.ssh” păstrează datele conexiunilor la distanță și cheile SSH generate.

Alte informații, precum numele de utilizator, parola și ID-ul unic, sunt stocate în fișiere precum „/etc/passwd” și „/etc/shadow”. Unele dintre acestea pot fi citite de oricine, în timp ce altele necesită privilegii de administrator.

Iată un exemplu de conținut al fișierului „/etc/passwd”:

cat /etc/passwd

Modificările introduse de systemd-homed

Obiectivul systemd-homed este de a oferi un director personal complet portabil, care să includă atât datele, cât și identitatea digitală. UID-ul și toate mecanismele de identificare și autentificare ar urma să fie stocate exclusiv în acest director.

Din motive de siguranță, directoarele personale sunt criptate. Ele sunt decriptate automat la autentificare și criptate la deconectare. Criptarea Linux Unified Key Setup (LUKS) este metoda preferată, dar există și alternative, precum fscrypt.

Toate informațiile de identitate sunt stocate într-un fișier JSON numit „~/.identity”, semnat criptografic cu o cheie din afara controlului tău.

Directorul personal al fiecărui utilizator este montat pe un dispozitiv loopback, similar aplicațiilor snap. Această metodă permite ca arborele de directoare să fie integrat perfect în sistemul de operare. Punctul de montare implicit este „/home/$USER.homedir”, unde „$USER” este numele contului.

Avantajele noii abordări

Transformând directorul personal într-o structură sigură, acesta poate fi mutat cu ușurință pe un suport amovibil, precum un stick USB. Astfel, datele pot fi transportate între computerele de la serviciu și de acasă, sau pe orice alt dispozitiv compatibil.

Aceasta este ideea lui Poettering despre „un director personal complet portabil”. Chiar dacă nu se intenționează mutarea directorului, această metodă ar simplifica actualizările și migrațiile și ar spori securitatea.

Noua abordare elimină „bazele de date sidecar”, care conțin informații importante despre utilizator, pe care Poettering consideră că ar trebui centralizate. Fișierele „/etc/passwd” și „/etc/shadow” conțin informații de autentificare și parole, dar și detalii despre shell-ul implicit sau câmpul GECOS.

Poettering consideră că metadatele ar trebui să fie stocate în grupuri logice, în înregistrarea JSON a fiecărui utilizator din directorul său personal.

Gestionarea noului $HOME

Serviciul systemd-homed este administrat prin intermediul noului instrument de linie de comandă homectl.

Acesta oferă opțiuni pentru crearea utilizatorilor și a directoarelor personale, stabilirea limitelor de stocare, setarea parolelor, blocarea conturilor sau ștergerea acestora. De asemenea, permite inspectarea utilizatorilor și citirea înregistrărilor JSON.

Fusul orar și alte informații de localizare pot fi setate individual pentru fiecare utilizator. Poți defini shell-ul implicit și variabilele de mediu, astfel încât acestea să fie activate la fiecare conectare.

În directorul „/home” vei observa intrări gestionate de systemd-homed, sub forma „/home/nume_utilizator.homedir”, unde „nume_utilizator” este numele contului.

/home/dave.homedir

Acesta este doar un punct de montare. Locația directorului personal criptat se află în altă parte.

Limitări și provocări

systemd-homed este aplicabil doar conturilor de utilizator obișnuite, cele cu UID mai mic de 1000 nefiind gestionate. Conturile root, daemon sau bin nu pot fi administrate prin această metodă. Este necesară în continuare metoda clasică de administrare. Prin urmare, systemd-homed nu reprezintă o soluție globală.

Există o problemă Catch-22 care trebuie rezolvată. Directorul personal este decriptat la conectare. Însă, la accesul de la distanță prin SSH, cheile SSH nu pot fi accesate, deoarece directorul este încă criptat. Așadar, autentificarea SSH necesită chei care nu sunt disponibile până la conectare.

Echipa systemd-homed a recunoscut această problemă, însă nu a fost oferită o soluție încă. Este de așteptat ca o rezolvare să fie implementată.

În cazul în care directorul personal este transferat pe un computer nou, iar UID-ul este deja utilizat, un nou UID va fi atribuit automat. Va fi necesară reatribuirea drepturilor de acces la toate fișierele, pentru noul UID.

În prezent, această operație este efectuată recursiv cu comanda chown -R. În viitor, se preconizează o abordare mai elegantă. Metoda actuală nu ia în calcul demonii și procesele care rulează sub alți utilizatori.

Când va deveni disponibilă această tehnologie?

Schimbările sunt deja în curs de implementare. Codul a fost încărcat pe 20 ianuarie 2020 și inclus în versiunea 245 a systemd, livrată cu Ubuntu 20.04 în aprilie 2020.

Pentru a verifica versiunea ta, introdu comanda:

systemd --version

Totuși, instrumentul homectl nu este încă prezent. Ubuntu 20.04 folosește un director „/home” tradițional și nu implementează systemd-homed.

Distribuțiile vor decide individual când vor implementa systemd-homed și homectl.

Nu este necesară o abordare radicală. Metodele standard de gestionare a utilizatorilor și a directoarelor personale vor fi păstrate, oferind astfel alternative pentru utilizatori.