Ao aplicar sudo
a um comando que realmente não precisa sudo
,
às vezes, não me pede minha senha. Por exemplo sob a minha
$HOME
,sudo ls
.Mas eu lembro que isso serve para algum outro comando, embora eu esqueça qual.
Então, eu queria saber como sudo
decide se deve pedir uma senha, quando recebe um comando que realmente não precisa sudo
? Existe alguma regra para /etc/sudoers
especificar isso?
Meu problema real é que, quando eu uso du
, algumas vezes mostra "permissão negada" para alguns diretórios e outras não, provavelmente porque não tenho permissão em alguns diretórios? Eu me inscrevo sudo
para o du
independentemente, e pensei que seria solicitada uma senha independentemente, mas na verdade não nos meus próprios diretórios.
Respostas:
Em uma configuração típica, o comando é irrelevante. Você precisa digitar sua senha na primeira vez que usar o sudo, e não precisará da sua senha nesse shell específico pelos próximos 15 minutos.
Do ponto de vista do computador, não existe um "comando que precise de sudo". Qualquer usuário pode tentar executar qualquer comando. O resultado pode ser apenas uma mensagem de erro como "Permissão negada" ou "Nenhum arquivo ou diretório", mas sempre é possível executar o comando.
Por exemplo, se você executar
du
em uma árvore de diretórios com conteúdo que você não tem permissão para acessar, obterá erros de permissão. É isso que "permissão negada" significa. Se você executarsudo du
, o sudo será executadodu
como root, para que você não obtenha erros de permissão (esse é o ponto da conta root: root¹ sempre tem permissão). Quando você executasudo du
,du
executa como root esudo
não está envolvido após odu
início. Se o du encontra erros de permissão é completamente irrelevante para o funcionamento do sudo.Existem comandos que precisam do sudo para fazer algo útil . Utilidade é um conceito humano. Você precisa usar o sudo (ou alguns outros métodos para executar o comando como root) se o comando fizer algo útil quando executado como root, mas não quando executado na sua conta.
Se o sudo pede sua senha depende de duas coisas.
authenticate
opção como false e ter uma regra aplicável com aNOPASSWD
tag.timeout
opção). Você precisa ter digitado a senha no mesmo terminal (para que, se você permanecer logado em um terminal, deixe o terminal sem vigilância e use outro terminal, alguém possa 'tty_tickets
¹ quase, mas isso está além do escopo deste segmento.
fonte
sudo
não sabe se o comando solicitado a executar precisa ser executado como outro usuário (normalmente root), tudo que sabe é sua configuração. Isso determina quais usuários têm permissão para executarsudo
, com quais usuários como "destinos" e para quais comandos; Ele também determina se é necessária uma senha, qual e se deve manter um token de autenticação.Se você estiver usando a configuração padrão da Debian, é provável que esta esteja envolvida aqui:
sudo
solicitará sua senha na primeira vez em que você a usar em qualquer terminal, e manterá um token de autenticação por um certo período de tempo. Se você reutilizarsudo
no mesmo terminal dentro desse prazo, não solicitará uma senha.fonte
sudo du /path/to/some/dir
sempre deve precisar da minha senha ou nunca, independentemente/path/to/some/dir
?/etc/sudoers
pode especificar comandos e seus argumentos. No entanto, se você não adicionou algo assim asudoers
(e, se tiver, espero que esteja ciente disso), os argumentos não importam (nem o comando se você tiver acesso geral ao root viasudo
).sudo
não armazena sua senha no cache, apenas as informações de que sua identidade já foi verificada uma vez com uma verificação de senha. Comosudo
é um programa raiz setuid, ele já tem todas as permissões necessárias para executar qualquer coisa como qualquer um - mas é confiável permitir apenas que os usuários o usem exatamente como especificado nosudoers
arquivo e rejeitar todas as outras tentativas de usá-lo . Por isso é importante quesudo
seja um programa tão pequeno e muito bem estudado.Não é que um comando precise ou não precise de sudo. Quando você corre
o sistema executa
command
como ouser
.Se a chamada é bem-sucedida ou não, e se uma senha é solicitada ou não, depende da política de segurança
sudoers
(geralmente configurada em/etc/sudoers
).fonte