내가 sudoer인지 어떻게 알 수 있나요?

내가 sudoer인지 어떻게 알 수 있나요?

sudoer가 없으면 Linux 시스템은 어떻게 작동합니까? sudo를 사용하려고 하면 다음과 같은 일이 발생합니다.

server:/tmp>$ sudo cal
[sudo] password for user:
Sorry, try again.

제가 비밀번호를 모르기 때문일까요, 아니면 제가 sudoer가 아니라는 뜻일까요? (다른 컴퓨터에서는 시스템이 내가 sudoer가 아니라고 인쇄하고 이벤트가 보고됩니다.)

답변1

특정 사용자에게 sudo 액세스 권한이 있는지 확인하려면 -l-U옵션을 함께 사용할 수 있습니다.

예를 들어,

사용자에게 sudo 액세스 권한이 있으면 해당 특정 사용자에 대한 sudo 액세스 수준이 인쇄됩니다.

   $ sudo -l -U pradeep
     User pradeep may run the following commands on this host:
     (ALL : ALL) ALL

사용자에게 sudo 액세스 권한이 없으면 사용자가 localhost에서 sudo를 실행할 수 없다는 메시지가 인쇄됩니다.

   $ sudo -l -U pradeep.c
     User pradeep.c is not allowed to run sudo on localhost.

답변2

-l플래그를 사용하여 권한을 나열할 수 있습니다.

-l[l] [command]
   If no command is specified, the -l (list) option will list the allowed (and forbidden)
   commands for the invoking user (or the user specified by the -U option) on the current
   host.  If a command is specified and is permitted by sudoers, the fully-qualified path
   to the command is displayed along with any command line arguments.  If command is
   specified but not allowed, sudo will exit with a status value of 1.  If the -l option
   is specified with an l argument (i.e. -ll), or if -l is specified multiple times, a
   longer list format is used.

해당 파일에 없으면 다른 컴퓨터에 표시되는 "sudoers 파일에 없음" 오류가 발생해야 합니다.

답변3

다음 명령을 사용하여 sudo 그룹에 있는지 확인할 수 있습니다.

groups

쉘 스크립트에서는 다음을 사용해야 할 수도 있습니다.

if groups | grep "\<sudo\>" &> /dev/null; then
   echo yes
else
   echo no
fi

답변4

사용자에게 스크립트에 대한 sudo 권한이 있는지 확인해야 하는데 가끔 테스트 중인 사용자가 실행조차 허용되지 않는 경우가 있습니다.sudo -l

그래서 저는 다음과 같은 기능을 만들었습니다.

check_if_user_has_sudo(){
  sudo -l -U $USER | grep -q 'may run the following' \
      && <has sudo privileges> \
      || <doesn't have sudo privileges> 
}

기본적으로 유효한지 확인 sudo -l하고 사용자가 허용되면 실제로 인쇄합니다.

인쇄 사용자 il이 모든 명령을 실행하도록 허용된 경우 grep -q0이 반환됩니다. sudo -l그렇지 않으면 실행이 불가능하거나 sudo심지어 허용되지도 않습니다.

관련 정보