O /etc/sudoers
arquivo lista quais usuários podem fazer o que com o sudo
comando
O usuário root cria e modifica o /etc/sudoers
arquivo.
Este conceito é difícil para mim entender.
Se todos os usuários com privilégio sudo pertencerem ao sudoers
grupo, todos eles poderão se tornar root, executando o sudo su
comando
Então, quem é o usuário root real e como ele controla os poderes dos usuários no grupo de sudoers?
Por favor, explique para mim.
permissions
sudo
users
root
access-control
rancho
fonte
fonte
root
acesso esudo
direitos se torna irrelevante SE você permitirsudo su
que seja executado. No entanto, você não precisa permitir isso. Você pode permitir apenas um conjunto específico de comandos, por exemplo, concedersudo
acesso ao sysadmin junior apenas para comandos de backup específicos.Respostas:
Resumo executivo: "raiz" é o nome real da conta do administrador. "sudo" é um comando que permite que usuários comuns executem tarefas administrativas. "Sudo" não é um usuário.
Resposta longa:
"root" (também conhecido como "superusuário") é o nome da conta de administrador do sistema. As origens do nome são um pouco arcaicas, mas isso não importa.
O usuário root tem o ID de usuário 0 e nominalmente possui privilégios ilimitados. O Root pode acessar qualquer arquivo, executar qualquer programa, executar qualquer chamada do sistema e modificar qualquer configuração. (Mas veja abaixo¹).
Antes da invenção do comando "sudo", se você desejava executar tarefas administrativas, era necessário efetuar login como root, obtendo um prompt de login² de alguma forma ou com o
su
comando ("su" sendo a abreviação de usuário substituto.) ³Isso é um pouco complicado, e também não permite que você conceda aos usuários poderes administrativos parciais. Portanto, o comando "sudo" (abreviação de "substitute user do") foi inventado.
O comando "sudo" permite executar comandos com privilégios de superusuário, desde que o seu ID de usuário esteja no arquivo sudoers, fornecendo a autorização necessária.
Portanto, por exemplo
sudo vi /etc/hosts
, você poderá editar o arquivo hosts como se estivesse executando como root. Você nem precisa da senha de root, apenas sua própria senha de login.E, é claro,
sudo su
permitiria que você simplesmente se tornasse raiz. O resultado é o mesmo que se você tivesse feito login como root ou executado osu
comando, exceto que você não precisa saber a senha root, mas precisa estar no arquivo sudoers.O arquivo sudoers determina quem pode usar o comando sudo e o que eles podem fazer com ele.
O arquivo sudoers é o que oferece vários administradores⁴. Efetivamente, seus administradores são root, além de todos os que estão listados no arquivo sudoers. Sem o arquivo sudoers, o único administrador é root.
De fato, nas organizações em que outra pessoa administra seu computador, é bastante comum não saber a senha raiz do seu próprio computador - desde que você esteja no arquivo sudoers, isso não importa.
Em uma empresa em que trabalhei, com um farm de servidores gigantesco, apenas um número muito, muito pequeno de pessoas conhecia as senhas raiz. Em vez disso, havia um banco de dados de quem tinha permissão para trabalhar em quais servidores. Um processo automatizado adiciona você aos arquivos sudoers dos servidores aos quais você está autorizado a acessar e o remove quando sua autorização expira.
¹ Mais uma coisa: as versões modernas do Unix agora podem restringir até o que o usuário root pode fazer.
No SELinux (Security Enhanced Linux), existe efetivamente uma lista de controle de acesso que determina qual programa pode fazer o que e até o root não consegue ultrapassar essas restrições.
No sistema SIP ( System Integrity Protection ) da Apple (também conhecido como "sem raiz"), determinados arquivos e diretórios são bloqueados para que somente aplicativos na lista de desbloqueio apropriada possam acessá-los.
Esses sistemas existem para proteger um sistema do caso em que um usuário mal-intencionado consegue obter acesso root. (Ou, em alguns casos, para impedir que os usuários violem seus dispositivos incorporados.) Por razões óbvias, é extremamente difícil ignorar essas restrições, mesmo com acesso root.
² O prompt "login:" é outra parte arcaica da história do Unix, que remonta a quando todos usamos terminais ASCII em linhas seriais, em vez de sistemas de janelas. Você ainda pode obter um prompt de "login:" digitando
login
qualquer janela do terminal ou abrindo uma conexão ssh (ou telnet ou rsh) com o computador de outro lugar. Você pode efetuar login como outro usuário a partir daí, se desejar. (E se o seu computador tiver portas seriais, você ainda poderá configurá-lo para permitir logins nelas.)³ Também é possível que programas individuais tenham acesso root. Esses programas podem fazer qualquer coisa que um usuário com acesso root possa fazer, mesmo quando executados por um usuário comum. Normalmente, eles são limitados a tarefas específicas. Por exemplo, o programa crontab possui privilégios de root para poder editar as tabelas cron. Obviamente, "sudo" tem privilégios de root para que ele possa fazer o que faz.
Cover Vou abordar mais um ponto sobre o qual falei anteriormente. Eu tenho usado "administrador" e "raiz" de forma intercambiável, mas existem outros tipos de administradores. Elas são freqüentemente chamadas de "contas de função", ou seja, essas contas não pertencem a humanos reais, mas existem para desempenhar uma função específica no sistema. Se você der uma olhada no
/etc/passwd
arquivo em seu sistema, encontrará dezenas e dezenas dessas contas.Por exemplo, se o mysql estivesse instalado no seu sistema, haveria um usuário "mysql" e todos os arquivos de banco de dados, arquivos de configuração etc. seriam de propriedade desse usuário. Somente esse usuário teria as permissões necessárias para acessar os arquivos e executar o servidor mysql. De certa forma, esse usuário seria uma conta de administrador, mas apenas para o mysql.
Se você precisasse executar tarefas administrativas do banco de dados, você se tornaria "mysql" com o
su mysql
comando ou usariasudo
onde o arquivo sudoers lhe daria privilégios de mysql para esses comandos específicos.fonte
The "sudo" command lets you execute commands with superuser privileges as long as your user id is in the sudoers file [..]
. Na minha máquina (Solus OS 3), isso está errado. Meu nome de usuário não está no arquivo sudoers. e eu ainda posso fazersudo
.su
é uma abreviação de "usuário substituto";sudo
é, portanto, "usuário substituto". Você pode usarsu
para fazer login como outro usuário, não apenasroot
. E você pode usarsudo
para executar comandos como outro usuário.