이런 실수는 매우 위험한 일이라는 점을 고려하면 이에 대한 명확한 답변이 필요하다고 생각합니다. sudoer에서 ALL을 사용하는 것에 대한 다른 답변이 많이 있지만 이 질문에 직접적으로 답변하지는 않습니다.
ALL은 그룹의 사용자를 참조합니까? ALL은 Cmnd_Alias[es]에 대한 액세스를 참조합니까? 아니면 행의 위치에 따라 둘 중 하나 또는 둘 다를 참조할 수 있습니까?
예를 들어, 이와 같은 그룹은 해당 그룹의 사용자에게 액세스 권한이 있음을 REGULARUSER ALL=(ALL) NOPASSWD: SHUTDOWN
의미합니다 .ALL
REGULARUSER
Cmnd_Alias
SHUTDOWN
즉, 문법은 다음과 같습니다. Group \ Users \ Command Permission Specifications.
이것이 맞습니까?
즉, ALL
루트와 같은 인스턴스에서 ALL을 사용하여 그룹의 모든 사용자에게 모든 권한을 부여할 수 있으므로 사용자 그룹에 대해 ALL=(ALL:ALL) ALL root
사용에 대한 다른 질문ALL
sudoers 파일에서 "modernNeo ALL=(ALL:ALL) ALL"과 "modernNeo ALL=(ALL) ALL"의 차이점을 이해하려고 합니다.
"ALL ALL=(ALL) NOPASSWD:ALL"이 /etc/sudoers 파일에 자동으로 추가되었습니다. 이것이 보안 취약점입니까?
답변1
~에서맨페이지:
예약어모두내장되어 있습니다별명이는 항상 성공적인 일치로 이어집니다.
Cmnd_Alias
,User_Alias
,Runas_Alias
또는 가 사용될 수 있는 모든 위치에서 사용할 수 있습니다Host_Alias
.
따라서 상황에 따라 모든 명령, 모든 사용자 또는 그룹, 모든 사용자 또는 그룹 또는 모든 호스트가 될 수 있습니다.
예를 들어, 이와 같은 그룹은 해당 그룹의 사용자에게 액세스 권한이 있음을
REGULARUSER ALL=(ALL) NOPASSWD: SHUTDOWN
의미합니다 .ALL
REGULARUSER
Cmnd_Alias SHUTDOWN
ALL
예, 하지만 "모든 사용자"는 규칙에 아무 것도 없기 때문에 그렇지 않습니다 . 첫 번째 ALL
가 타겟이고 Host_Alias
, 두 번째가 ALL
타겟입니다 Runas_Alias
. 이 때문입니다User_List
Runas_List
그룹을 포함할 수 있습니다 .:
A는
User_List
하나 이상의 사용자 이름, 사용자 ID(#
접두사 ' '), 시스템 그룹 이름 및 ID( 각각 '%
' 및 ' '%#
접두사 ), 네트워크 그룹(+
접두사 ' '), 비 Unix 그룹 이름으로 구성됩니다. ID( 각각 "%:
" 및 " "%:#
접두사가 붙음 ) 및User_Aliases
.
그리고:
A는 를 포함할 수 있다는 점을 제외
Runas_List
하면 와 같습니다 .User_List
User_Aliases
Runas_Aliases
그룹이 포함된다는 것은 User_list
부정을 통해 특정 멤버를 제외하지 않는 한 그룹의 모든 멤버를 의미합니다.
즉, 구문은 다음과 같습니다
Group \ Users \ Command Permission Specifications
.
별말씀을요. 바라보다EBNF 구문을 설명하는 매뉴얼 페이지, 그러나 대략적으로는 다음과 같습니다.
<user_list> <host_list> = (<runas_list>) <tags> <commands>
또는 맨페이지에서 다음을 수행하세요.
사용자 지정의 기본 구조는 "who where=(as_whom)what"입니다.