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 -q
0이 반환됩니다. sudo -l
그렇지 않으면 실행이 불가능하거나 sudo
심지어 허용되지도 않습니다.