Quando um usuário pode fazer 'sudo su' mas não 'sudo su -'?

4

O seguinte aconteceu comigo:

$ sudo su - superman

Sorry, user clarkkent is not allowed to execute '/bin/su - superman' as root in krypton101.

No entanto, o seguinte funcionou bem:

$ sudo su superman

Quando é útil permitir que um usuário faça sudo su , mas não sudo su - ? Como esta definição é definida / não definida? Eu li esta página mas não ajudou .

Mais detalhes:

  • Eu não sou o administrador
  • não tenho acesso a /etc/sudoers
  • a distribuição é Centos 7
por usual me 02.12.2015 / 14:49

2 respostas

2

Ao especificar comandos permitidos via sudo , existem basicamente duas opções fáceis:

  • permite um comando específico com qualquer parâmetros ou
  • permite um comando específico com um conjunto de parâmetros exatamente especificado .

Como resultado, permitir sudo su - superman e sudo su superman requer duas entradas no arquivo sudoers . Parece que o seu administrador apenas lhe forneceu uma delas.

A sintaxe do arquivo sudoers realmente não permite que o administrador especifique um comando específico com opções limitadas por curinga ou regexp, porque essas especificações seriam muito fáceis de serem usadas. Como Andrew disse, melhor prevenir do que remediar é a abordagem aqui.

No entanto, observe que sudo su superman requer sudo para permitir que o usuário original execute su superman como raiz . Efetivamente, haverá duas transições de identidade em vez de apenas uma: primeiro do usuário original para a raiz por sudo e depois da raiz para superman por su . A especificação ficaria assim no arquivo sudoers :

original_user ALL=(root) su superman

Por outro lado, a sintaxe sudoers tem uma maneira muito mais fácil de permitir que o usuário execute qualquer comando como um usuário específico, se o usuário não estiver muito obcecado com o uso do comando su .

Se a especificação dos sudoers for escrita assim:

original_user ALL=(superman) ALL

o usuário pode usar sudo -u superman -s para alcançar um equivalente próximo (mas possivelmente não exato) de sudo su superman e sudo -u superman -i para alcançar um exato equivalente de sudo su - superman .

Por que as pessoas não usam isso, mas insistem em usar sudo su - constructos? Porque a opção -i não existia nas versões anteriores de sudo !

Ele apareceu apenas após o ano 2000, portanto há muita literatura antiga que ainda recomenda a construção sudo su - , agora obsoleta. E, é claro, antigos usuários e administradores do Unix podem ter isso na memória muscular, então eles vão usá-lo sem pensar.

    
por 10.07.2018 / 16:33
0

Para responder à pergunta: Quando é útil permitir que um usuário sudo su, mas não sudo su -?

O hífen após su , mas antes do nome de usuário , instrui o su a permitir que o usuário atual herde o ambiente do nome de usuário. Contanto que o ambiente do clarkkent tenha as variáveis de ambiente necessárias configuradas para serem executadas como superman , não é necessário executar sudo su - superman .

Uma 'razão' plausível para NÃO permitir sudo su - superman pode ser que o administrador do sistema acredite que sudo su - superman criou um risco de segurança. Isso ocorre porque sudo su - , sem especificar um nome de usuário, instrui o sistema a efetuar login como usuário root , o que é algo que o administrador do sistema está tentando evitar. Eu realmente não sei ao certo adicionar o hífen cria este risco, ou não, mas eu acho que quando se trata de segurança, é melhor prevenir do que remediar .

Como essa configuração é definida / desativada?

A configuração é definida no arquivo /etc/sudoers .

    
por 07.12.2015 / 17:57

Tags