사용자 입력 없이도 sudo 권한이있는 사용자인지 테스트


12

페이로드를 전달하기 전에 원격 호스트에서 여러 테스트를 수행하는 로컬 셸 스크립트가 있습니다. 이러한 테스트 중 하나는 사용자에게 sudo 권한이 있는지 여부를 확인하는 것입니다. sudo -v그러나 간단히 확인하면 사용자가 비밀번호를 입력해야합니다. 또한 원격 호스트에는 즉각적인 sudo 시간 초과가있는 것처럼 보이므로 모든 새로운 연결에서 암호 입력이 필요하며 이는 정책으로 변경할 권한이없는 것입니다.

물론 사용자가 특정 그룹의 일부인지 테스트 할 수는 있지만 원격 호스트 구성에는 영향을 미치지 않으므로 사용자 그룹을 가정 할 필요가없는 확인 방법이 있기를 바랍니다. 사용자 입력이 필요하지 않은가?

감사!

업데이트 : 내 의견을 반영하기 위해 테스트에 대한 사용자 상호 작용을 요구하지 않고 사용자가 sudo를 할 수 있는지 여부를 테스트하려고합니다.


사용자가 sudo를 사용할 수 있는지 또는 sudo를 통해 쉘 스크립트를 실행 중인지 확인해야합니까?
Niko SP

그가 가능성이 있는지의 여부. 로컬 스크립트는 나중에 sudo 암호를 입력해야하므로 원격 호스트의 사용자가 sudoer인지 조기에 확인하고 싶습니다.
DanH

내 우분투 상자에서 빠른 검사를 수행하면 sudo -l이 주어졌으며 사용자가 실행할 수있는 명령을 반환합니다. 어쩌면 그것은 올바른 각도입니까?
Niko SP

1
sudo -l비밀번호를 입력하라는 메시지가 표시됩니다.
ThatGraemeGuy

1
Sudo는 tty를 기반으로 캐시하므로 새 세션이 동일한 tty를 제공하면 프롬프트가 표시되지 않을 수 있습니다. sudo -k먼저 실행 해보십시오 .
Mark Wagner

답변:


13

사용자가 암호 없이 sudo 권한 가지고 있는지 여부를 테스트 할 수있는 유일한 방법 입니다.

실행

sudo -n true

만약에 $? 0 인 경우 $? 1이면 사용자에게 비밀번호가 필요합니다.

특정 프로그램에 대한 확인이 필요한 경우 프로그램이 다음 true과 같은 작업을 수행하지 않는 방식으로 프로그램을 변경 하십시오.chmod --help


1
명령 경우이 예비 검출 도움이되지 않습니다 X것입니다 sudo수있는 암호를 입력하지 않고 하고 실수를 실행하지 않고
시도 - 캐치 마침내

3

"root"와 같이 sudo 액세스 권한을 가진 사용자가 한 명인 경우 다른 사용자를 확인할 수 있습니다. 액세스 권한이있는 사용자는 다음을 실행하십시오.

sudo -n -l -U foo 2> & 1 | egrep -c -i "sudo | 알 수없는 사용자를 실행할 수 없습니다"

0을 반환하면 "foo"에 액세스 할 수 있습니다. 그렇지 않으면 sudo 액세스 권한이 없습니다.


3
sudo -n -l cmd현재 사용자에게 cmd에 대한 sudo 액세스 권한이 있는지 간단히 알 수 있습니다. 결과를 테스트하려는 경우.
Philippe A.

1

sudo -l

그것은 당신이 원하는 / 필요한 privs를 가지고 있는지 결정하기에 충분할 것입니다.


1
이것은 여전히 ​​내 시스템 (Ubuntu 16.04)에 비밀번호를 묻습니다.
마리오 빌라스

1

나는 이것이 매우 오래된 질문이라는 것을 알고 있지만 -n(비 대화 형) 플래그와 -v/로 운을 찾았습니다 -l. 그러나 출력을 검사해야합니다.

$ sudo -vn && sudo -ln  #User with cached credentials
User adminuser may run the following commands on computername:
    (ALL) ALL
$ sudo -vn && sudo -ln  #User who _can_ sudo but isn't cached
sudo: a password is required
$ sudo -vn && sudo -ln  #User who can't at all
Sorry, user nonadmin may not run sudo on computername.

출력 리디렉션과 grepping을 사용하면 다음과 같은 결과를 얻을 수 있습니다.

if (sudo -vn && sudo -ln) 2>&1 | grep -v 'may not' > /dev/null; then
  #they're cool
  exit 0 #Or, whatever
fi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.