O que o serviço sudo faz?


17

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

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

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

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


Isto é o que eu encontrei ao pesquisar google-> Sudo
adi

"É aqui que o sudo entra - ele permite que usuários autorizados (normalmente usuários" Administrativos "; para mais informações, consulte o AddUsersHowto) executem certos programas como Root sem precisar saber a senha do root." - Foi exatamente o que eu disse na minha pergunta.
S3v3n

3
A questão é sobre o serviço, não o comando
s3v3n 12/12/12

Respostas:


22

Resposta curta

Revogar as ações de autenticação 'armazenadas 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/sudoque 'inicia o serviço', você pode ver facilmente o que ele está fazendo:

case "$1" 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 no /var/lib/sudoinício do sistema para ter um carimbo de data / hora de modificação muito antigo. Como resultado, as ações de autenticação concedida em 'cache' são revogadas no início do serviço (o que acontece na inicialização).

Mais alguns detalhes sobre o /var/lib/sudodiretório e os carimbos de hora, 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

Resposta perfeita :)
s3v3n 12/12/12

12

O sudoarquivo de serviço existe para garantir que os privilégios solicitados não permaneçam após uma reinicialização. Basicamente, 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 é obter todas as informações para todos que lêem essa pergunta e explicar o que o arquivo sudo na pasta de serviço está fazendo lá.

Quando você instala o Ubuntu ou qualquer outra distribuição que use sudoa diferença entre ser root e ser um usuário que usa sudopara obter privilégios de "root like" (privilégios administrativos ou superusuário), é o seguinte:

Como raiz

  • Não é solicitada uma senha para todos ou todos os comandos executados em uma sessão
  • Nem todos os comandos que você executa serão registrados por padrão
  • O sistema assume que você sabe o que está fazendo (razão pela qual não solicita uma senha cada vez que você executa um comando)
  • Não há segunda chance ou opção de última hora 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 sair. Isso varia dependendo do comando que você usa e onde. Pode pedir uma ou várias vezes.
  • Todos os comandos que você executa serão registrados, pois você está realmente pedindo permissão para usar um comando com privilégios de superusuário.
  • O sistema assume que você está pedindo permissão temporariamente e o direito administrativo será emprestado temporariamente (até você sair, fechar o terminal, etc.)
  • Você tem uma opção de última hora para corrigir qualquer erro. Isso é feito no momento em que você solicita a senha.

Por que foi criado o SUDO

A criação do SUDO foi feita porque, no passado, o uso da raiz criava mais problemas do que soluções. Os usuários tinham todos os direitos, o que significava que, se eles fizeram alguma limpeza de primavera e literalmente apagou o /usr, /libe /binpastas (porque eles achavam que não precisava deles) .. adivinhar o que iria acontecer. Muitos problemas no passado eram porque os usuários não sabiam o poder que tinham ao usar o root. Basicamente, eles tinham raiz, mas não entendiam o Linux, a hierarquia do sistema de arquivos, quais arquivos eram importantes etc. (algo como ter um ferrari e não saber dirigir ... em uma rodovia!)

SUDO também é usado por aplicativos da GUI (como o Update Manager) quando eles precisam de privilégios administrativos temporários para fazer alguma coisa. Eles precisam apenas de uma quantidade específica de comandos (normalmente 1) e, em seguida, retornam ao privilégio no nível do usuário. Isso é para evitar privilégios de root o tempo todo e evitar erros, se o usuário decidir remover alguma parte importante do sistema.

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

Por fim, se você possui um PC ou servidor de mesa, não deseja que todos sejam root nem tenham todos os privilégios de administrador. É uma péssima idéia se sua irmã ou irmãozinho começar a se perguntar o que aconteceria se a chave fosse /bootencontrada DEL. É aqui que sudoentra para diminuir a chance de algo ruim acontecer.

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

O usuário ou sudo do sudo realmente possui um arquivo de configuração que informa o quão limitado ou aberto o comando sudo para um usuário específico é. O arquivo /etc/sudoerstem todas as informações para limitar ou conceder acesso a um usuário sudo. Por padrão, ele vem com acesso a tudo, mas você pode configurar ou limitar isso como desejar.

Para obter informações sobre como usar o tipo de arquivo sudoers man sudoersem 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 kille killallcomo root sem solicitar uma senha.

insira a descrição da imagem aqui


2
Ele sabe o que o comando sudo faz. A questão é sobre um serviço de sistema para o sudo.
gertvdijk

1
@gertvdijk - Eu tive que primeiro explicar o básico, já que não apenas ele estará olhando para essa pergunta. A última parte inclui o único motivo que vejo para o arquivo sudo na pasta de serviço.
Luis Alvarado

Obrigado Luis Alvarado - O Wolver por uma informação tão extensa e obrigado pelo engraçado xkcd modificado que faz referência ao !!operador bang bang, mas o que o serviço (NÃO o comando) sudofaz? Seria ótimo se você pudesse atualizar sua resposta para realmente responder à pergunta.
S3v3n

1
Um pouco de exagero explicando tudo isso para apenas uma frase no final, mas responde a minha pergunta;)
s3v3n

1
@ LuisAlvarado-TheWolverine Haha, seu direito. Foi bom você me responder sim, eu respondi .. Obrigado
Lucio
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.