Eu tenho um problema estranho sempre que tento parar/iniciar um daemon como usuário comum, ele pede para autenticar com as credenciais de outro usuário comum - por exemplo:
[bob@server ~]$ systemctl stop some-daemon.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: alice
Password:
Por que está pedindo para alice autenticar quando bob está logado e como faço para corrigir isso?
Seu sistema está usando o
polkit
Authorization Manager e a mensagem é do arquivo/usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
.polkit
podem ser configurados nos diretórios/etc/polkit-1
e , mais especificamente nos subdiretórios e . Consulte a página de manual do Polkit para obter mais informações./usr/share/polkit-1
rules.d
actions
Resumindo, a chamada que está sendo feita está recebendo uma resposta para autenticar como admin ( auth_admin, auth_admin_keep in manpage ).
No CentOS 7, o
/etc/polkit-1/rules.d/50-default.rules
arquivo especifica uma definição addAdminRule que retorna usuários no grupo wheel para autenticação. Todos os usuários no grupo wheel seriam apresentados como usuários para selecionar quando a autenticação for necessária. Se Alice fosse o único usuário no grupo wheel, isso apresentaria automaticamente Alice com base na regra.Supondo que Alice não estivesse no grupo wheel, isso sugeriria que haveria algumas outras definições de addAdminRule nos caminhos do arquivo de regras que permitem que Alice seja apresentada como administradora para autenticar como quando uma solicitação retorna uma resposta AUTH_ADMIN/AUTH_ADMIN_KEEP.
Ao gerenciar serviços do sistema, você precisa fazer isso como root e não como usuário normal. Isso é indicado pelo
$
caractere no final do prompt do shell.Você pode usar
sudo command
ou alternar para root (shell raiz geralmente indicado por#
char).Como já respondido , esta mensagem vem do Polkit Authorization Manager que é em palavras simples uma maneira systemd de controlar quem pode fazer o quê, incluindo o gerenciamento de serviços systemd.
Para OP, a solução certa é configurar o serviço para ser um serviço systemd de nível de usuário .
Mas no caso de serviços no nível do sistema, aqui está o que você deve fazer:
Adicione uma regra para Polkit que permita que seu usuário gerencie o serviço, assim:
... muuuito com systemd v219 no Centos 7,
action
não tem acesso aounit
! Isso foi adicionado na v226... Então você precisaria permitir que o usuário gerencie todas as unidades, o que provavelmente não é o que você deveria fazer...Portanto, sugiro que você mude para o antigo
sudo
para permitir que seus usuários gerenciem os serviços, por exemplo:Principais fontes:
unit
suporte no systemd do Centos 7, por favor, vote também!Verifique a regra /etc/groups e sudoers. Isso pode acontecer se uma pessoa se adicionou ao grupo da roda e se tornou root dessa forma.