Estou lendo o livro Linux kernel development , no capítulo 5 "System Call Implementation", página 77, diz
Por exemplo, capaz (CAP_SYS_NICE) verifica se o chamador tem a capacidade de modificar bons valores de outros processos. Por padrão, o superusuário possui todos os recursos e o não raiz não possui. Por exemplo, aqui está a chamada do sistema reboot (). Observe como sua primeira etapa é garantir que o processo de chamada tenha o CAP_SYS_REBOOT. Se essa instrução condicional for removida, qualquer processo poderá reiniciar o sistema.
No entanto, no meu Debian Sid, posso reiniciar minha máquina usando o gnome ou executando / sbin / reboot sem o sudo ou su. Como isso é possível?
Talvez com systemctl?
ls -l /sbin/reboot
lrwxrwxrwx 1 root root 14 Jun 28 04:23 /sbin/reboot -> /bin/systemctl
EDIT: Meus grupos de usuários
[damian@xvz:~]$ groups
damian sudo wireshark bumblebee
EDIT 2: permissões systemctl
[damian@xvz:~]$ ls -l /bin/systemctl
-rwxr-xr-x 1 root root 626640 Jun 28 04:23 /bin/systemctl
systemctl
. O quels -l /bin/systemctl
te diz?Respostas:
Isso é feito por meio de um gerenciador de autorização chamado
polkit
:Com
systemd
epolkit
usuários com sessão não remota podem emitir comandos relacionados à energia. Você pode listar todaspolkit
as ações registradas e obter detalhes sobre qualquer uma delaspkaction
(invocada sem argumentos, listará todos os IDs de ações).Nesse caso específico, o ID da ação é
org.freedesktop.login1.reboot
assim, se você executar:a saída deve ser algo como:
Aqui,
active: yes
significa que o usuário na sessão ativa está autorizado a reiniciar o sistema (detalhes sobre autorizações implícitas napolkit
página). Você pode verificar se sua sessão está ativa com:fonte
rm -rf
seus arquivos de usuário ...sudo --user=jimmy
onde o usuáriojimmy
se não tem o direito de executar esse comando polkit ...