Apresentado systemd-homed para gerenciamento de diretórios pessoais portáteis

Lennart Poettering apresentou (PDF) na conferência All Systems Go 2019, um novo componente do gerenciador de sistema systemd — systemd-homed, que visa garantir a portabilidade dos diretórios pessoais dos usuários e sua separação das configurações do sistema. A ideia principal do projeto é criar ambientes autossuficientes para os dados do usuário, que podem ser transportados entre diferentes sistemas, sem se preocupar com a sincronização de identificadores e privacidade.

O ambiente do diretório pessoal é fornecido na forma de uma imagem de arquivo montável, cujos dados são criptografados. As credenciais do usuário estão vinculadas ao diretório pessoal, e não às configurações do sistema — ao invés de /etc/passwd e /etc/shadow, é utilizado perfil no formato JSON, armazenado no diretório ~/ .identity. O perfil contém as configurações necessárias para o funcionamento do usuário, incluindo dados sobre nome, hash da senha, chaves de criptografia, cotas e recursos fornecidos. O perfil pode ser firmado digitalmente, armazenado em um token externo Yubikey.

As configurações também podem incluir informações adicionais, como chaves para SSH, dados para autenticação biométrica, imagem, e-mail, endereço, fuso horário, idioma, limites de processos e memória, bandeiras adicionais de montagem (nodev, noexec, nosuid), dados sobre servidores IMAP/SMTP usados pelo usuário, informações sobre a ativação de controle parental, opções de backup, etc. Para solicitar e analisar os parâmetros, uma API é fornecida Varlink.

A atribuição e o tratamento de UID/GID é feito dinamicamente em cada sistema local ao qual o diretório pessoal se conecta. Com o sistema proposto, o usuário pode manter seu diretório pessoal consigo, por exemplo, em um pen drive, e obter um ambiente de trabalho em qualquer computador sem a necessidade de criar explicitamente uma conta nele (a presença do arquivo com a imagem do diretório pessoal leva à síntese do usuário).

Para a criptografia de dados, é sugerido utilizar o subsistema LUKS2, mas o systemd-homed também permite o uso de outros backends, como para diretórios não criptografados, Btrfs, Fscrypt e partições de rede CIFS. Para gerenciar diretórios portáteis, foi proposta a ferramenta homectl, que permite criar e ativar imagens de diretórios pessoais, além de redimensioná-las e definir senhas.

No nível do sistema, a operação é garantida pelos seguintes componentes:

  • systemd-homed.service — gerencia o diretório pessoal e integra registros JSON diretamente nas imagens do diretório pessoal;
  • pam_systemd — processa os parâmetros do perfil JSON durante a entrada do usuário e os aplica no contexto da sessão ativada (realiza a autenticação, configura variáveis de ambiente etc.);
  • systemd-logind.service — processa os parâmetros do perfil JSON durante a entrada do usuário, aplica várias configurações de gerenciamento de recursos e impõe limites;
  • nss-systemd — módulo NSS para glibc, sintetiza registros NSS clássicos com base no perfil JSON, proporcionando compatibilidade com a API UNIX para gerenciamento de usuários (/etc/password);
  • PID 1 — cria dinamicamente usuários (sintetiza com base na aplicação da diretiva DynamicUser nas unidades) e os torna visíveis para o restante do sistema;
  • systemd-userdbd.service — transita registros UNIX/glibc NSS em registros JSON e fornece uma API unificada Varlink para consulta e iteração de registros.

Entre as vantagens do sistema proposto, destaca-se a possibilidade de gerenciar usuários ao montar o diretório /etc em modo somente leitura, a ausência de necessidade de sincronização de identificadores (UID/GID) entre sistemas, a independência do usuário em relação ao computador específico, a proteção dos dados do usuário durante a transição para o modo de suspensão, a aplicação de criptografia e métodos modernos de autenticação. O systemd-homed está previsto para ser incluído na versão principal do systemd na versão 244 ou 245.

Exemplo de perfil JSON do usuário:

"autoLogin" : true,
"binding" : {
"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",
"storage" : "luks",
"uid" : 60233,
}
},
"disposition" : "regular",
"enforcePasswordPolicy" : false,
«lastChangeUSec» : 1565951024279735,
«memberOf» : [
«wheel»
],
«privileged» : {
«hashedPassword» : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
]
},
«signature» : [
{
«data» : «LU/HeVrPZSzi3M3J…==»,
«key» : «——BEGIN PUBLIC KEY——\nMCowBQADK2VwAy…=\n——END PUBLIC KEY——\n»
}
],
«userName» : «test»,
«status» : {
«15e19cf24e004b949dfaac60c74aa165» : {
«goodAuthenticationCounter» : 16,
«lastGoodAuthenticationUSec» : 1566309343044322,
«rateLimitBeginUSec» : 1566309342341723,
«rateLimitCount» : 1,
«state» : «inactive»,
«service» : «io.systemd.Home»,
«diskSize» : 161218667776,
«diskCeiling» : 191371729408,
«diskFloor» : 5242780,
«signedLocally» : true,
}
}

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster