Taşınabilir ev dizinlerini yönetmek için systemd-homed tanıtıldı

Lennart Pottering gönderilen (PDF) All Systems Go 2019 konferansında, sistem yöneticisi sisteminin yeni bir bileşeni - sistem bağlantılı, kullanıcı ana dizinlerini taşınabilir ve sistem ayarlarından ayrı hale getirmeyi amaçlamaktadır. Projenin ana fikri, tanımlayıcı senkronizasyonu ve gizlilik endişesi olmadan, farklı sistemler arasında aktarılabilecek kullanıcı verileri için kendi kendine yeten ortamlar oluşturmaktır.

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 profil JSON formatında, ~/.identity dizininde saklanır. Profil, ad, parola karması, şifreleme anahtarları, kotalar ve tahsis edilen kaynaklarla ilgili bilgiler de dahil olmak üzere kullanıcının çalışması için gerekli parametreleri içerir. Profil, harici bir Yubikey jetonunda saklanan dijital imzayla sertifikalandırılabilir.

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

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

Yorum ekle