gdm을 사용하여 pam을 통해 luks 볼륨 마운트

gdm을 사용하여 pam을 통해 luks 볼륨 마운트

데비안 테스트를 하고 있어요. dm-crypt(luks)를 사용하여 내 /home을 암호화했습니다. 다양한 튜토리얼에 따라 로그인 시 열 수 있도록 pam_mount를 설정했습니다. 그러나 gdm을 사용하여 로그인을 시도하면 실패합니다. 로그인 화면이 사라졌다가 잠시 후에 다시 나타납니다. /var/log/auth.log에는 다음이 있습니다.

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

가상 터미널(ctrl-alt-f1)로 전환하고 로그인하면 /home 볼륨이 예상대로 마운트됩니다. 그런 다음 gdm으로 돌아가 정상적으로 로그인할 수 있습니다.

따라서 문제는 실제로 gdm과 pam_mount 간의 상호 작용에 있습니다. 나는 다양한 튜토리얼과 스레드를 따라 /etc/pam.d/gdm3을 조정하려고 시도했지만 성공하지 못했습니다. 대부분의 정보는 꽤 오래되었으며, 유일하게 최신 정보(Arch Linux wiki)는 파일과 옵션의 이름이 완전히 다르기 때문에 gdm 구현이 다른 것 같습니다.

현재 내 파일은 다음과 같습니다.

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

문제는 gdm을 사용하여 볼륨을 마운트하려면 파일을 어떻게 수정해야 합니까?

편집: 이것도 마찬가지입니다 /etc/pam.d/common-auth(맨 위에 파일을 관리하기 위해 실행하라는 메시지가 표시되지 않았는데 pam-auth-update저도 그랬습니다).

# 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

답변1

실제로 문제는 /etc/security/pam_mount.conf.xml몇 가지 튜토리얼 후에 다음 줄을 삽입했습니다.

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

내 이해는 이것이 user="*""모든 사용자"를 나타내는 정규식과 유사한 표기법이라는 것입니다. 그러한 구문이 없다는 것이 밝혀졌습니다. 따라서 pam_mount는 user*에 대한 볼륨 마운트를 시도하지만 물론 실패합니다. 이는 로그의 행에 반영됩니다 crypt_activate_by_passphrase: Operation not permitted.

*를 내 사용자 이름으로 바꾸면 해결됩니다. 원하는 경우 man pam_mount.conf더 세부적인 제어를 위한 추가 옵션을 사용할 수 있습니다 .

그러니 문제가 있다면 먼저 pam_mount확인해 보세요 operation not permitted!

관련 정보