monte o volume luks através do pam com gdm

1

Estou no teste da Debian. Eu criptografei meu / home com dm-crypt (luks). Após vários tutoriais, configurei o pam_mount para abri-lo no momento do login. No entanto, quando tento fazer o login usando o gdm, ele falha. A tela de login desaparece e reaparece pouco depois. Em /var/log/auth.log eu tenho:

Jul 11 00:18:20 yojik gdm-launch-environment]: pam_unix(gdm-launch-environment:session): session opened for user Debian-gdm by vic(uid=0)
Jul 11 00:18:20 yojik gdm-launch-environment]: (pam_mount.c:173): conv->conv(...): Conversation error
Jul 11 00:18:20 yojik gdm-launch-environment]: (pam_mount.c:477): warning: could not obtain password interactively either
Jul 11 00:18:20 yojik gdm-launch-environment]: (mount.c:72): Messages from underlying mount program:
Jul 11 00:18:20 yojik gdm-launch-environment]: (mount.c:76): NOTE: mount.crypt does not support utab (systems with no mtab or read-only mtab) yet. This means that you will temporarily need to call umount.crypt(8) rather than umount(8) to get crypto volumes unmounted.
Jul 11 00:18:21 yojik gdm-launch-environment]: (mount.c:76): crypt_activate_by_passphrase: Operation not permitted
Jul 11 00:18:21 yojik gdm-launch-environment]: (pam_mount.c:522): mount of /dev/disk/by-uuid/d79121a7-5fbd-4484-81d2-6cbdf1b95b5e failed

Se eu alternar para um terminal virtual (ctrl-alt-f1) e fizer login lá, o volume / home será montado conforme o esperado. Eu posso então voltar para o gdm e logar normalmente.

Portanto, o problema está na interação entre o gdm e o pam_mount. Eu tentei ajustar o /etc/pam.d/gdm3 seguindo vários tutoriais e tópicos ... Mas sem sucesso. A maioria das informações é bastante antiga e a única realmente atualizada (wiki do Arch linux) parece ter uma implementação diferente do gdm, já que os arquivos e as opções têm nomes bem diferentes.

Atualmente, meu arquivo é assim:

vic@yojik:~$ cat /etc/pam.d/gdm3
#%PAM-1.0
auth    requisite       pam_nologin.so
auth    required    pam_succeed_if.so user != root quiet_success
@include common-auth
auth    optional        pam_gnome_keyring.so
auth    optional        pam_mount.so

@include common-account

# SELinux needs to be the first session rule. This ensures that any 
# lingering context has been cleared. Without this it is possible 
# that a module could execute code in the wrong domain.
session [success=ok ignore=ignore module_unknown=ignore default=bad]       pam_selinux.so close
session optional    pam_mount.so
session required        pam_loginuid.so
# SELinux needs to intervene at login time to ensure that the process
# starts in the proper default security context. Only sessions which are
# intended to run in the user's context should be run after this.
session [success=ok ignore=ignore module_unknown=ignore default=bad]       pam_selinux.so open
session required        pam_limits.so
session required        pam_env.so readenv=1
session required        pam_env.so readenv=1 envfile=/etc/default/locale
@include common-session
session optional        pam_gnome_keyring.so auto_start

@include common-password

A pergunta é: como devo modificar o arquivo para obter o volume montado com o gdm?

EDIT: Aqui está também /etc/pam.d/common-auth (menos a informação no topo dizendo para executar pam-auth-update para gerenciar o arquivo, o que eu também fiz)

# here are the per-package modules (the "Primary" block)
auth    [success=1 default=ignore]  pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth    requisite           pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional    pam_mount.so 
auth    optional            pam_cap.so 
# end of pam-auth-update config
    
por Victor 11.07.2014 / 00:48

1 resposta

1

O problema estava de fato em /etc/security/pam_mount.conf.xml . Depois de algum tutorial eu tinha inserido a linha

<volume user="*" mountpoint="/home" path="/dev/disk/by-uuid/d79121a7-5fbd-4484-81d2-6cbdf1b95b5e" fstype="crypt" options="fsck" />

Meu entendimento foi de que user="*" era uma notação do tipo regexp que significa "qualquer usuário". Acontece que não existe tal sintaxe. Então, o pam_mount estava tentando montar o volume para o usuário * e, é claro, falhou. Isso foi refletido nos registros pela linha crypt_activate_by_passphrase: Operation not permitted .

Resolvido substituindo * pelo nome do meu usuário. Se necessário, man pam_mount.conf tem outras opções para um controle mais refinado.

Então, se você tiver problemas com pam_mount dizendo operation not permitted verifique primeiro!

    
por 18.07.2014 / 11:24