Red Hat Training

A Red Hat training course is available for RHEL 8

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) 매뉴얼 페이지