Eu concedi uma permissão de grupo para executar determinados comandos sem senha via sudo. Quando um dos usuários digita um erro de digitação ou executa o comando errado, o sistema solicita sua senha e eles recebem um erro. Isso é confuso para o usuário, portanto, gostaria de exibir apenas um erro em vez de solicitar uma senha. Isso é possível?
Aqui está um exemplo do meu arquivo sudoers:
%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *
Exemplo quando eles executam o script errado:
# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.
Saída desejada:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.
Observe a falta de solicitação de senha.
Meu google-fu falhou comigo e só retorna resultados ao não solicitar uma senha quando o usuário tem permissão para executar o comando.
sudo
permitirão que você execute sem digitar sua senha. Com o recurso que você deseja, eu poderia obter essas informações para comandos específicos.sudo
é o mesmo, se os usuários tiverem acesso de gravação a esses arquivos.Respostas:
De uma rápida leitura de
sudo(8)
E para os que duvidam:
Testado assim:
Portanto, uma
alias
açãosudo
para essas pessoas provavelmente faria o truque, para impedir o prompt da senha. Agora, por que isso requer compilação personalizadasudo
, não sei, acabei de ler o manual.fonte
alias sudo="$(which sudo) -n"
em / etc / bashrc e usariasudo
(comportamento ajustado) oucommand sudo
(comportamento padrão) conforme desejado.Uma coisa que funcionou para mim (Sudo versão 1.8.17p1), mas satisfaz apenas parte do seu problema, é definir o número de tentativas de senha como 0.
Isso faz com que o sudo saia com o código 1 quando qualquer comando que requer uma senha é tentado. No entanto, ele não produz nenhum tipo de mensagem de erro.
fonte
Você não pode.
Não há como dizer quem você é até que você tenha se autenticado e, por padrão, não pode se autenticar sem uma senha.
Você pode alterar a autenticação para usar chaves USB, scanners de impressões digitais, autenticação por voz, reconhecimento de rosto ou várias outras coisas, mas o ponto é o mesmo.
Você não pode autenticar, sem autenticar E antes de autenticar o sudo, não é necessário dizer o que você pode ou não executar.
fonte
O @StrongBad fez um comentário que merece ser uma resposta:
Eu acho que a melhor solução seria escrever um script de wrapper que sempre chama
sudo
com os parâmetros corretos. (Incluindo-n
)O script do wrapper pode fazer a análise de argumentos, etc., para que o script sudo chamado fique o menor possível e, portanto, menos propenso a ter erros.
fonte
Isso não é possível. A única maneira é alterar o código-fonte e compilar seu próprio fork
sudo
fonte