Como controlar o acesso ao sudo no Linux

Conteúdo

Uma janela de terminal Linux em uma área de trabalho estilo Ubuntu.

a sudo O comando permite que você execute comandos no Linux como se você fosse outra pessoa, O que root. sudo também permite que você controle quem pode entrar root's capacidades, 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 root

Todos nós já ouvimos (simplificação excessiva) que tudo no Linux é um arquivo. Na realidade, praticamente tudo no sistema operacional, de processos, registros, diretórios, tomadas e tubos, comunicar-se com o kernel por meio de um descritor de arquivo. Então, mesmo quando tudo não é um arquivo, a maioria dos objetos do sistema operacional são manipulados como se Eles eram. Sempre que possível, o design do Linux e de sistemas operacionais semelhantes ao Unix segue este princípio.

O conceito de “tudo é um arquivo” tem um grande alcance 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ê tiver um arquivo ou diretório (um tipo especial de arquivo), Você pode fazer o que quiser com isso, até mesmo edite, renomeá-lo, mova e exclua. Você também pode determinar 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 governados por essas permissões.

Tudo isso, ao mesmo tempo que o superusuário, são conhecidos como root. a root conta é uma conta com privilégios especiais. Não está sujeito às permissões de nenhum dos objetos do sistema operacional. O usuário root pode fazer qualquer coisa e, praticamente, em qualquer momento.

Desde já, qualquer um que tenha acesso a root's a senha pode fazer o mesmo. Eles podem causar estragos de forma maliciosa ou acidental. Na realidade, a root O usuário também pode causar estragos se cometer um erro. Ninguém é infalível. É uma coisa perigosa.

É por isso que agora é considerada uma prática recomendada não faça login como root em absoluto. Faça login com uma conta de usuário frequente e use sudo para eleve seus privilégios por um curto período de tempo Você precisa deles. Frequentemente, isso é apenas para emitir um único comando.

RELACIONADO: Que significa “tudo é um arquivo” en Linux?

A lista de sudoers

sudo já estava instalado em computadores Ubuntu 18.04.3, Manjaro 18.1.0 e Fedora 31 utilizadas para investigar este post. Isso não é uma surpresa. sudo existe desde o início de 1990 1980 e se tornou o meio padrão de operação de superusuário para quase todas as distribuições.

Quando você instala uma distribuição moderna, o usuário que você cria durante a instalação é adicionado a uma lista de usuários chamada sudoers. Estes 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.

Desde já, não é aconselhável entregar o status total de superusuário à vontade ou para qualquer pessoa que tenha apenas uma necessidade parcial ou específica. A lista sudoer permite que você especifique quais comandos diferentes usuários podem usar sudo com. Assim, não dá a eles as chaves do reino, mas eles ainda podem realizar o que precisam fazer.

Executar um comando como outro usuário

Originalmente, era chamado de "superusuário fazer", porque eu poderia fazer coisas como superusuário. Seu escopo agora foi expandido 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 “usuário substituto”.

Usar sudo para executar um comando como outro usuário, precisamos usar o -u opção (Nome do usuário). Aqui, vamos executar o quem sou comando como usuário mary. Se você usar o sudo comando sem o -u opção, irá executar o comando como root.

E de qualquer maneira, porque você está usando sudo sua senha será solicitada.

sudo -u mary whoami

A solução de whoami nos diz que a conta do usuário que executa o comando é mary.

Você pode usar o sudo comando para fazer login como outro usuário sem saber sua senha. Você será solicitado para sua própria senha. Precisamos usar o -i (login) opção.

sudo -i -u mary
pwd
Quem sou eu
ls -hl
saída

Você está logado como mary. Os arquivos “.bashrc”, “.bash_aliases” e “.perfil” para a conta de usuário mary eles são processados exatamente como se o proprietário da conta de usuário mary foi logado em.

  • o comando solicita mudanças para refletir que esta é uma sessão para a conta do usuário mary.
  • a pwdrepetir o comando que você está agora em mary's diretório doméstico.
  • whoami nos diz que você está usando uma conta de usuário mary.
  • Os arquivos no diretório pertencem ao mary conta de usuario.
  • a exit o comando 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 sudo , você precisa editar o sudoers procedimentos. É de vital importância que você só faça isso usando o visudo comando. a visudo O comando evita que várias pessoas tentem editar o arquivo sudoers ao mesmo tempo. O que mais realiza verificação e análise no conteúdo do arquivo à medida que você os salva.

Se suas edições falharem nos testes, o arquivo não foi salvo cegamente. Você tem opções. Você pode cancelar e abandonar as mudanças, volte e edite as mudanças novamente, ou forçar as edições incorretas a serem salvas. A última opção é uma ideia muito ruim. Não fique tentado a fazer isso. Você pode se encontrar em uma situação onde todo o mundo bloqueado acidentalmente para que não possa ser usado sudo.

Mesmo se você iniciar o procedimento de edição com o visudo comando, visudo não um editor. Chame um de seus editores existentes para fazer edições no arquivo. No Manjaro e Ubuntu, a visudo comando lançado o editor simples nano. No Fedora, visudo lançou o mais capazmas menos intuitivovim.

RELACIONADO: Como sair do editor Vi ou Vim

Se você preferir usar nano no Fedora, pode fazer isso facilmente. Primeiro, instalar nano:

sudo dnf instalar nano

E posteriormente visudo teve que ser invocado com este comando:

sudo EDITOR = nano visudo

Parece um bom candidato para um alias. a nano O editor abre com o arquivo sudoers carregado nele.

editor nano com arquivo sudoers carregado nele

Adicionar usuários ao grupo sudo

Usar visudo para abrir o arquivo sudoers. Use este comando ou aquele descrito anteriormente para especificar o editor de sua escolha:

sudo visudo

Percorra o arquivo sudoers até ver a definição do %sudo entrada.

O arquivo sudoers com a linha% sudo destacada

O sinal de porcentagem indica que é uma definição de grupo e não uma definição de usuário. Em algumas distribuições, a %sudo a linha tem um hash # no começo da linha. Isso torna a linha um comentário. Se esse é o caso, remova o hash e salve o arquivo.

a %sudo a linha é dividida assim:

  • % sudo: O nome do grupo.
  • TODOS =: Esta regra se aplica a todos os hosts nesta rede.
  • (TUDO TUDO): membros deste grupo podem executar comandos como todos os usuários e todos os grupos.
  • Todo mundo: membros deste grupo podem executar todos os comandos.

Para reformular um pouco, membros deste grupo podem executar qualquer comando, como qualquer usuário ou grupo, neste computador ou em qualquer outro host nesta rede. Então, uma maneira simples de conceder privilégios de root a alguém e a capacidade de usar sudo, é adicioná-los a sudo grupo.

Temos dois usuários, Tom e Mary, com contas de usuário. tom e mary respectivamente. Vamos adicionar uma conta de usuário tom al sudo grupo com ele usermod comando. a -G Opção (grupos) especifica o grupo ao qual vamos adicionar o tom responsabilizar-se por. a -a (Adicionar) opção adicionar este grupo para o grupo lista a conta do usuário tom já em. Sem esta opção, a conta do usuário tom seria colocado no novo grupo, mas removido de qualquer outro grupo.

sudo usermod -a -G sudo tom

Vamos ver em quais grupos Mary está:

grupos

Conta de usuário mary está sozinho no mary grupo.

Vamos verificar com o Tom:

grupos

a tom conta de usuario, e por isso, Tom, está nos grupos tom e sudo.

Vamos tentar fazer com que Maria faça algo que requer sudo privilégios.

sudo less / etc / shadow

Mary não pode olhar dentro do arquivo restrito “/ etc / sombra”. Ela recebe uma leve reprimenda por tentar usar sudo sem permissão. Vamos ver como o Tom faz:

sudo less / etc / shadow

Assim que Tom inserir sua senha, o arquivo é mostrado / etc / sombra.

Basta adicioná-lo ao sudo grupo, foi elevado à categoria de elite daqueles que podem usar sudo. Absolutamente sem restrições.

Conceda aos usuários direitos sudo restritos

Tom se ha dado por completo sudo Direitos. Ele pode fazer qualquer coisa que rootOu qualquer outra pessoa no sudo grupo - pode fazer. Isso pode lhe dar mais poder do que você gostaria de dar.. Às vezes, há um requisito de que um usuário execute uma função que requer root privilégios, mas não há nenhum caso justificável para que eles tenham sudo Acesso. Você pode alcançar esse equilíbrio adicionando-os ao arquivo sudoers e listando os comandos que eles podem usar.

Vamos conhecer o Harry, dono da conta do usuário. harry. Ele não está nisso sudo grupo, e ele não tem sudo privilégios.

grupos

É útil que Harry possa instalar software, mas não queremos que tenha sudo Direitos. Está bem, não há problema. vamos ligar visudo:

sudo visudo

Role para baixo no arquivo até passar as definições de grupo. Vamos adicionar uma linha para Harry. Porque este é um Nome do usuário definição e não uma definição de grupo, não há necessidade de iniciar a linha com um sinal de porcentagem.

entrada do arquivo sudoer para harry

A entrada para a conta de usuário harry é:

harry ALL=/usr/bin/apt-get

Note que há uma guia entre “Harry” e “TODOS =”.

Isso é lido como uma conta de usuário harry você pode usar os comandos listados em todos os hosts conectados a esta rede. Existe um comando na lista, o 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ê deseja verificar se a linha está sintaticamente correta, Nós podemos pergutar visudo para verificar o arquivo e verificar a sintaxe para nós, usando o -c (marca solo) opção:

sudo visudo -c

As verificações são realizadas e visudo informe que está tudo bem. Harry agora deve ser capaz de usar apt-get para instalar software mas deve ser rejeitado se você tentar usar qualquer outro comando que requeira sudo.

sudo apt-get install finger

O apropriado sudo Harry recebeu direitos e pode instalar o software.

E se Harry tentar usar um comando diferente de que precisa sudo?

sudo shutdown now

Harry não consegue executar o comando. Nós concedemos a você com sucesso acesso específico e restrito. Você pode usar o comando designado e nada mais.

Usando aliases de usuário sudoers

Se quisermos dar a Maria os mesmos privilégios, poderíamos adicionar uma linha no arquivo sudoers para a conta do usuário. mary exatamente da mesma forma que fizemos com Harry. Outra maneira mais simples de fazer o mesmo é usar um User_Alias.

no arquivo sudoers, uma User_Alias contém uma lista de nomes de contas de usuário. Nome User_Alias pode mais tarde ser usado em uma definição para representar todas as contas de usuário. Se você deseja alterar os privilégios dessas contas de usuário, 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 escrita:

User_Alias ​​INSTALLERS = harry, Mary

Cada elemento é separado por um espaço, nem por um cílio. A lógica se decompõe como:

  • User_Alias: Isso diz visudo isso vai ser um User_Alias.
  • INSTALADORES: Este é um nome arbitrário para este alias.
  • = Harry, Maria: 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

Mude para dizer:

INSTALADORES ALL=/usr/bin/apt-get

Isso diz que todas as contas de usuário incluídas na definição de “INSTALADORES” User_Alias pode executar o apt-get comando. Podemos testar isso com Mary, quem agora deve ser capaz de instalar o software.

sudo apt-get install colordiff

Maria pode instalar o software porque ele está em “INSTALADORES” User_Alias, elenco User_Alias você recebeu esses direitos.

Três truques rápidos de sudo

Quando você se esquece de adicionar sudo para um comando, escriba

sudo !!

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

Depois de usar sudo e autenticado com sua senha, você não terá que usar sua senha com mais sudo comandos durante 15 minutos. Se você quiser que sua autenticação seja esquecida imediatamente, usar:

sudo -k

Você já se perguntou onde você pode ver falhou sudo tentativas de comando? Do arquivo “/var/log/auth.log”. Você pode ver isso com:

menos /var/log/auth.log

Podemos ver a entrada da conta de usuário mary que se conectou ao TTY pts / 1 quando você tentou executar o shutdown comando como usuário “raiz”.

Com grande poder …

… vem a capacidade de delegar peças a outras pessoas. Agora você sabe como capacitar outros usuários seletivamente.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.