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)?
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:
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, wheeladme admin:
getent group root wheel adm admin
Para listar todos os usuários e os grupos dos quais são membros:
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.
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.
Respostas:
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
fonte
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1 em particular para verificar o SUID.Para ver quem é o UID 0:
Para ver quem está em grupos
root
,wheel
adm
eadmin
:Para listar todos os usuários e os grupos dos quais são membros:
fonte
getent passwd
invés disso, está correta. Só não se esqueça de verificar / etc / sudoers.Raiz pura é o ID do usuário "0".
Todos os usuários do sistema estão no arquivo / 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":
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:
Isso abrange as principais áreas de quem poderia ter acesso root.
fonte
consolehelper
ePackageKit
.)getent passwd
deve listar todos os usuários do sistema (incluindo raiz), no formato passwd, independentemente do banco de dados em que estão definidos.Para imprimir todos os usuários
Para imprimir apenas os usuários com UID 0, como já foi dito, os usuários com privilégios de root implícitos:
fonte
getent passwd
vez 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"'
Para obter uma lista rápida de todos os usuários, tente pressionar a guia duas vezes (para concluir automaticamente) depois de digitar o
passwd
comando seguido por um espaço. Isso funciona com osu
comando também.Deve ser feito como um usuário com privilégios de root.
fonte
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:
melhor,
fonte