我创建了一个新的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
终于成功了!