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下创建的文件甚至适用于 root- 这对我来说是违反直觉的,因为我认为就文件权限而言,root 可以做普通用户可以做的任何事情!显然不是在这个特殊情况下!

一旦我解决了这个问题:

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

终于成功了!

相关内容