내가 달릴 때
sudo systemctl disable avahi-daemon.socket
나는 얻다
Failed to execute operation: Access denied
그러나 루트로 실행되며 액세스를 어떻게 거부 할 수 있습니까? (CentOS 7)
답변
CentOS 7에서도 일하고 비슷한 문제가 있습니다.
# systemctl unmask tmp.mount
Failed to execute operation: Access denied
거부는 SELinux와 관련이 있습니다. SELinux를 enforcing
모드 에서 실행중인 경우 다음과 같습니다.
# getenforce
Enforcing
내 경우에는 systemctl
오류로 인해 USER_AVC
SELinux 로그 파일에서 거부 가 발생했습니다 /var/log/audit/audit.log
.
type=USER_AVC msg=audit(1475497680.859:2656): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='avc: denied { enable } for auid=0 uid=0 gid=0 path="/dev/null" cmdline="systemctl unmask tmp.mount" scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:null_device_t:s0 tclass=service exe="/usr/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?'
해결책
이 기사 에서는 systemd의 버그로 인한 것이며 다음과 같은 해결 방법을 제공합니다.
systemctl daemon-reexec
보조 솔루션
위의 방법으로 문제가 해결되지 않으면 SELinux 모드를 permissive
다음과 같이 설정할 수 있습니다 .
setenforce 0
잘 작동합니다. 그러나이 두 번째 솔루션은 보안에 영향을 미칩니다.
답변
내 경우에는 방금 업그레이드 systemd
했으며 모든 systemctl
명령이 실패했습니다.
# systemctl daemon-reexec
Failed to reload daemon: Access denied
# systemctl status
Failed to read server status: Access denied
그러나 init
맨 페이지 에 따르면 SIGTERM
PID 1로 실행되는 데몬 으로 전송하여 동일한 작업을 수행 할 수 있습니다 .
kill -TERM 1
데몬을 다시로드 한 후 모든 systemctl
명령이 다시 작동하기 시작했습니다.
답변
어느 해결책도 저에게 효과적이지 않았습니다. 내 .service 파일의 줄 중 하나에 누락 된 = 기호가있는 것으로 나타났습니다. 나는 / var / log / messages를보고 이것을 발견했고 더 설명적인 오류를 보았다. 따라서 액세스 거부가 오도되었습니다. 실제로 보안 문제는 아닙니다.