(Originalmente publicado no Stack Overflow. Eles sugeriram que eu tente aqui. Aqui está o post original: /programming/3858208/sudo-is-there-a-command-to-check-if-i-haha -sudo-e-ou-quanto-tempo-resta )
Veja o título. Eu quero um comando que me permita consultar o sudo. Idealmente, ele retornaria sucesso se eu ainda tiver sudo e false se o sudo tiver expirado. Obter o tempo restante também pode ser útil (embora, se eu estivesse preocupado, pudesse executar o sudo -v para revalidar.) Ah, e não deveria ser necessário solicitar uma senha.
A coisa mais próxima que encontrei é "sudo -n true", mas a opção -n está presente apenas na minha máquina Centos 5 no trabalho. -n falha se for necessário solicitar uma senha. Existe alguma outra maneira de obter essa funcionalidade? Suponha que eu não tenha root em todas as máquinas com as quais trabalho, então não consigo instalar novas versões do sudo ao meu gosto.
Pelo que vale a pena, estou fazendo isso para que eu possa receber minha solicitação para indicar o status do sudo. Eu gosto de saber quais terminais estão ativamente sudo-capazes. Também tenho um prompt que muda de cor quando sou root, mas não o uso com muita frequência, por isso é de uso limitado.
Eu sei que essa é uma pergunta muito antiga, mas aqui estou eu em um script hoje:
fonte
O comando abaixo mostrará uma indicação colorida que você concedeu ao sudo, então lembre-se de fazer um
sudo -k
antes de sair da máquina. É útil também em terminais não coloridos.Como podemos ter o sudo ativo e inativo em diferentes sessões de terminal, eu criei isso para você colocar no final do seu ~ / .bashrc
No tipo de terminal
bash
para testá-lo. Ele também adicionará uma linha inteira toda vez que você executar um comando, com as informações da hora em que o último comando terminou, para que você possa almoçar e saber quando o último comando terminou :).Você pode jogar com esse código para atender às suas necessidades. Também existe a variável PS1 (que é a linha única de prompt pequeno), mas acho que é melhor não mexer nela.
PS .: para OS-X, procure o comentário abaixo de @nwinkler.
fonte
sudo -n
não parece trabalho no OS X. Veja a minha pergunta aqui: superuser.com/questions/902826/...sudo -n
: você acredita que poderia haver outro teste que pudesse ser usado para determinar se o usuário tem acesso ao sudo ativo? ou talvez o OS-X exija alguma atualização? Eu nunca usei o OS-X btw.sudo -n
no BSD (no qual o OS X se baseia) tenha um comportamento diferente da versão do GNU. Acabei de adicionar meu comentário para que as pessoas saibam que esta versão da verificação não parece funcionar no OS X. Eu usei uma verificação de outra resposta (sudo -n uptime 2>&1|grep "load"|wc -l
) e isso parece funcionar bem no OS X. Não é tão elegante, mas funciona.sudo -n
se torna buggy sudo -V 1.7.9Para simplificar a resposta dada por @ wags007
No entanto, se em sua https://www.sudo.ws/man/1.8.15/sudoers.man.html sua configuração
defaults mail_badpass
, será enviado um email para cada teste que resultar em falso (teria solicitado). Para evitar esse incômodo, altere a parte do arquivo de sudoers paraComo resultado, os e-mails de alerta de segurança são enviados para todos os comandos, exceto / bin / true. Bem, sim, agora alguém poderia tentar forçar brutalmente uma senha chamando
sudo true
um número ilimitado de vezes sem que nenhum email de alerta de segurança fosse enviado.Nota: Sempre use em
visudo
vez do seu editor favorito para editar o arquivo sudoers. Caso contrário, você corre o risco de ser bloqueado.fonte
De acordo com o manual do sudo, a sessão do sudo é determinada de acordo com o arquivo de carimbo de data / hora (
/usr/lib/sudo/<username>
), para que você possa descobrir quanto tempo resta verificando a data / hora do arquivo de carimbo de hora. No entanto, no meu sistema, o arquivo de registro de data e hora é, de fato, um diretório, e há três arquivos com conteúdo enigmático (e também alguns/usr/lib/sudo/<username>
registros de data e hora estranhos, mas parecia ter um registro de data e hora que coincidia com o horário em que forneci minha senha ao sudo Acho que/usr/lib/sudo/<username>/0
tem o carimbo de hora dasudo
execução mais recente .fonte
Atenção
De acordo com o Bugzilla sudo Bug ID = 590, a chamada
sudo -n true 2&>/dev/null ; echo $?
se tornará bugs por aísudo -V 1.7.10
Leia o Bugzilla [aqui] ( http://bugzilla.sudo.ws/show_bug.cgi?id=590 "Bug ID = 590")
fonte
Pelo menos no sudo 1.8.21p2, essa abordagem funciona bem:
fonte
Provavelmente, esse é um exagero extremo para o padrão da maioria das pessoas, mas aqui está a função (posixly correta) que eu uso para verificar se
sudo
está desbloqueada (a função não perderá tempo se o usuário estiver executandoroot
, pois não há necessidade de desbloquearsudo
):fonte
resposta simples ...
fonte
E a página do manual
Liste seus comandos disponíveis:
O próprio sudo não tem limites de data ou hora ... veja:
fonte