fbpx

Comandos Linux – Comando sudo

Comando sudo do Linux

comando sudo

Em sistemas operacionais do tipo Unix, o comando sudo (“superusuário do” ou “alternar usuário, do”) permite que um usuário com permissões apropriadas execute um comando como outro usuário, como o superusuário .

Este documento descreve a versão Linux do sudo .

Descrição

O sudo permite que um usuário permitido execute um comando como outro usuário, de acordo com as especificações no arquivo / etc / sudoers . O uid e o gid reais e efetivos do usuário emissor são definidos para corresponder aos da conta do usuário de destino, conforme especificado no arquivo passwd .

Por padrão, o sudo exige que os usuários se autentiquem com uma senha. Por padrão, essa é a senha do usuário, não a senha raiz.

Depois que um usuário é autenticado, um registro de data e hora é gravado e o usuário pode usar o sudo sem uma senha por um curto período de tempo ( 5 minutos , a menos que configurado de forma diferente nos sudoers ). Esse registro de data e hora pode ser renovado se o usuário emitir o sudo com o sinalizador -v .

Se um usuário não listado em sudoers tentar executar um comando usando o sudo , será considerada uma tentativa malsucedida de violar a segurança do sistema e o email será enviado às autoridades apropriadas, conforme definido no momento da configuração ou no arquivo do sudoers . A autoridade padrão a ser notificada de tentativas malsucedidas de sudo é raiz . Observe que o email não será enviado se um usuário não autorizado tentar executar o sudo com os sinalizadores -l ou -v ; isso permite que os usuários determinem por si próprios se podem ou não usar o sudo .

O sudo pode registrar tentativas bem-sucedidas e malsucedidas (bem como erros) no syslog , um arquivo de log exclusivo ou ambos. Por padrão, o sudo registrará no syslog, mas isso pode ser alterado no momento da configuração ou no arquivo sudoers .

Para editar o arquivo sudoers , use o comando visudo .

Sintaxe

sudo -V | -h -l -L -v -k -K -s | [-H] [-P] [-S] [-b] |
     [-p prompt ] [-c class | -] [-a auth_type ] [-r role ] [-t type ]Comando 
     [-u nome de usuário | # uid ]

Opções

-VA opção -V (versão) faz com que o sudo imprima o número da versão e saia. Se o usuário que está chamando já for root, a opção -V imprimirá uma lista dos padrões com os quais o sudo foi compilado, bem como os endereços de rede local da máquina.
-euA opção -l (lista) imprimirá os comandos permitidos (e proibidos) ao usuário no host atual.
-EUA opção -L (listar padrões) listará os parâmetros que podem ser definidos em uma linha de padrões , juntamente com uma breve descrição de cada um. Esta opção é útil em conjunto com o grep .
-hA opção -h (ajuda) faz com que o sudo imprima uma mensagem de uso e saia.
-vSe a opção -v (validar) receber , o sudo atualizará o carimbo de data / hora do usuário, solicitando a senha do usuário, se necessário. Isso prolonga o tempo limite do sudo por mais 5 minutos (ou qualquer que seja o tempo limite definido no sudoers ), mas não executa um comando.
-kA opção -k (kill) para sudo invalida o registro de data e hora do usuário, definindo a hora na época . Na próxima vez que o sudo for executado, será necessária uma senha. Esta opção não requer uma senha e foi adicionada para permitir que um usuário revogue as permissões do sudo de um arquivo .logout .
-KA opção -K (com certeza mata) para sudo remove completamente o registro de data e hora do usuário. Da mesma forma, esta opção não requer uma senha.
-bA opção -b (segundo plano) diz ao sudo para executar o comando especificado em segundo plano. Observe que, se você usar a opção -b, não poderá usar o controle de tarefas do shell para manipular o processo.
-pA opção -p (prompt) permite substituir o prompt de senha padrão e usar um personalizado. As seguintes porcentagens de escape (‘ % ‘) são suportadas:

% u é expandido para o nome de login do usuário que está chamando ;

% U é expandido para o nome de login do usuário no qual o comando será executado ((o padrão é root);

% h é expandido para o nome do host local sem o nome do domínio ;

% H é expandido para o nome do host local, incluindo o nome do domínio (somente se o nome do host da máquina estiver totalmente qualificado ou se a opção sudoers ” fqdn ” estiver definida); %% (dois consecutivos

caracteres ) são recolhidos em um único caractere % .

-cA opção -c (class) faz com que o sudo execute o comando especificado com os recursos limitados pela classe de login especificada. O argumento da classe pode ser um nome de classe, conforme definido em /etc/login.conf , ou um único caractere ‘  ‘. Especificar uma classe de  indica que o comando deve ser executado restrito pelos recursos de login padrão do usuário que está executando o comando. Se o argumento da classe especificar uma classe de usuário existente, o comando deverá ser executado como root ou o comando sudo deverá ser executado a partir de um shell que já seja root. Esta opção está disponível apenas em sistemas com classes de login BSD nas quais o sudo foi configurado com o–com opção logincap .
-umaA opção -a (tipo de autenticação) faz com que o sudo use o tipo de autenticação especificado ao validar o usuário, conforme permitido pelo /etc/login.conf . O administrador do sistema pode especificar uma lista de métodos de autenticação específicos do sudo adicionando uma entrada ” auth-sudo ” no /etc/login.conf . Esta opção está disponível apenas em sistemas que suportam autenticação BSD em que o sudo foi configurado com a opção –with-bsdauth .
-vocêA opção -u (usuário) faz com que o sudo execute o comando especificado como um usuário que não seja root. Para especificar um uid em vez de um nome de usuário, use #uid .
-sA opção -s (shell) executa o shell especificado pela variável de ambiente SHELL se estiver definido ou o shell conforme especificado no arquivo passwd .
-HA opção -H (HOME) define a variável de ambiente HOME como o diretório inicial do usuário de destino ( raiz por padrão), conforme especificado na senha . Por padrão, o sudo não modifica o HOME .
-PA opção -P (preservar vetor de grupo) faz com que o sudo preserve o vetor de grupo do usuário inalterado. Por padrão, o sudo inicializará o vetor de grupo na lista de grupos do usuário de destino. Os IDs de grupo reais e efetivos, no entanto, ainda estão configurados para corresponder ao usuário de destino.
-rA opção -r (role) faz com que o novo contexto de segurança ( SELinux ) tenha a função especificada por ROLE.
-tA opção -t (type) faz com que o novo contexto de segurança (SELinux) tenha o tipo (domínio) especificado por TYPE . Se nenhum tipo for especificado, o tipo padrão será derivado da função especificada.
-SA opção -S ( stdin ) faz com que o sudo leia a senha da entrada padrão em vez do dispositivo terminal .
O sinalizador  indica que o sudo deve parar de processar argumentos da linha de comando. É mais útil em conjunto com o sinalizador -s .

Retornar valores

Após a execução bem-sucedida de um programa, o valor de retorno do sudo será o valor de retorno do programa que foi executado.

Caso contrário, o sudo será encerrado com um valor de saída 1 se houver um problema de configuração / permissão ou se o sudo não puder executar o comando especificado. Neste último caso, a sequência de erros é impressa em stderr . Se o sudo não puder declarar uma ou mais entradas no CAMINHO do usuário, um erro será impresso no stderr . (Se o diretório não existir ou se não for realmente um diretório, a entrada será ignorada e nenhum erro será impresso.) Isso não deve ocorrer em circunstâncias normais. O motivo mais comum para o stat retornar “permissão negada” é se você estiver executando uma montagem automáticaer e um dos diretórios em seu PATH está em uma máquina inacessível no momento.

Notas de segurança

O sudo tenta ser seguro ao executar comandos. Variáveis ​​que controlam como é feito o carregamento e a ligação dinâmicos podem ser usadas para subverter o programa que o sudo executa. Para combater isso, algumas variáveis ​​de ambiente específicas do sistema são removidas do ambiente que é passado para os comandos executados. Outras variáveis ​​que o sudo remove do ambiente incluem:

  • IFS
  • ENV
  • BASH_ENV
  • KRB_CONF
  • KRBCONFDIR
  • KRBTKFILE
  • KRB5_CONFIG
  • LOCALDOMAIN
  • RES_OPTIONS
  • HOSTALIASES
  • NLSPATH
  • PATH_LOCALE
  • TERMINFO
  • TERMINFO_DIRS
  • TERMPATH

como eles também podem representar uma ameaça. Se a variável TERMCAP estiver configurada e for um nome de caminho, ela também será ignorada. Além disso, se determinadas variáveis ​​contiverem os caracteres / ou % , elas serão ignoradas.

Se o sudo tiver sido compilado com suporte ao SecurID , as variáveis ​​VAR_ACE , USR_ACE e DLC_ACE também serão limpas. A lista de variáveis ​​de ambiente que o sudo limpa está contida na saída do sudo -V quando executada como raiz.

Para impedir a falsificação de comandos, o sudo verifica ” . ” E “” (ambos indicando o diretório atual) por último ao procurar um comando no PATH do usuário (se um ou ambos estiverem no PATH ). Observe, no entanto, que a variável de ambiente PATH real não é modificada e é passada inalterada para o programa que o sudo executa.

Por motivos de segurança, se o seu sistema operacional oferecer suporte a bibliotecas compartilhadas e não desativar os caminhos de pesquisa de bibliotecas definidas pelo usuário para programas setuid (a maioria o faz), você deve usar uma opção de vinculador que desabilita esse comportamento ou vincula o sudo estaticamente.

O sudo verificará a propriedade de seu diretório de registro de data e hora ( / var / run / sudo por padrão) e ignorará o conteúdo do diretório se ele não pertencer ao root e somente puder ser gravado pelo root. Em sistemas que permitem que usuários não raiz entreguem arquivos via chown , se o diretório de registro de data e hora estiver localizado em um diretório gravável por qualquer pessoa (por exemplo: / tmp ), é possível que um usuário crie o diretório de registro de data e hora antes da execução do sudo . No entanto, porque sudoverifica a propriedade e o modo do diretório e seu conteúdo, o único dano que pode ser causado é “ocultar” os arquivos colocando-os no diretório de carimbo de data / hora. É improvável que isso aconteça, uma vez que o diretório do carimbo de data / hora é de propriedade do root e inacessível a qualquer outro usuário, o usuário que coloca os arquivos lá não poderá recuperá-los. Para contornar esse problema, você pode usar um diretório que não possa ser gravado no mundo para os carimbos de data / hora ( / var / adm / sudo, por exemplo) ou criar / var / run / sudo com o proprietário (raiz) e permissões apropriadas (0700) em os arquivos de inicialização do sistema.

O sudo não cumprirá os carimbos de data e hora estabelecidos no futuro. Os carimbos de data / hora com uma data maior que current_time + 2 * TIMEOUT serão ignorados e o sudo registrará e reclamará. Isso é feito para impedir que um usuário crie seu próprio registro de data e hora com uma data falsa em sistemas que permitem que os usuários entreguem arquivos.

Observe que o sudo registrará apenas o comando que ele executa explicitamente. Se um usuário executar um comando como ” sudo su ” ou ” sudo sh “, os comandos subsequentes executados nesse shell não serão registrados, nem o controle de acesso do sudo os afetará. O mesmo vale para comandos que oferecem escapes de shell (incluindo a maioria dos editores). Por esse motivo, deve-se tomar cuidado ao conceder aos usuários acesso aos comandos via sudo para verificar se o comando não fornece inadvertidamente ao usuário um shell raiz eficaz.

variáveis ​​ambientais

O sudo usa as seguintes variáveis ​​de ambiente :

CAMINHODefina como um valor sensato se SECURE_PATH estiver definido
CONCHAUsado para determinar o shell a ser executado com a opção -s
DO UTILIZADORConfigure para o usuário de destino (raiz, a menos que a opção -u seja especificada)
CASANo modo -s ou -H (ou se o sudo tiver sido configurado com a opção –enable-shell-sets-home ), defina o diretório inicial do usuário de destino.
SUDO_PROMPTUsado como o prompt de senha padrão
SUDO_COMMANDDefina como o comando executado por sudo
SUDO_USERDefina como o login do usuário que chamou o sudo
SUDO_UIDDefinido como o uid do usuário que chamou o sudo
SUDO_GIDDefina como o gid do usuário que chamou o sudo
SUDO_PS1Se definido, o PS1 será definido como seu valor

Exemplos

sudo shutdown -r agora

Reinicie o sistema; execute o comando shutdown como root.

sudo -u hope ls / home / otheruser / Documentos

Liste o conteúdo do diretório / home / otheruser / Documents como o usuário espera .

sudo -u hope -g outros usuários mkdir / home / otheruser / Documentos / newfiles

Crie um novo diretório com o mkdir comando, como o usuário esperança , com o grupo atual da esperança definido para otherusers . a esperança deve ser um membro do grupo de outros usuários .

sudo -v

Aumente / redefina o tempo limite de autenticação automática do sudo , permitindo continuar emitindo comandos sudo sem inserir uma senha.

sudo -k

Autenticação sudo “Kill” para o usuário atual. O próximo comando sudo exigirá uma senha.

su – Torne-se o superusuário ou outro usuário.
visudo – Edite oarquivo sudoers , que define quem pode executar o sudo .

22 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900

Copyright © Linux Force Security  - Desde 2011.