Systemd-homed geïntroduceerd om draagbare thuismappen te beheren

Lennart Poettering ingediend (PDF) op de All Systems Go 2019-conferentie, een nieuw onderdeel van de systeembeheerder systemd - systemd-homed, gericht op het draagbaar maken van de thuismappen van gebruikers en gescheiden van de systeeminstellingen. Het hoofdidee van het project is het creëren van zelfvoorzienende omgevingen voor gebruikersgegevens die tussen verschillende systemen kunnen worden overgedragen zonder dat u zich zorgen hoeft te maken over identificatiesynchronisatie en vertrouwelijkheid.

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 profiel in JSON-indeling, opgeslagen in de map ~/.identity. Het profiel bevat de parameters die nodig zijn voor het werk van de gebruiker, inclusief informatie over de naam, wachtwoord-hash, coderingssleutels, quota's en toegewezen bronnen. Het profiel kan worden gecertificeerd met een digitale handtekening die is opgeslagen op een extern Yubikey-token.

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 Varlink.

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

Voeg een reactie