Cuando corro
sudo systemctl disable avahi-daemon.socket
yo obtengo
Failed to execute operation: Access denied
Pero se ejecuta como root, ¿cómo se puede denegar el acceso? (CentOS 7)
journalctl -xepara descubrir por qué sucede esto.
Cuando corro
sudo systemctl disable avahi-daemon.socket
yo obtengo
Failed to execute operation: Access denied
Pero se ejecuta como root, ¿cómo se puede denegar el acceso? (CentOS 7)
journalctl -xepara descubrir por qué sucede esto.
Respuestas:
También trabajo en CentOS 7 y tuve un problema similar:
# systemctl unmask tmp.mount
Failed to execute operation: Access denied
La negación tiene que ver con SELinux. Este puede ser su caso si está ejecutando SELinux en enforcingmodo:
# getenforce
Enforcing
En mi caso, el systemctlerror hubiera producido una USER_AVCdenegación de archivo de registro de 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 artículo indica que se debe a un error en systemd y proporciona una solución:
systemctl daemon-reexec
Si lo anterior no funcionó, puede configurar el modo SELinux para permissive:
setenforce 0
y debería funcionar bien. Sin embargo, esta segunda solución tiene implicaciones de seguridad.
Removed symlinky luego systemctl disable avahi-daemon.socketfalla como antes, produciendo la misma línea enaudit.log
setenforce 0
systemctl disable avahi-daemon.sockettiene éxito después setenforce 0sin systemctl daemon-reexec(y me doy cuenta ahora de que unmaskes su comando, no el mío :-)) ¿Está bien hacer esto y setenforce 1después?
setenforce 0en mi respuesta entonces.
setenforce 0. Esta es una mala práctica en el entorno de producción. Por favor, use systemctl daemon-reexecen su lugar.
En mi caso, acababa de actualizar systemdy cualquier systemctlcomando fallaba:
# systemctl daemon-reexec
Failed to reload daemon: Access denied
# systemctl status
Failed to read server status: Access denied
Sin embargo, de acuerdo con la página de initmanual, puede hacer lo mismo enviando SIGTERMal demonio que se ejecuta como PID 1, que funcionó:
kill -TERM 1
Esto volvió a cargar el demonio, después de lo cual todos los systemctlcomandos comenzaron a funcionar nuevamente.
Ninguna de las soluciones funcionó para mí. Resultó que faltaba un signo = en una de las líneas de mi archivo .service. Descubrí esto mirando / var / log / messages y vi un error allí que era más descriptivo. Por lo tanto, el acceso denegado fue engañoso. No fue realmente un problema de seguridad.