Teste se um usuário tem privilégios sudo sem requerer entrada do usuário

12

Eu tenho um script de shell local que realiza vários testes em um host remoto, antes de entregar a carga útil; Um desses testes é se o usuário tem privilégios sudo, verificado com sudo -v , mas isso requer que o usuário insira sua senha. Além disso, o host remoto parece ter tempo limite de sudo instantâneo, portanto, a entrada de senha é necessária em cada nova conexão, e isso é algo que eu não tenho permissão para alterar (como uma política).

É claro que posso testar se o usuário faz parte de determinados grupos, mas isso não seria agnóstico para a configuração do host remoto, portanto, esperava que houvesse um método que pudesse verificar se não era necessário assumir os grupos do usuário , além de não precisar de entrada do usuário?

Obrigado!

UPDATE: Para ecoar meus comentários, eu quero apenas testar se um usuário pode possivelmente sudo, sem exigir interação do usuário para esse teste.

    
por DanH 28.02.2012 / 03:14

3 respostas

11

Eu tenho medo que a única coisa que você pode testar é se o usuário tem privilégios sudo sem uma senha.

Executar

sudo -n true

Se $? é 0, o usuário tem acesso sudo sem senha, se $? é 1, o usuário precisa de uma senha.

Se você precisar de verificação para um programa específico, altere true com seu programa, de forma que o programa não faça nada, como chmod --help

    
por 06.03.2012 / 19:04
3

Se você tiver um usuário com acesso 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 o sudo | usuário desconhecido"

Se ele retornar zero, "foo" terá acesso. Caso contrário, não tem acesso ao sudo.

    
por 27.08.2014 / 23:38
1

sudo -l

Isso deve lhe dar o suficiente para decidir se você tem os privs que deseja / precisa.

    
por 27.08.2014 / 23:46

Tags