12장. sudo 액세스 관리
시스템 관리자는 루트가 아닌 사용자가 일반적으로 root 사용자로 예약된 관리 명령을 실행할 수 있도록 sudo
액세스 권한을 부여할 수 있습니다. 결과적으로 루트가 아닌 사용자는 root 사용자 계정에 로그인하지 않고 이러한 명령을 실행할 수 있습니다.
12.1. sudoers의 사용자 권한 부여
/etc/sudoers
파일은 sudo
명령을 사용하여 다른 명령을 실행할 수 있는 사용자를 지정합니다. 규칙은 개별 사용자 및 사용자 그룹에 적용할 수 있습니다. 별칭을 사용하여 호스트 그룹, 명령 및 사용자도 더 쉽게 정의할 수도 있습니다. 기본 별칭은 /etc/sudoers
파일의 첫 번째 부분에서 정의됩니다.
사용자가 권한이 없는 sudo
를 사용하여 명령을 입력하면 시스템은 < username > : 사용자가 저널 로그에 대한 sudoers에 없는
메시지를 기록합니다.
기본 /etc/sudoers
파일은 권한 부여의 정보와 예를 제공합니다. 해당 행의 주석을 제거하여 특정 예제 규칙을 활성화할 수 있습니다. 사용자 권한 부여 섹션은 다음 도입으로 표시됩니다.
## Next comes the main part: which users can run what software on ## which machines (the sudoers file can be shared between multiple ## systems).
다음 형식을 사용하여 새 sudoers
권한을 생성하고 기존 권한 부여를 수정할 수 있습니다.
<username> <hostname.example.com>=(<run_as_user>:<run_as_group>) <path/to/command>
다음과 같습니다.
-
<username
>은 명령을 입력하는 사용자입니다(예:user1
). 값이%
로 시작되면 그룹을 정의합니다(예:%group1
). -
<hostname.example.com
>은 규칙이 적용되는 호스트의 이름입니다. -
섹션
(<run_as_user > : <run_as_group> )
은 명령이 실행되는 사용자 또는 그룹을 정의합니다. 이 섹션을 생략하면 <username>
에서 root로 명령을 실행할 수 있습니다. -
<path/to/command
>는 명령의 전체 절대 경로입니다. 명령 경로 뒤에 해당 옵션을 추가하여 특정 옵션 및 인수가 있는 명령만 수행하도록 사용자를 제한할 수도 있습니다. 옵션을 지정하지 않으면 사용자는 모든 옵션과 함께 명령을 사용할 수 있습니다.
이러한 변수를 ALL
로 교체하여 모든 사용자, 호스트 또는 명령에 규칙을 적용할 수 있습니다.
ALL =(ALL) ALL
과 같은 과도하게 허용 가능한 규칙을 사용하면 모든 사용자가 모든 호스트에서 모든 사용자로 모든 명령을 실행할 수 있습니다. 이는 심각한 보안 위험을 초래합니다.
!
연산자를 사용하여 인수를 부정적인 방식으로 지정할 수 있습니다. 예를 들어 !root
는 root를 제외한 모든 사용자를 지정합니다. 특정 사용자, 그룹 및 명령을 허용하는 것은 특정 사용자, 그룹 및 명령을 허용하지 않는 것보다 안전합니다. 이는 규칙이 권한이 없는 새 사용자 또는 그룹도 차단하기 때문입니다.
사용자가 alias
명령으로 명령 이름을 변경하여 이러한 규칙을 극복할 수 있으므로 명령에 음수 규칙을 사용하지 마십시오.
시스템은 /etc/sudoers
파일을 처음부터 끝까지 읽습니다. 따라서 파일에 사용자의 여러 항목이 포함된 경우 항목이 순서대로 적용됩니다. 값이 충돌하는 경우 시스템은 가장 구체적인 일치 항목이 아니어도 마지막 일치 항목을 사용합니다.
시스템 업데이트 중 규칙을 유지하고 오류를 보다 쉽게 수정하려면 /etc/sudoers.d/
디렉터리에 새 파일을 /etc/sudoers
파일에 직접 입력하는 대신 새 규칙을 입력합니다. /etc/sudoers.d
디렉터리에서 /etc/sudoers 파일의 다음 행에 도달하면 시스템이 /etc/sudoers
.d 디렉토리의 파일을 읽습니다.
#includedir /etc/sudoers.d
이 줄의 시작 부분에 있는 숫자 기호(#
)는 구문의 일부이며 행이 주석임을 의미하지는 않습니다. 해당 디렉터리의 파일 이름은 마침표를 포함하지 않아야 하며 틸드(~
)로 끝나지 않아야 합니다.
추가 리소스
-
sudo(8)
및sudoers(5)
도움말 페이지