Lennart Poettering
De thuismapomgeving heeft de vorm van een aangekoppeld afbeeldingsbestand, waarvan de gegevens zijn gecodeerd. Gebruikersreferenties zijn gekoppeld aan de homedirectory in plaats van aan de systeeminstellingen - in plaats van /etc/passwd en /etc/shadow
Parameters kunnen ook aanvullende informatie bevatten, zoals SSH-sleutels, biometrische authenticatiegegevens, afbeelding, e-mail, adres, tijdzone, taal, proces- en geheugenlimieten, extra mount-vlaggen (nodev, noexec, nosuid), informatie over gebruikte IMAP/SMTP-servers van gebruikers , informatie over het inschakelen van ouderlijk toezicht, back-upopties, enz. Er is een API beschikbaar om parameters op te vragen en te parseren
UID/GID-toewijzing en -verwerking gebeurt dynamisch op elk lokaal systeem waarmee de homedirectory is verbonden. Met behulp van het voorgestelde systeem kan de gebruiker zijn thuismap bij zich houden, bijvoorbeeld op een flashstation, en een werkomgeving op elke computer krijgen zonder er expliciet een account op aan te maken (de aanwezigheid van een bestand met de afbeelding van de thuismap leidt tot synthese van de gebruiker).
Er wordt voorgesteld om het LUKS2-subsysteem te gebruiken voor gegevensversleuteling, maar systemd-homed maakt ook het gebruik van andere backends mogelijk, bijvoorbeeld voor niet-versleutelde mappen, Btrfs, Fscrypt en CIFS-netwerkpartities. Om draagbare mappen te beheren, wordt het hulpprogramma homectl voorgesteld, waarmee u afbeeldingen van thuismappen kunt maken en activeren, de grootte ervan kunt wijzigen en een wachtwoord kunt instellen.
Op systeemniveau wordt het werk verzekerd door de volgende componenten:
- systemd-homed.service - beheert de thuismap en sluit JSON-records rechtstreeks in in de thuismapafbeeldingen;
- pam_systemd - verwerkt parameters uit het JSON-profiel wanneer de gebruiker inlogt en past deze toe in de context van de geactiveerde sessie (voert authenticatie uit, configureert omgevingsvariabelen, enz.);
- systemd-logind.service - verwerkt parameters uit het JSON-profiel wanneer de gebruiker inlogt, past verschillende instellingen voor resourcebeheer toe en stelt limieten in;
- nss-systemd - NSS-module voor glibc, synthetiseert klassieke NSS-records op basis van een JSON-profiel en biedt achterwaartse compatibiliteit met de UNIX-gebruikersverwerkings-API (/etc/password);
- PID 1 - creëert dynamisch gebruikers (gesynthetiseerd naar analogie met het gebruik van de DynamicUser-richtlijn in eenheden) en maakt ze zichtbaar voor de rest van het systeem;
- systemd-userdbd.service - vertaalt UNIX/glibc NSS-accounts naar JSON-records en biedt een uniforme Varlink API voor het opvragen en herhalen van records.
De voordelen van het voorgestelde systeem zijn onder meer de mogelijkheid om gebruikers te beheren bij het aankoppelen van de map /etc in alleen-lezen modus, de afwezigheid van de noodzaak om identificatiegegevens (UID/GID) tussen systemen te synchroniseren, de onafhankelijkheid van de gebruiker van een specifieke computer, het blokkeren van gebruikersgegevens tijdens de slaapmodus, het gebruik van encryptie en moderne authenticatiemethoden. Het is de bedoeling dat Systemd-homed in release 244 of 245 wordt opgenomen in de mainstream van systemd.
Voorbeeld JSON-gebruikersprofiel:
"autoLogin": waar,
"bindend": {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType": "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"homeDirectory" : "/home/test",
"imagePath" : "/home/test.home",
"luksCipher" : "aes",
"luksCipherMode" : "xts-plain64",
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
"luksVolumeKeySize": 32,
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"opslag": "luks",
"uid": 60233
}
},
"dispositie": "normaal",
"enforcePasswordPolicy": false,
"lastChangeUSec" : 1565951024279735,
"lid van" : [
"wiel"
],
"bevoorrecht" : {
"hashedWachtwoord": [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"handtekening" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——BEGIN OPENBARE SLEUTEL——\nMCowBQADK2VwAy…=\n——EINDE OPENBARE SLEUTEL——\n"
}
],
"gebruikersnaam": "test",
"toestand" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount": 1,
"state": "inactief",
"service" : "io.systemd.Home",
"schijfgrootte" : 161218667776,
"schijfplafond": 191371729408,
"schijfvloer": 5242780,
"ondertekendLokaal": waar
}
}
Bron: opennet.ru