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

ついに成功しました!

関連情報