acesso systemctl negado quando root


16

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)


Você está executando em um contêiner, como Docker, LXC ou LXD? Você tem certeza de que está ou não em um contêiner?
— allquixotic

Estou executando uma nova instalação do CentOS no VirtualBox. Isso conta como um contêiner?
— spraff 16/09/16

Não, o VirtualBox não é um contêiner, é uma máquina virtual. Eles são fundamentalmente diferentes. Provavelmente você precisa correr journalctl -xepara descobrir por que isso está acontecendo.
— allquixotic

1
Observe que esta mensagem de erro ("Falha ao executar a operação: acesso negado") também pode ocorrer ao tentar acessar um serviço inexistente no modo de imposição. No modo permissivo, você obteria "Falha ao executar a operação: esse arquivo ou diretório não existe".
— Danmichaelo

Respostas:


23

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=?'

Solução

Este artigo afirma que isso ocorre devido a um erro no systemd e fornece uma solução alternativa:

systemctl daemon-reexec

Solução secundária

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.


Eu recebo nenhuma saída, em vez de Removed symlinke depois systemctl disable avahi-daemon.socketfalhar como antes, produzindo a mesma linha emaudit.log
— spraff

Você pode tentar desativar o modo de imposição do selinux? setenforce 0
— Elouan Keryell-Even

1
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?
— spraff

@spraff Não sei, sou novato no SELinux ha ha. Eu vou mencionar setenforce 0na minha resposta então.
— Elouan Keryell-Even

1
Por favor não setenforce 0. Essa é uma prática ruim no ambiente de produção. Por favor, use em seu systemctl daemon-reexeclugar.
— Younes 10/10

10

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.


1
Obrigado. Resolvi meu problema depois de atualizar uma distro do archlinux após um longo período de tempo.
— buergi 31/05/19

1
trabalhou no Ubuntu 18.10 - Obrigado!
— Roy Shilkrot

1

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.


3
Você deve fornecer mais detalhes sobre como resolver esta questão. Por exemplo, você fala sobre uma mensagem de erro mais detalhada, mas não indica qual era exatamente a mensagem de erro. Sem essas informações, seria melhor servir como um comentário, porque esta resposta sem essas informações é incompleta.
— Ramhound

qual arquivo de log mostrou a mensagem?
— Rogerdpack #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.