SSHセッションが開始および終了するたびにCentOS 7でスクリプトを実行しようとします。このスクリプトはsystemdサービスを開始/停止する必要があります。
これは私の設定です。
では、/etc/pam.d/sshd
との間に次の行を追加しました。pam_selinux.so close
pam_selinux.so open
session optional pam_exec.so seteuid log=/tmp/pam_sshd_session.log /etc/pam_session.sh
スクリプトを追加しました/etc/pam_session.sh
。ほとんどは関係ありません。簡単に言えば、
#!/bin/bash
systemctl stop some-service.service
この設定でサービスを実行できませんでした。次の場所で確認できます/tmp/pam_sshd_session.log
。
Failed to stop some-service.service: Access denied
この行はどこで/var/log/audit/audit.log
見ることができますか?
type=USER_AVC msg=audit(1701099322.109:12223): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='avc: denied { status } for auid=1001 uid=0 gid=0 path="/etc/systemd/system/some-service" cmdline="systemctl stop some-service.service" scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:systemd_unit_file_t:s0 tclass=service exe="/usr/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?'
私が見つけたこの問題呼び出しスクリプト自体と同様の問題について説明します。しかし、私の場合、スクリプトが呼び出されると、その質問で提案された解決策を私の問題に適用することはできません。これは(私の状況で見ると)ここに示されているコマンドの有効なパラメータがsshd_t
明らかにないからです。/usr/sbin/semanage
pam_exec
電話をかけるにはどうすればよいですかsystemctl
?
編集する
権限は次/etc/pam_session.sh
のとおりです。
-rwxr-xr-x. root root unconfined_u:object_r:sshd_exec_t:s0 /etc/pam_session.sh
以前に試したときに設定しましたがsshd_exec_t
、私が知っている限り。pam_selinux.so close
間のファイルを実行する限り、必要ありませんpam_selinux.so open
。
答え1
audit2allow
このファイルを作成するのに役立ちましたsshd_selinux_config.te
。
module sshd_selinux_config 1.0;
require {
type systemd_unit_file_t;
type sshd_t;
class service { start status stop };
}
#============= sshd_t ==============
allow sshd_t systemd_unit_file_t:service { start status stop };
コンパイルされたバージョンでsshd_selinux_config.pp
。その後、有効にしてsemodule -i sshd_selinux_config.pp
問題を解決しました。