O sudo
comando permite que você execute comandos no Linux como se você fosse outra pessoa, como root
. sudo
também permite controlar quem pode acessar os root's
recursos, com granularidade. Dê aos usuários acesso total ou permita que eles usem um pequeno subconjunto de comandos. Nós mostramos como.
Índice
sudo e permissões de raiz
Todos nós já ouvimos (simplificando demais) que tudo no Linux é um arquivo. Na verdade, praticamente tudo no sistema operacional, desde processos, arquivos, diretórios, soquetes e canais, se comunica com o kernel por meio de um descritor de arquivo. Portanto, embora nem tudo seja um arquivo, a maioria dos objetos do sistema operacional são tratados como se fossem. Sempre que possível, o design do Linux e de sistemas operacionais semelhantes ao Unix seguem esse princípio.
O conceito de “tudo é um arquivo” é abrangente no Linux. É fácil ver então como as permissões de arquivo no Linux se tornaram um dos pilares dos privilégios e direitos do usuário . Se você possui um arquivo ou diretório (um tipo especial de arquivo), pode fazer o que quiser com ele, incluindo editar, renomear, mover e excluí-lo. Você também pode definir as permissões no arquivo para que outros usuários ou grupos de usuários possam ler, modificar ou executar o arquivo. Todos são regidos por essas permissões.
Todos que são, exceto o superusuário, são conhecidos como root
. A root
conta é uma conta especialmente privilegiada. Ele não está vinculado às permissões de nenhum dos objetos do sistema operacional. O usuário root pode fazer qualquer coisa para qualquer coisa e, praticamente, a qualquer momento.
Claro, qualquer pessoa com acesso à root's
senha pode fazer o mesmo. Eles podem causar estragos de forma maliciosa ou acidental. Na verdade, o root
usuário pode causar estragos cometendo um erro também. Ninguém é infalível. É algo perigoso.
É por isso que agora é considerada a melhor prática não fazer o login root
. Faça login com uma conta de usuário normal e use sudo
para elevar seus privilégios pelo curto período de tempo necessário. Freqüentemente, isso é apenas para emitir um único comando.
A lista de sudoers
sudo
já foi instalado nos computadores Ubuntu 18.04.3, Manjaro 18.1.0 e Fedora 31 usados para pesquisar este artigo. Isso não é surpresa. sudo
existe desde o início dos anos 1980 e se tornou o meio padrão de operação de superusuário para quase todas as distribuições.
Quando você instala uma distro moderna, o usuário que você cria durante a instalação é adicionado a uma lista de usuários chamada sudoers . Esses são os usuários que podem usar o sudo
comando. Porque você tem sudo
poderes, você pode usá-los para adicionar outros usuários à lista de sudoers.
Obviamente, é imprudente distribuir o status total de superusuário à toa ou a qualquer pessoa que tenha apenas uma necessidade parcial ou específica. A lista de sudoers permite que você especifique quais comandos os vários usuários têm permissão para usar sudo
. Dessa forma, você não lhes dá as chaves do reino, mas eles ainda podem realizar o que precisam fazer.
Executando um comando como outro usuário
Originalmente, era chamado de “fazer superusuário”, porque você podia fazer as coisas como superusuário. Seu escopo foi ampliado agora, e você pode usar sudo
para executar um comando como se fosse qualquer usuário. Ele foi renomeado para refletir essa nova funcionalidade. Agora é chamado de “substituto do usuário”.
Para usar sudo
para executar um comando como outro usuário, precisamos usar a -u
opção (usuário). Aqui, vamos executar o comando whoami como o usuário mary
. Se você usar o sudo
comando sem a -u
opção, executará o comando como root
.
E, claro, como você está usando, sudo
sua senha será solicitada.
sudo -u mary whoami
A resposta de whoami
nos diz que a conta do usuário que está executando o comando é mary
.
Você pode usar o sudo
comando para fazer login como outro usuário sem saber sua senha. Você será solicitado a fornecer sua própria senha. Precisamos usar a -i
opção (login).
sudo -i -u mary
pwd
Quem sou eu
ls -hl
Saída
Você está logado como mary
. Os arquivos “.bashrc”, “.bash_aliases” e “.profile” para a conta do usuário mary são processados exatamente como se o proprietário da conta do usuário mary tivesse feito o login.
- O prompt de comando muda para refletir que esta é uma sessão para a conta do usuário
mary
. - O
pwd
comando testa novamente para que você esteja agora nomary's
diretório inicial . whoami
nos diz que você está usando uma conta de usuáriomary
.- Os arquivos do diretório pertencem à
mary
conta do usuário. - O
exit
comando o leva de volta à sessão normal da conta do usuário .
Editando o arquivo sudoers
Para adicionar usuários à lista de pessoas que podem usar sudo
, você precisa editar o sudoers
arquivo. É de vital importância que você só faça isso usando o visudo
comando. O visudo
comando evita que várias pessoas tentem editar o arquivo sudoers de uma vez. Ele também executa a verificação de sintaxe e a análise do conteúdo do arquivo à medida que você o salva.
Se suas edições não passarem nos testes, o arquivo não foi salvo às cegas. Você tem opções. Você pode cancelar e abandonar as alterações, voltar e editar as alterações novamente ou forçar o salvamento das edições incorretas. A última opção é uma péssima ideia. Não fique tentado a fazer isso. Você pode se encontrar em uma situação em que todos são acidentalmente impedidos de usar sudo
.
Embora você inicie o processo de edição usando o visudo
comando, visudo
não é um editor. Ele chama um de seus editores existentes para realizar as edições do arquivo. No Manjaro e no Ubuntu, o visudo
comando lançou o editor simples nano
. No Fedora, visudo
lançou o mais capaz – mas menos intuitivo – vim
.
Se preferir usar nano
no Fedora, você pode fazer isso facilmente. Primeiro, instale nano
:
sudo dnf install nano
E então visudo
teve que ser invocado com este comando:
sudo EDITOR = nano visudo
Parece um bom candidato para apelido . O nano
editor é aberto com o arquivo sudoers carregado nele.
Adicionando usuários ao grupo sudo
Use visudo
para abrir o arquivo sudoers. Use este comando ou o descrito acima para especificar o editor de sua escolha:
sudo visudo
Percorra o arquivo sudoers até ver a definição da %sudo
entrada.
O sinal de porcentagem indica que esta é uma definição de grupo e não uma definição de usuário. Em algumas distribuições, a %sudo
linha tem um hash #
no início da linha. Isso torna a linha um comentário. Se for esse o caso, remova o hash e salve o arquivo.
A %sudo
linha se divide assim:
- % sudo : o nome do grupo.
- ALL = : esta regra se aplica a todos os hosts nesta rede.
- (ALL: ALL) : os membros deste grupo podem executar comandos como todos os usuários e todos os grupos.
- Todos : os membros deste grupo podem executar todos os comandos.
Para reformular ligeiramente, os membros deste grupo podem executar qualquer comando, como qualquer usuário ou qualquer grupo, neste computador ou em qualquer outro host nesta rede. Portanto, uma maneira simples de dar a alguém privilégios de root e a capacidade de usá-lo sudo
é adicioná-lo ao sudo
grupo.
Temos dois usuários, Tom e Mary, com contas de usuário tom
e mary
respectivamente. Vamos adicionar a conta do usuário tom
ao sudo
grupo com o usermod
comando. A -G
opção (grupos) especifica o grupo ao qual iremos adicionar a tom
conta. A -a
opção (anexar) adiciona este grupo à lista de grupos em que a conta do usuário tom
já está. Sem essa opção, a conta do usuário tom
seria colocada no novo grupo, mas removida de quaisquer outros grupos.
sudo usermod -a -G sudo tom
Vamos verificar em quais grupos Mary está:
grupos
A conta do usuário mary
está apenas no mary
grupo.
Vamos verificar com Tom:
grupos
A tom
conta do usuário – e, portanto, Tom – está nos grupos tom
e sudo
.
Vamos tentar fazer com que Mary faça algo que exija sudo
privilégios.
sudo less / etc / shadow
Maria não consegue olhar dentro do arquivo restrito “/ etc / shadow”. Ela recebe uma bronca leve por tentar usar sudo
sem permissão. Vamos ver como Tom se sai:
sudo less / etc / shadow
Assim que Tom insere sua senha, é mostrado o arquivo / etc / shadow.
Apenas por adicioná-lo ao sudo
grupo, ele foi elevado à categoria de elite daqueles que podem usar sudo
. Totalmente irrestrito.
Concedendo aos usuários direitos sudo restritos
Tom recebeu todos os sudo
direitos. Ele pode fazer qualquer coisa que root
– ou qualquer outra pessoa do sudo
grupo – possa fazer. Isso pode conceder a ele mais poder do que você gostaria de entregar. Às vezes, é necessário que um usuário execute uma função que requer root
privilégios, mas não há um caso justificável para que ele tenha sudo
acesso total . Você pode atingir esse equilíbrio adicionando-os ao arquivo sudoers e listando os comandos que eles podem usar.
Vamos conhecer Harry, dono da conta do usuário harry
. Ele não está no sudo
grupo e não tem sudo
privilégios.
grupos
É útil para Harry poder instalar o software, mas não queremos que ele tenha todos os sudo
direitos. OK, sem problemas. vamos acender visudo
:
sudo visudo
Percorra o arquivo até passar pelas definições de grupo. Vamos adicionar uma linha para Harry. Como esta é uma definição do usuário e não uma definição de grupo, não precisamos iniciar a linha com um sinal de porcentagem.
A entrada para a conta de usuário harry é:
harry ALL = / usr / bin / apt-get
Observe que há uma guia entre “harry” e “ALL =.”
Isso é lido como uma conta de usuário harry
pode usar os comandos listados em todos os hosts conectados a esta rede. Existe um comando listado, que é “/ usr / bin / apt-get.” Podemos conceder a Harry acesso a mais de um comando adicionando-os à lista de comandos, separados por vírgulas.
Adicione a linha ao arquivo sudoers e salve o arquivo. Se você quiser verificar se a linha está sintaticamente correta, podemos pedir visudo
para verificar o arquivo e verificar a sintaxe para nós, usando a opção -c
(verificar apenas):
sudo visudo -c
As verificações acontecem e visudo
informa que está tudo bem. Harry agora deve ser capaz de usar apt-get
para instalar o software, mas deve ser recusado se tentar usar qualquer outro comando que exija sudo
.
sudo apt-get install finger
Os sudo
direitos apropriados foram concedidos a Harry e ele pode instalar o software.
O que acontece se Harry tentar usar um comando diferente que requer sudo
?
sudo shutdown now
Harry é impedido de executar o comando. Nós concedemos a ele acesso específico e restrito. Ele pode usar o comando nomeado e nada mais.
Usando aliases de usuário sudoers
Se quisermos dar a Mary os mesmos privilégios, poderíamos adicionar uma linha no arquivo sudoers para a conta do usuário mary
exatamente da mesma maneira que fizemos com Harry. Outra maneira mais simples de conseguir a mesma coisa é usar a User_Alias
.
no arquivo sudoers, a User_Alias
contém uma lista de nomes de contas de usuário. O nome de User_Alias
pode então ser usado em uma definição para representar todas essas contas de usuário. Se você deseja alterar os privilégios para essas contas de usuário, você só tem uma linha para editar.
Vamos criar um User_Alias
e usá-lo em nosso arquivo sudoers.
sudo visudo
Role para baixo no arquivo até chegar à linha de especificação User_Alias.
Adicione o User_Alias
digitando:
User_Alias INSTALADORES = harry, mary
Cada elemento é separado por um espaço, não por uma guia. A lógica se divide em:
- User_Alias : indica
visudo
que será umUser_Alias
. - INSTALADORES : este é um nome arbitrário para este alias.
- = harry, mary : a lista de usuários a serem incluídos neste alias.
Agora vamos editar a linha que adicionamos anteriormente para a conta do usuário harry
:
harry ALL = / usr / bin / apt-get
Altere-o para que leia:
INSTALADORES TODOS = / usr / bin / apt-get
Isso diz que todas as contas de usuário contidas na definição de “INSTALADORES” User_Alias
podem executar o apt-get
comando. Podemos testar isso com Mary, que agora deve conseguir instalar o software.
sudo apt-get install colordiff
Mary pode instalar o software porque ela está nos “INSTALADORES” User_Alias
, e que User_Alias
possui esses direitos.
Três truques rápidos de sudo
Quando você esquecer de adicionar sudo
a um comando, digite
sudo !!
E o último comando será repetido com sudo
adicionado ao início da linha.
Depois de usar sudo
e autenticar sua senha, você não precisará usar sua senha com outros sudo
comandos por 15 minutos. Se você quiser que sua autenticação seja esquecida imediatamente, use:
sudo -k
Você já se perguntou onde você pode ver as tentativas de sudo
comando que falharam ? Eles vão para o arquivo “/var/log/auth.log”. Você pode visualizá-lo com:
menos /var/log/auth.log
Podemos ver a entrada para a conta de usuário mary que estava logada em TTY pts / 1 quando ela tentou executar o shutdown
comando como usuário “root”.
Com grande poder …
… Vem a capacidade de delegar partes dela a outras pessoas. Agora você sabe como capacitar outros usuários seletivamente.