Categories: Tecnologia

Como controlar o acesso sudo no Linux

Fatmawati Achmad Zaenuri / Shutterstock

O sudo comando permite que você execute comandos no Linux como se você fosse outra pessoa, como rootsudo também permite controlar quem pode acessar os root'srecursos, com granularidade. Dê aos usuários acesso total ou permita que eles usem um pequeno subconjunto de comandos. Nós mostramos como.

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 rootconta é 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'ssenha pode fazer o mesmo. Eles podem causar estragos de forma maliciosa ou acidental. Na verdade, o rootusuá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 sudopara 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

sudojá foi instalado nos computadores Ubuntu 18.04.3, Manjaro 18.1.0 e Fedora 31 usados ​​para pesquisar este artigo. Isso não é surpresa. sudoexiste 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 sudocomando. Porque você tem sudopoderes, 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 sudopara 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 sudopara executar um comando como outro usuário, precisamos usar a -uopção (usuário). Aqui, vamos executar o comando whoami como o usuário mary. Se você usar o sudocomando sem a -uopção, executará o comando como root.

E, claro, como você está usando, sudosua senha será solicitada.

sudo -u mary whoami

A resposta de  whoaminos diz que a conta do usuário que está executando o comando é mary.

Você pode usar o sudocomando para fazer login como outro usuário sem saber sua senha. Você será solicitado a fornecer sua própria senha. Precisamos usar a -iopçã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 pwdcomando testa novamente para que você esteja agora no  mary's diretório inicial .
  • whoaminos diz que você está usando uma conta de usuário mary.
  • Os arquivos do diretório pertencem à mary conta do usuário.
  • O exitcomando 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 sudoersarquivo. É de vital importância que você só faça isso usando o visudocomando. O visudocomando 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 visudocomando, visudonão é um editor. Ele chama um de seus editores existentes para realizar as edições do arquivo. No Manjaro e no Ubuntu, o visudocomando lançou o editor simples nano . No Fedora, visudolançou o mais capaz – mas menos intuitivo – vim.

Se preferir usar nanono Fedora, você pode fazer isso facilmente. Primeiro, instale nano:

sudo dnf install nano

E então visudoteve que ser invocado com este comando:

sudo EDITOR = nano visudo

Parece um bom candidato para apelido . O nanoeditor é aberto com o arquivo sudoers carregado nele.

Adicionando usuários ao grupo sudo

Use visudopara 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 %sudoentrada.

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 %sudolinha 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 %sudolinha 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 sudogrupo.

Temos dois usuários, Tom e Mary, com contas de usuário tome maryrespectivamente. Vamos adicionar a conta do usuário tomao sudogrupo com o usermodcomando. A -Gopção (grupos) especifica o grupo ao qual iremos adicionar a tomconta. A -aopção (anexar) adiciona este grupo à lista de grupos em que a conta do usuário tomjá está. Sem essa opção, a conta do usuário tomseria 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 maryestá apenas no   mary  grupo.

Vamos verificar com Tom:

grupos

A tomconta do usuário – e, portanto, Tom – está nos grupos tome sudo.

Vamos tentar fazer com que Mary faça algo que exija sudoprivilégios.

sudo less / etc / shadow

Maria não consegue olhar dentro do arquivo restrito “/ etc / shadow”. Ela recebe uma bronca leve por tentar usar sudosem 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 sudogrupo, ele foi elevado à categoria de elite daqueles que podem usar  sudo. Totalmente irrestrito.

Concedendo aos usuários direitos sudo restritos

Tom recebeu todos os sudodireitos. Ele pode fazer qualquer coisa que root– ou qualquer outra pessoa do sudogrupo – 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 rootprivilégios, mas não há um caso justificável para que ele tenha sudoacesso 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 sudogrupo e não tem sudoprivilégios.

grupos

É útil para Harry poder instalar o software, mas não queremos que ele tenha todos os sudodireitos. 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 harrypode 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 visudopara 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 visudoinforma 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 sudodireitos 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 maryexatamente 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_Aliascontém uma lista de nomes de contas de usuário. O nome de User_Aliaspode 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_Aliase usá-lo em nosso arquivo sudoers.

sudo visudo

Role para baixo no arquivo até chegar à linha de especificação User_Alias.

Adicione o User_Aliasdigitando:

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 visudoque 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 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-getcomando. 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_Aliaspossui esses direitos.

Três truques rápidos de sudo

Quando você esquecer de adicionar sudoa um comando, digite

sudo !!

E o último comando será repetido com sudoadicionado ao início da linha.

Depois de usar sudoe autenticar sua senha, você não precisará usar sua senha com outros sudocomandos 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 sudocomando 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 shutdowncomando 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.

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

1 ano ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

1 ano ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

1 ano ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

1 ano ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

1 ano ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

1 ano ago