Sudo pode substituir su?

2

Há muita duplicação de funcionalidade em sistemas baseados em Linux, por exemplo, eles fazem a mesma coisa:

sudo --login --user <user>
sudo su - <user>

A abordagem de sudo apenas parece mais elegante. Pode-se fazer sem su sem quebrar muitas coisas?

    
por Tshepang 06.06.2014 / 10:43

3 respostas

6

Se não estiver errado, há algumas pequenas diferenças entre su e sudo :

  • su apenas permite alterar o id do usuário (para se tornar superusuário, por exemplo).
  • su permite que qualquer usuário que conheça a senha de outro usuário se torne esse usuário, e não há como controlar isso.
  • sudo permite executar um comando como outro usuário (incluindo root).
  • sudo é controlado pelo arquivo /etc/sudoers .

Acho que o objetivo inicial do comando sudo é ter um controle melhor sobre quem pode executar comandos com privilégios de root e quem não pode. Quando você tem um sistema com mais de um administrador, sudo permite executar comandos como root sem precisar da senha de root, que é do meu ponto de vista, mais segura. Em muitas distribuições, o /etc/sudoers permite controlar a lista de usuários ou grupos que podem usar sudo .

    
por 06.06.2014 / 16:56
4

Em uso, sim, o sudo pode substituir completamente o su. Mas há muitos scripts e programas que usam su , portanto não há como removê-lo com segurança. Muitas distribuições do Linux não possuem o sudo pré-instalado. Usar o sudo em um script tornará incompatível com esses sistemas. Como Jernej mencionou em seu comentário, su faz parte do padrão Posix. Isso significa que quando você escreve um script você deve ser capaz de confiar que se você usar su seu script será executado em todos os sistemas operacionais compatíveis com Posix.

Aqui é uma referência.

    
por 06.06.2014 / 11:59
1

sudo fecha todos os descritores de arquivos maiores que >&2 para processos chamados automaticamente - o que pode ser um problema.

A coisa sudoers inteira é mais uma abstração (possivelmente desnecessária) do esquema de permissões estilo Unix% user_do% e testado e requer seu próprio gerenciamento.

Por exemplo, de /etc/passwd :

If executed under sudo(8) growisofs refuses to start. This is done for the following reason. Naturally growisofs has to access the data set to be recorded to DVD media, either indirectly by letting mkisofs generate ISO9660 layout on-the-fly or directly if a pre-mastered image is to be recorded. Being executed under sudo(8), growisofs effectively grants sudoers read access to any file in the file system. The situation is intensified by the fact that growisofs parses $MKISOFS environment variable in order to determine alternative path to mkisofs executable image. This means that being executed under sudo(8), growisofs effectively grants sudoers right to execute program of their choice with elevated privileges. If you for any reason still find the above acceptable and are willing to take the consequences, then consider running following wrapper script under sudo(8) in place for real growisofs binary.

    #!/bin/ksh
    unset SUDO_COMMAND
    export MKISOFS=/path/to/trusted/mkisofs
    exec growisofs "$@"

But note that the recommended alternative to the above "workaround" is actually to install growisofs set-root-uid, in which case it will drop privileges prior accessing data or executing mkisofs in order to preclude unauthorized access to the data.

Pelo menos man growisofs , na verdade, alterna temporariamente os usuários e preserva as permissões no estilo Unix. su , por outro lado, transcende os usuários. Ainda assim, se você lidar adequadamente com isso em sudo /etc/sudoers provavelmente poderá substituir completamente sudo na maioria dos aspectos e fazê-lo convenientemente - com algum custo mínimo para segurança, porque su apresenta a maioria dos mesmos problemas de segurança que su - e talvez alguns dos seus. Eu considero esta uma excelente discussão sobre o assunto.

Mas por que não apenas pular os dois e ...

CTRL + ALT + Fn

login: root

Ou ...

ssh root@localhost

O que aconteceu com root mesmo assim?

    
por 08.06.2014 / 07:18