Eu tenho um script de shell local que executa vários testes em um host remoto, antes de entregar a carga útil; um desses testes é se o usuário possui privilégios de sudo, verificado simplesmente com sudo -v
isso, porém isso exige que o usuário digite sua senha. Além disso, o host remoto parece ter um tempo limite instantâneo no sudo, portanto a entrada da senha é necessária em todas as novas conexões, e isso é algo que não tenho permissão para alterar (como política).
É claro que posso testar se o usuário faz parte de determinados grupos, mas isso não seria independente da configuração do host remoto, então eu esperava que houvesse um método que pudesse verificar que não precisa assumir os grupos de usuários também como não precisar de entrada do usuário?
Obrigado!
ATUALIZAÇÃO: Para repetir meus comentários, quero apenas testar se um usuário pode sudo, sem exigir a interação do usuário para esse teste.
sudo -l
solicita minha senha.sudo -k
primeiro.Respostas:
Receio que a única coisa que você possa testar seja se o usuário tiver privilégios de sudo sem uma senha.
Executar
Se $? é 0, o usuário tem acesso ao sudo sem uma senha, se $? é 1, o usuário precisa de uma senha.
Se você precisar de verificação para um programa específico, mude
true
com o programa, de forma que o programa não faça nada, comochmod --help
fonte
X
ésudo
capaz sem digitar uma senha e sem correr acidentalmente loSe você tiver um usuário com acesso ao sudo, como "root", poderá usá-lo para verificar outros logins. Como o usuário com acesso é executado:
sudo -n -l -U foo 2> & 1 | egrep -c -i "não tem permissão para executar sudo | usuário desconhecido"
Se retornar zero, "foo" terá acesso. Caso contrário, ele não tem acesso ao sudo.
fonte
sudo -n -l cmd
você será informado se o usuário atual tem acesso sudo ao cmd. Se você deseja testar o resultado.Isso deve lhe dar o suficiente para decidir se você tem os privs que deseja / precisa.
fonte
Sei que essa é uma pergunta super antiga, mas achei sorte com a
-n
bandeira (não interativa) e-v
/-l
. Mas, você precisa inspecionar a saída:Alguns redirecionamentos de saída e grepping chegarão lá, provavelmente:
fonte