Bloquear um comando do usuário sudo

10

Não preciso de um administrador para alterar minha senha root. Não quero que nenhum usuário sudo execute este comando:

sudo passwd $root

Eu tentei no arquivo sudoers usando o seguinte comando:

%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root

Como posso bloqueá-lo?

Magesh Arumugam
fonte
Você quer dizer que você tem mais de um usuário com capacidade de sudo em seu sistema? Ou alguma outra coisa? Por favor, edite a pergunta para fornecer novas informações.
21714 Edwin

Respostas:

15

De acordo com o manual do sudoers :

   It is generally not effective to "subtract" commands from ALL using the
   ’!’ operator.  A user can trivially circumvent this by copying the
   desired command to a different name and then executing that.  For
   example:

       bill        ALL = ALL, !SU, !SHELLS

   Doesn’t really prevent bill from running the commands listed in SU or
   SHELLS since he can simply copy those commands to a different name, or
   use a shell escape from an editor or other program.  Therefore, these
   kind of restrictions should be considered advisory at best (and
   reinforced by policy).

É por isso que sua política de sudoers não funciona.

Se você deseja impedir que o usuário obtenha permissão de root e altere sua senha, tente este procedimento:

  • Supondo que seus sudoers contenham esta diretiva:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • Supondo que seu nome de usuário seja foo, seus grupos são fooe sudo. groupsA saída do comando é:

    foo sudo
    
  • Remover usuário foodo sudogrupo: gpasswd -d foo sudodepois disso, o usuário foonão pode executar nenhum comando com o sudo.

  • Edite o arquivo sudoers. Use este comando:

    sudo visudo -f /etc/sudoers.d/foo
    
  • Defina a foopermissão do usuário , por exemplo:

    foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
    

    Isto significa que o usuário foopode executar qualquer comando no diretório /usr/bin/, exceto passwde sude comando. Nota: Se o usuário fooquiser alterar sua senha, pode executar o passwdcomando sem sudo.

  • Outro exemplo de foopermissão do usuário :

    foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    

    Isso significa que o usuário foopode executar qualquer comando no diretório /usr/bin/e pode alterar a senha de qualquer pessoa, exceto a raiz em TODAS as máquinas.

Você pode definir grupos de comandos, definindo Cmnd_Aliasese criando "níveis de permissões". Você pode encontrar exemplos úteis na seção EXEMPLO do manual do sudoers , e aqui está um link útil sobre como usar sudoers.

Lety
fonte
Eu tive que fazer foo ALL=/usr/bin/*, !/usr/bin/passwdalguma idéia de por que esse é o caso?
clurect
-1

adicione o alias do comando via visudo:

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

adicione restrições via visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

adicione usuário ao grupo chamado nopasswdgroup:

usermod -aG nopasswdgroup nopasswduser
shcherbak
fonte