![pam_exec.so는 명령을 실행하지 않거나 아무것도 기록하지 않습니다.](https://linux55.com/image/222292/pam_exec.so%EB%8A%94%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B1%B0%EB%82%98%20%EC%95%84%EB%AC%B4%EA%B2%83%EB%8F%84%20%EA%B8%B0%EB%A1%9D%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
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
마침내 성공했습니다!