O que o serviço sudo faz?

17

Tanto quanto eu sei e parece que outras pessoas têm o mesma opinião sudo é um comando que executa algo com privilégios administrativos.

No entanto, quando executo rcconf , posso ver esta linha:

[*] sudo    Provide limited super user privileges to specific users

Então, qual é o objetivo desse serviço? Ou isso é mesmo um serviço?

    
por s3v3n 12.12.2012 / 14:21

2 respostas

21

Resposta curta

Para revogar as ações de autenticação 'em cache' dos usuários na reinicialização. Não é um daemon, apenas um script executado no momento da inicialização.

Resposta extensa

Ao inspecionar o arquivo init /etc/init.d/sudo que 'inicia o serviço', você pode ver facilmente o que está fazendo:

case "" in
  start)
        # make sure privileges don't persist across reboots
        if [ -d /var/lib/sudo ]
        then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
        fi
        ;;
  stop|reload|restart|force-reload)
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

Então, basicamente, ele apenas toca alguns arquivos em /var/lib/sudo no início do sistema para ter um timestamp de modificação muito antigo. Como resultado, as ações de autenticação concedidas em cache são revogadas no início do serviço (o que acontece na inicialização).

Mais alguns detalhes sobre o diretório /var/lib/sudo e esses carimbos de tempo, por favor? Bem, a partir do mapeamento de sudo(8) :

[...]
Once a user has been authenticated, a time stamp is updated and the
user may then use sudo without a password for a short period of time
(15 minutes unless overridden in sudoers).
[...]
Since time stamp files live in the file system, they can outlive a
user's login session.  As a result, a user may be able to login, run a
command with sudo after authenticating, logout, login again, and run
sudo without authenticating so long as the time stamp file's
modification time is within 15 minutes (or whatever the timeout is set
to in sudoers).
[...]
/var/lib/sudo           Directory containing time stamps
    
por gertvdijk 12.12.2012 / 15:35
12

O arquivo sudo service existe para garantir que os privilégios solicitados não permaneçam após a reinicialização. Basicamente, ele garante que, após a reinicialização, os usuários normais que solicitaram permissões de root permanecerão como usuários normais.

Uma explicação detalhada sobre o sudo

Toda a explicação abaixo é para obter todas as informações para todos que lerem esta questão e, em seguida, explicar o que o arquivo sudo na pasta de serviços está fazendo lá.

Quando você instala o Ubuntu ou qualquer outra distro que usa sudo a diferença entre ser root e ser um usuário que usa sudo para obter privilégios de "root like" (privilégios administrativos ou de superusuário ) é o seguinte:

Como root

  • Você não é solicitado a fornecer uma senha para cada um ou todos os comandos executados em uma sessão
  • Nem todos os comandos que você executa serão registrados por padrão
  • O sistema pressupõe que você sabe o que está fazendo (Razão pela qual ele não solicita uma senha toda vez que você executa um comando)
  • Não há segunda chance ou opção de último minuto se você cometer um erro

Como sudo

  • Você é solicitado a fornecer uma senha para cada um ou todos os comandos executados em uma sessão. Por exemplo, se você abrir um terminal e executar um comando que precise de privilégios administrativos, ele solicitará a senha uma vez para essa sessão até você fechar o terminal ou efetuar logout. Isso varia dependendo de qual comando você usa e onde. Pode perguntar uma vez ou várias vezes.
  • Todos os comandos executados serão registrados, pois você está solicitando permissão para usar um comando privilegiado de superusuário.
  • O sistema assume que você está solicitando permissão temporariamente e o direito administrativo será emprestado temporariamente (até você efetuar logout, fechar terminal, etc.)
  • Você tem uma opção de última hora para corrigir qualquer erro. Isso é feito no momento em que você receber a senha.

Por que o SUDO foi criado

A criação do SUDO foi feita porque, no passado, o uso do root criava mais problemas do que soluções. Os usuários tinham todos os direitos, o que significava que, se fizessem alguma limpeza de primavera e literalmente apagassem as pastas /usr , /lib e /bin (porque achavam que não precisavam delas) ... adivinha o que aconteceria. Muitos problemas no passado foram porque os usuários não sabiam o poder que tinham quando usavam root. Basicamente eles tinham root mas não entendiam o Linux, a hierarquia do sistema de arquivos, quais arquivos eram importantes, etc. (Algo como ter uma ferrari e não saber dirigir ... em uma rodovia!)

O

SUDO também é usado por aplicativos GUI (como o Update Manager) quando eles precisam de privilégios administrativos temporários para fazer algo. Eles só precisam de uma quantidade específica de comandos (Tipicamente 1) e depois retornam ao privilégio de nível de usuário. Isso evita ter privilégios de root o tempo todo e evitar cometer um erro se o usuário decidir remover alguma parte importante do sistema.

Além disso, oferece uma segurança melhor porque o usuário root vem desabilitado por padrão.

Por fim, se você tiver um PC ou Servidor Desktop, realmente não desejará que todos sejam root nem tenha privilégios de administrador. Muito má idéia se sua irmã mais nova ou irmãozinhos começarem a se perguntar o que aconteceria se /boot met DEL key. É aqui que entra sudo para diminuir a chance de acontecer algo ruim.

O que Fornece privilégios de superusuário limitados a usuários específicos significa?

O usuário sudo ou sudoers realmente tem um arquivo de configuração que informa a limitação ou a abertura do comando sudo para um usuário específico. O arquivo /etc/sudoers tem todas as informações para limitar ou dar acesso a um usuário sudo. Por padrão, ele vem com acesso a tudo, mas você pode configurar ou limitar isso como quiser.

Para obter informações sobre como usar o tipo de arquivo sudoers man sudoers em um terminal. Por exemplo, o formato normal é:

HOST DO USUÁRIO = COMANDOS

Por exemplo, cyrex server1 = /bin/ls dará ao usuário cyrex no servidor host1 acesso para executar o comando ls.

Por exemplo, cyrex server1 (root) = /bin/ls dará ao usuário cyrex no servidor host1 acesso para executar o comando ls como root.

Por exemplo, cyrex ALL = /bin/ls dará ao usuário cyrex em todos os hosts acesso para executar o comando ls.

Por exemplo, cyrex ALL = ALL dará ao usuário cyrex em todos os hosts acesso para executar todos os comandos.

Por exemplo, luis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killall permitirá que eu execute o sudo para os comandos kill e killall como root sem solicitar uma senha.

    
por Luis Alvarado 12.12.2012 / 14:58

Tags