pam_exec.so는 명령을 실행하지 않거나 아무것도 기록하지 않습니다.

pam_exec.so는 명령을 실행하지 않거나 아무것도 기록하지 않습니다.

authselect새 프로필을 만들었어요

sudo authselect create-profile login-hooks --symlink-meta --symlink-nsswitch --symlink-dconf --base-on=sssd

그런 다음 다음 줄을 추가합니다./etc/authselect/custom/login-hooks/postlogin

session     optional                   pam_exec.so log=/tmp/debug.log sh -c 'findmnt /var/home/$PAM_USER/host-man-files || mount --bind /usr/share/man /var/home/$PAM_USER/host-man-files'

그런 다음 새 프로필을 활성화했습니다.

sudo authselect select -b custom/login-hooks with-silent-lastlog with-mdns4

그리고 로그 파일을 만들었습니다

touch /tmp/debug.log

그런 다음 로그아웃했다가 다시 로그인합니다.

에는 아무 것도 없고 /tmp/debug.log관련된 것도 없지만 journalctl -xb바인드 마운트가 아직 생성되지 않았습니다.

[greenrd@fedora greenrd]$ findmnt /var/home/greenrd/host-man-files
[greenrd@fedora greenrd]$ echo $?
1

답변1

로그 파일을 미리 만들지 말았어야 했어요! Linux에서는 /tmp 아래에 생성한 파일을 다른 사용자가 쓸 수 없도록 규정하고 있는 것으로 나타났습니다.루트에서도 작동합니다.- 루트가 파일 권한 측면에서 일반 사용자가 할 수 있는 모든 작업을 수행할 수 있다고 생각했기 때문에 이는 직관에 어긋납니다! 분명히 이 특별한 경우에는 그렇지 않습니다!

이 문제를 해결한 후에는 다음과 같습니다.

rm /tmp/debug.log

더 빠르고 더 많은 정보를 제공하는 테스트를 실행 해 보세요 sshd.

systemctl start sshd

나는 더 나아진다 :

[greenrd@fedora greenrd]$ ssh localhost
greenrd@localhost's password: 
/bin/sh failed: exit code 2
Last login: Sun Jul  9 11:46:55 2023 from ::1
[greenrd@fedora ~]$ cat /tmp/debug.log 
*** Sun Jul  9 11:48:25 2023
/var/home/$PAM_USER/host-man-files: -c: line 1: unexpected EOF while looking for matching `''
*** Sun Jul  9 11:48:33 2023
/var/home/$PAM_USER/host-man-files: -c: line 1: unexpected EOF while looking for matching `''

오류 메시지를 이해하지 못했기 때문에 구성 파일에 전체 명령줄을 인라인하는 대신 명령줄이 포함된 스크립트 파일을 만들고 호출하기로 결정했습니다.

하지만 그것도 작동하지 않습니다 journalctl -xb.

Jul 09 12:06:03 fedora sshd[60361]: pam_exec(sshd:session): execve(/var/home/greenrd/.local/bin/create-bind-mount,...) failed: Permission denied

이 파일은 모든 사용자가 실행할 수 있습니다.

[greenrd@fedora ~]$ ls -l /var/home/greenrd/.local/bin/create-bind-mount
-rwxr-xr-x. 1 greenrd greenrd 120 Jul  9 12:00 /var/home/greenrd/.local/bin/create-bind-mount

그렇다면 어딘가의 일부 정책이 pam_exec에서 해당 경로의 파일을 실행하는 것을 좋아하지 않는 것 같습니다.

어쩌면 SELinux일까요?

[greenrd@fedora ~]$ sudo getenforce
Enforcing

자, SELinux를 허용 모드로 전환하고 다시 시도해 보겠습니다.

[greenrd@fedora ~]$ sudo setenforce 0
[greenrd@fedora ~]$ 
logout
Connection to localhost closed.
[greenrd@fedora greenrd]$ ssh localhost
greenrd@localhost's password: 
Last login: Sun Jul  9 12:06:03 2023 from ::1
[greenrd@fedora ~]$ findmnt /var/home/greenrd/host-man-files
TARGET                           SOURCE                                                                                                                          FSTYPE OPTIONS
/var/home/greenrd/host-man-files /dev/xvda3[/root/ostree/deploy/default/deploy/b9990bf2421b057e99ca7df81d575c1ccedb6b4da571adba77142ded8ed5c778.0/usr/share/man] btrfs  ro,relatime,seclabel,compress=zstd:1,ssd,discard=async,space_cache=v

마침내 성공했습니다!

관련 정보