Como listar todos os usuários com root?


35

Em uma caixa Linux, como listar todos os usuários que possuem privilégios de root (e, melhor ainda, todos os usuários em geral, juntamente com se têm ou não root)?


1
Você pode ser mais específico sobre o que você entende por "privilégios de root"? Você quer dizer usuários com UID = 0?
Chris S

Usuários com a capacidade de fazer qualquer coisa. Basicamente - eu preciso listar usuários junto com os grupos dos quais eles são membros, se for possível.
Eric

2
Se soubesse onde estava o seu computador, poderia subir e puxar o cabo de alimentação. Isso seria qualificado como "faça qualquer coisa", o que significa que estou na sua lista. O Rafiq listou as três coisas mais comuns, mas pode haver mais e sabemos sobre o seu sistema ou como ele é configurado.
Chris S

Respostas:


42

Não esqueça de alterar a senha root. Se algum usuário tiver UID 0 além do root, não deve. Péssima ideia. Checar:

grep 'x:0:' /etc/passwd

Novamente, você não deve fazer isso, mas para verificar se o usuário é membro do grupo raiz:

grep root /etc/group

Para ver se alguém pode executar comandos como root, verifique sudoers:

cat /etc/sudoers

Para verificar o bit SUID, que permite a execução de programas com privilégios de root:

find / -perm -04000


Estritamente, esse primeiro só funciona se o arquivo de senha de sombra estiver no usuário. Concordo que quase sempre é, nos dias de hoje, mas apenas no caso, eu fiz um trabalho perl rápida que explicitamente verificações de campo 3.
suportes MadHatter Monica

4
Este é um padrão melhor do que o primeiro: grep '[^:]*:[^:]*:0:' /etc/passwd. +1 em particular para verificar o SUID.
Pausado até novo aviso.

33

Para ver quem é o UID 0:

getent passwd 0

Para ver quem está em grupos root, wheel adme admin:

getent group root wheel adm admin

Para listar todos os usuários e os grupos dos quais são membros:

getent passwd | cut -d : -f 1 | xargs groups

9
Ao contrário de todas as outras respostas que confiam erroneamente no arquivo / etc / passwd, esta, ao getent passwdinvés disso, está correta. Só não se esqueça de verificar / etc / sudoers.
mivk

Obrigado por isso. Muito mais claro. Para mim, esta é a resposta aceita.
Fiddy Bux

6

Raiz pura é o ID do usuário "0".

Todos os usuários do sistema estão no arquivo / etc / passwd:

less /etc/passwd

Aqueles que são root possuem "0" como o ID do usuário, que é a 3ª coluna. Aqueles com "0" como o grupo (quarta coluna) também podem ter alguns privilégios de root.

Em seguida, você deseja examinar os grupos e ver quem é um membro adicional dos grupos "raiz", "roda" ou "administrador":

less /etc/group

Os usuários listados nesses grupos podem ter alguns privilégios de root, especialmente através do comando "sudo".

A última coisa que você deseja verificar é a configuração "sudo" e veja quem está listado como tendo autorização para executar este comando. Este arquivo em si está bem documentado, portanto não o reproduzirei aqui:

less /etc/sudoers

Isso abrange as principais áreas de quem poderia ter acesso root.


Consulte também serverfault.com/questions/205598/… para mais alguns lugares onde os direitos de escalonamento de privilégios podem ser concedidos. (Nomeadamente, consolehelpere PackageKit.)
mattdm 2/10/10

2
Definitivamente, NÃO é garantido que todos os usuários estejam no / etc / passwd. Eles podem estar no LDAP, por exemplo. Mas getent passwddeve listar todos os usuários do sistema (incluindo raiz), no formato passwd, independentemente do banco de dados em que estão definidos.
mivk

3

Para imprimir todos os usuários

perl -n -e '@user = split /:/ ; print "@user[0]\n";' < /etc/passwd

Para imprimir apenas os usuários com UID 0, como já foi dito, os usuários com privilégios de root implícitos:

perl -n -e '@user = split /:/ ; print "@user[0]\n" if @user[2] == "0";' < /etc/passwd

Esse é um bom exemplo, mas esteja ciente das limitações (tenho certeza de que o MadHatter já está ciente disso) - ele não verifica grupos e nem sudoers. Ele só verificará, como ele diz, raiz implícita.
Rafiq Maniar

2
Não analise / etc / passwd. Os usuários podem ser definidos em outro lugar. Use em getent passwdvez disso. Para o seu primeiro "imprimir todos os usuários" exemplo, em vez tente o seguinte:getent passwd | perl -naF: -e 'print "$F[0]\n"'
mivk

2

Para obter uma lista rápida de todos os usuários, tente pressionar a guia duas vezes (para concluir automaticamente) depois de digitar o passwdcomando seguido por um espaço. Isso funciona com o sucomando também.

Deve ser feito como um usuário com privilégios de root.


Esse é um recurso específico do zsh? Bash sugere apenas arquivos no openSUSE.
Jgillich 16/09

Testado no Debian (Squeeze) no bash. Não acredito que alguém apóie isso oficialmente, mas é um atalho.
Emeraldo 17/09

Atualização: isso não funciona mais em El Capitan. Provavelmente foi corrigido por razões de segurança.
Emeraldo 24/04

0

Me incomodava o fato de não haver uma resposta de uma linha ... Se você deseja listar todas as contas UID 0 (raiz), use o seguinte:

cat /etc/passwd | cut -f1,3,4 -d":" | grep"0:0" | cut -f1 -d":" | awk '{print $1}'

melhor,

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.