Quando eu corro
sudo systemctl disable avahi-daemon.socket
eu recebo
Failed to execute operation: Access denied
Mas é executado como root, como o acesso pode ser negado? (CentOS 7)
journalctl -xepara descobrir por que isso está acontecendo.
Quando eu corro
sudo systemctl disable avahi-daemon.socket
eu recebo
Failed to execute operation: Access denied
Mas é executado como root, como o acesso pode ser negado? (CentOS 7)
journalctl -xepara descobrir por que isso está acontecendo.
Respostas:
Também trabalho no CentOS 7 e tive um problema semelhante:
# systemctl unmask tmp.mount
Failed to execute operation: Access denied
A negação tem a ver com o SELinux. Este pode ser o seu caso, se você estiver executando o SELinux no enforcingmodo:
# getenforce
Enforcing
No meu caso, o systemctlerro produziu uma USER_AVCnegação no arquivo de log do 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=?'
Este artigo afirma que isso ocorre devido a um erro no systemd e fornece uma solução alternativa:
systemctl daemon-reexec
Se o procedimento acima não funcionou, você pode definir o modo SELinux para permissive:
setenforce 0
e deve funcionar bem. No entanto, esta segunda solução tem implicações de segurança.
Removed symlinke depois systemctl disable avahi-daemon.socketfalhar como antes, produzindo a mesma linha emaudit.log
setenforce 0
systemctl disable avahi-daemon.socketconsegue depois setenforce 0sem systemctl daemon-reexec(e agora percebo que unmaské seu comando, não meu :-)) Está tudo bem em fazer isso e setenforce 1depois?
setenforce 0na minha resposta então.
setenforce 0. Essa é uma prática ruim no ambiente de produção. Por favor, use em seu systemctl daemon-reexeclugar.
No meu caso, eu tinha acabado de atualizar systemde qualquer systemctlcomando estava falhando:
# systemctl daemon-reexec
Failed to reload daemon: Access denied
# systemctl status
Failed to read server status: Access denied
No entanto, de acordo com a página de initmanual, você pode fazer o mesmo enviando SIGTERMpara o daemon em execução como o PID 1, que funcionou:
kill -TERM 1
Isso recarregou o daemon, após o qual todos os systemctlcomandos começaram a funcionar novamente.
Nenhuma solução funcionou para mim. Aconteceu que havia um sinal = ausente em uma das linhas do meu arquivo .service. Descobri isso procurando / var / log / messages e vi um erro mais descritivo. Portanto, o acesso negado era enganador. Não era realmente um problema de segurança.