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
하고 문제를 해결했습니다.