Lennart Pottering
Ana dizin ortamı, verilerin şifrelendiği, monte edilmiş bir görüntü dosyası biçiminde gelir. Kullanıcı kimlik bilgileri /etc/passwd ve /etc/shadow yerine sistem ayarları yerine ana dizine bağlıdır
Parametreler ayrıca SSH anahtarları, biyometrik kimlik doğrulama verileri, resim, e-posta, adres, saat dilimi, dil, işlem ve bellek sınırları, ek bağlama işaretleri (nodev, noexec, nosuid), kullanılan kullanıcı IMAP/SMTP sunucuları hakkında bilgiler gibi ek bilgileri de içerebilir. , ebeveyn denetimlerinin etkinleştirilmesi, yedekleme seçenekleri vb. hakkında bilgiler. Parametreleri istemek ve ayrıştırmak için bir API sağlanmıştır
UID/GID ataması ve işlenmesi, ana dizinin bağlı olduğu her yerel sistemde dinamik olarak yapılır. Önerilen sistemi kullanarak, kullanıcı ana dizinini yanında, örneğin bir Flash sürücüde tutabilir ve üzerinde açıkça bir hesap oluşturmadan herhangi bir bilgisayarda bir çalışma ortamı elde edebilir (ana dizinin görüntüsünü içeren bir dosyanın varlığı). kullanıcının sentezine yol açar).
Veri şifreleme için LUKS2 alt sisteminin kullanılması önerilmektedir, ancak systemd-homed ayrıca şifrelenmemiş dizinler, Btrfs, Fscrypt ve CIFS ağ bölümleri için diğer arka uçların kullanımına da izin verir. Taşınabilir dizinleri yönetmek için, ev dizinlerinin görüntülerini oluşturmanıza ve etkinleştirmenize, ayrıca boyutlarını değiştirmenize ve bir şifre belirlemenize olanak tanıyan homectl yardımcı programı önerilmektedir.
Sistem düzeyinde çalışma aşağıdaki bileşenler tarafından sağlanır:
- systemd-homed.service - ana dizini yönetir ve JSON kayıtlarını doğrudan ana dizin görüntülerine yerleştirir;
- pam_systemd - kullanıcı oturum açtığında JSON profilindeki parametreleri işler ve bunları etkinleştirilmiş oturumun bağlamında uygular (kimlik doğrulama gerçekleştirir, ortam değişkenlerini yapılandırır vb.);
- systemd-logind.service - kullanıcı oturum açtığında JSON profilindeki parametreleri işler, çeşitli kaynak yönetimi ayarlarını uygular ve sınırları belirler;
- nss-systemd - glibc için NSS modülü, bir JSON profiline dayalı olarak klasik NSS kayıtlarını sentezleyerek UNIX kullanıcı işleme API'si (/etc/password) ile geriye dönük uyumluluk sağlar;
- PID 1 - kullanıcıları dinamik olarak oluşturur (birimlerdeki DynamicUser yönergesinin kullanımına benzer şekilde sentezlenir) ve onları sistemin geri kalanına görünür kılar;
- systemd-userdbd.service - UNIX/glibc NSS hesaplarını JSON kayıtlarına çevirir ve kayıtların sorgulanması ve yinelenmesi için birleşik bir Varlink API'si sağlar.
Önerilen sistemin avantajları arasında /etc dizinini salt okunur modda bağlarken kullanıcıları yönetebilme yeteneği, sistemler arasında tanımlayıcıların (UID/GID) senkronize edilmesine gerek kalmaması, belirli bir bilgisayardan kullanıcı bağımsızlığı, kullanıcı verilerinin engellenmesi yer alır. uyku modu sırasında şifreleme ve modern kimlik doğrulama yöntemlerinin kullanılması. Systemd-homed'un 244 veya 245 sürümünde systemd ana akışına dahil edilmesi planlanıyor.
Örnek JSON kullanıcı profili:
"autoLogin": doğru,
"bağlayıcı" : {
«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»,
"depolama" : "lüks",
"kullanıcı kimliği": 60233
}
},
"eğilim" : "düzenli",
"enforcePasswordPolicy": false,
"lastChangeUSec": 1565951024279735,
"üyesi" : [
"teker"
],
"ayrıcalıklı" : {
"hashedŞifre" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"imza" : [
{
"veri" : "LU/HeVrPZSzi3M3J...==",
"anahtar" : "——BEGIN ORTAK ANAHTAR——\nMCowBQADK2VwAy…=\n——END ORTAK ANAHTAR——\n"
}
],
"kullanıcıAdı" : "test",
"durum" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"iyiAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount" : 1,
"durum" : "etkin değil",
"hizmet": "io.systemd.Home",
"disk Boyutu": 161218667776,
"diskTavan": 191371729408,
"diskZemini": 5242780,
"signedLocally" : doğru
}
}
Kaynak: opennet.ru