O comando sudo permite que você execute comandos no Linux como se você fosse outra pessoa, como o root. sudo também permite controlar quem pode acessar os recursos do root, com granularidade. Dê aos usuários acesso total ou permita que eles usem um pequeno subconjunto de comandos. Nós mostramos como.
últimas postagens
sudo e permissões de root
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 conta root é 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 a qualquer coisa e, praticamente, a qualquer momento.
Claro, qualquer pessoa com acesso à senha do root pode fazer o mesmo. Eles podem causar estragos de forma maliciosa ou acidental. Na verdade, o usuário root 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 efetuar login como root de forma alguma. Faça login com uma conta de usuário normal e use sudo para eleve seus privilégios por um curto período você precisa deles. 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 comando sudo. Como você tem poderes de sudo, 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 com quais comandos os vários usuários têm permissão para usar o sudo. Dessa forma, você não dá a eles 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 “usuário substituto faz”.
Para usar sudo para executar um comando como outro usuário, precisamos usar a opção -u (usuário). Aqui, vamos executar o Quem sou eu comando como o usuário mary. Se você usar o comando sudo sem a opção -u, executará o comando como root.
E, claro, como você está usando o 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 é Maria.
Você pode usar o comando sudo para fazer login como outro usuário sem saber sua senha. Você será solicitado a fornecer sua própria senha. Precisamos usar a opção -i (login).
sudo -i -u mary
pwd
whoami
ls -hl
exit
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 esta é uma sessão para a conta do usuário mary.
O pwdcommand reproteia que você está agora na casa de Maria diretório home.
whoami nos disse que você está usando a conta de usuário mary.
Os arquivos no diretório pertencem à conta de usuário mary.
O comando de saída leva você de volta para sua sessão normal de conta de usuário.
Editando o arquivo sudoers
Para adicionar usuários à lista de pessoas que podem usar o sudo, você precisa editar o arquivo sudoers. É de vital importância que você só faça isso usando o comando visudo. O comando visudo evita que várias pessoas tentem editar o arquivo sudoers de uma vez. Isso também executa verificação de sintaxe e análise no conteúdo do arquivo ao salvá-lo.
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 o sudo.
Embora você inicie o processo de edição usando o comando visudo, 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 comando visudo foi lançado o editor simples nano. No Fedora, o visudo lançou o mais capaz—mas menos intuitivo—Vim.
Se você preferir usar o nano no Fedora, pode fazer isso facilmente. Primeiro, instale o 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 editor nano é 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 entrada% sudo.
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 linha% sudo tem um hash # no início da linha. Isso torna a linha um comentário. Nesse caso, remova o hash e salve o arquivo.
A linha% sudo se divide assim:
% sudo: o nome do grupo.
ALL =: esta regra se aplica a todos os hosts nesta rede.
(TODOS: TODOS): 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 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 usar o sudo é adicioná-lo ao grupo sudo.
Temos dois usuários, Tom e Mary, com contas de usuário tom e mary, respectivamente. Adicionaremos a conta de usuário tom ao grupo sudo com o comando usermod. A opção -G (grupos) especifica o grupo ao qual vamos adicionar a conta do Tom. A opção -a (anexar) adiciona este grupo à lista de grupos em que a conta do usuário já está. Sem esta 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á:
groups
A conta de usuário mary está apenas no grupo mary.
Vamos verificar com o Tom:
groups
A conta do usuário tom – e, portanto, Tom – está nos grupos tom e sudo.
Vamos tentar fazer com que Mary faça algo que exija privilégios de sudo.
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 grupo do sudo, ele foi elevado à categoria de elite daqueles que podem usar o sudo. Totalmente irrestrito.
Dando aos usuários direitos sudo restritos
Tom recebeu direitos totais de sudo. Ele pode fazer qualquer coisa que o root – ou qualquer outra pessoa do grupo sudo – 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 exija privilégios de root, mas não há um caso justificável para que ele tenha acesso total ao sudo. 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 de usuário harry. Ele não está no grupo sudo e não tem privilégios de sudo.
groups
É útil para Harry poder instalar o software, mas não queremos que ele tenha todos os direitos sudo. OK, sem problemas. vamos acender o 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 que harry pode usar os comandos listados em todos os hosts conectados a esta rede. Há 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 ao 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 o visudo relata que está tudo bem. Harry agora deve ser capaz de usar apt-get instalar software mas deve ser recusado se ele tentar usar qualquer outro comando que requeira sudo.
sudo apt-get install finger
Os direitos de sudo 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 de usuário mary exatamente da mesma maneira que fizemos com Harry. Outra maneira mais simples de conseguir a mesma coisa é usar um User_Alias.
no arquivo sudoers, um User_Alias contém uma lista de nomes de contas de usuário. O nome do User_Alias pode então ser usado em uma definição para representar todas essas contas de usuário. Se você quiser alterar os privilégios dessas contas de usuário, terá apenas uma linha para editar.
Vamos criar um User_Alias e usá-lo em nosso arquivo sudoers.
sudo visudo
Scroll down in the file until you come to the User_Alias specification line.
Adicione o User_Alias digitando:
User_Alias INSTALLERS = harry, mary
Cada elemento é separado por um espaço, não por uma guia. A lógica se divide em:
User_Alias: diz ao visudo que será um User_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 de usuário harry:
harry ALL=/usr/bin/apt-get
Altere-o para que leia:
INSTALLERS ALL=/usr/bin/apt-get
Isso diz que todas as contas de usuário contidas na definição de User_Alias “INSTALADORES” podem executar o comando apt-get. Podemos testar isso com Mary, que agora deve conseguir instalar o software.
sudo apt-get install colordiff
Maria pode instalar o software porque ela está em “INSTALADORES” User_Alias, e esse User_Alias recebeu esses direitos.
Três truques rápidos de sudo
Quando você se 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 o sudo e se autenticar com sua senha, você não precisará usar sua senha com outros comandos sudo 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 comando sudo que falharam? Eles vão para o arquivo “/var/log/auth.log”. Você pode visualizá-lo com:
less /var/log/auth.log
Podemos ver a entrada para a conta de usuário mary, que estava logada em TTY pts / 1 quando tentou executar o comando de desligamento como usuário “root”.
Com grande poder …
… Vem a capacidade de delegar partes dele a outras pessoas. Agora você sabe como capacitar outros usuários seletivamente.