走ったとき
Sudo systemctl disable avahi-daemon.socket
私は
Failed to execute operation: Access denied
しかし、それはrootとして実行されます、どうやってアクセスを拒否できますか? (CentOS 7)
私はCentOS 7でも作業していて、同様の問題がありました。
# systemctl unmask tmp.mount
Failed to execute operation: Access denied
否定はSELinuxと関係がある。 SELinuxをenforcing
モードで実行しているのであれば、これが当てはまります。
# getenforce
Enforcing
私の場合、systemctl
エラーによりSELinuxログファイルにUSER_AVC
拒否が発生しました、/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
そしてそれはうまくいくはずです。ただし、この2番目のソリューションにはセキュリティ上の問題があります。
私の場合は、systemd
をアップグレードしたばかりで、systemctl
コマンドはすべて失敗しました。
# systemctl daemon-reexec
Failed to reload daemon: Access denied
# systemctl status
Failed to read server status: Access denied
しかしinit
のマンページによると、PID 1として動作しているデーモンにSIGTERM
を送ることで同じことができます。
kill -TERM 1
これでデーモンが再ロードされ、その後すべてのsystemctl
コマンドが再び機能し始めました。
どちらの解決策でもうまくいきませんでした。私の.serviceファイルの1行に=記号がありませんでした。私は/ var/log/messagesを見てこれを発見し、そこにもっと説明的なエラーがあるのを見ました。そのため、アクセス拒否は誤解を招くものでした。それは本当にセキュリティ問題ではありませんでした。