3.3. 제한된 사용자 및 제한되지 않은 사용자


각 Linux 사용자는 SELinux 정책을 사용하여 SELinux 사용자에게 매핑됩니다. 이를 통해 Linux 사용자는 SELinux 사용자에 대한 제한을 상속할 수 있습니다. 이 Linux 사용자 매핑은 semanage login -l 명령을 root로 실행하면 표시됩니다.
~]# semanage login -l

Login Name           SELinux User         MLS/MCS Range        Service

__default__          unconfined_u         s0-s0:c0.c1023       *
root                 unconfined_u         s0-s0:c0.c1023       *
system_u             system_u             s0-s0:c0.c1023       *
Red Hat Enterprise Linux에서 Linux 사용자는 기본적으로 SELinux __default__ 로그인에 매핑되며 SELinux unconfined_u 사용자에게 매핑됩니다. 다음 행은 기본 매핑을 정의합니다.
__default__               unconfined_u              s0-s0:c0.c1023
다음 절차에서는 시스템에 새 Linux 사용자를 추가하는 방법과 해당 사용자를 SELinux unconfined_u 사용자에게 매핑하는 방법을 보여줍니다. root 사용자가 Red Hat Enterprise Linux에서 기본적으로 수행되므로 제한되지 않은 것으로 가정합니다.

절차 3.4. 새 Linux 사용자를 SELinux unconfined_u 사용자에게 매핑

  1. root 로서 다음 명령을 입력하여 newuser:이라는 새 Linux 사용자를 생성합니다.
    ~]# useradd newuser
  2. Linux newuser 사용자에게 암호를 할당하려면 다음을 수행합니다. root로 다음 명령을 입력합니다.
    ~]# passwd newuser
    Changing password for user newuser.
    New UNIX password: Enter a password
    Retype new UNIX password: Enter the same password again
    passwd: all authentication tokens updated successfully.
    
  3. 현재 세션에서 로그아웃한 후 Linux newuser 사용자로 로그인합니다. 로그인할 때 pam_selinux PAM 모듈은 Linux 사용자를 SELinux 사용자(이 경우 unconfined_u)에 자동으로 매핑하고 결과 SELinux 컨텍스트를 설정합니다. 그런 다음 Linux 사용자의 쉘이 이 컨텍스트를 사용하여 시작됩니다. 다음 명령을 입력하여 Linux 사용자의 컨텍스트를 확인합니다.
    [newuser@localhost ~]$ id -Z
    unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    
    참고
    시스템에서 newuser 사용자가 더 이상 필요하지 않은 경우 Linux newuser 's 세션에서 로그아웃하고 계정으로 로그인하여 root로 userdel -r newuser 명령을 실행합니다. newuser 는 홈 디렉토리와 함께 제거됩니다.
제한된 Linux 사용자 및 제한되지 않은 Linux 사용자는 실행 가능하고 쓰기 가능한 메모리 검사의 영향을 받으며 MCS 또는 MLS에도 제한됩니다.
사용 가능한 SELinux 사용자를 나열하려면 다음 명령을 입력합니다.
~]$seinfo -u
Users: 8
   sysadm_u
   system_u
   xguest_u
   root
   guest_u
   staff_u
   user_u
   unconfined_u
seinfo 명령은 기본적으로 설치되지 않는 setools-console 패키지에서 제공합니다.
제한되지 않은 Linux 사용자가 SELinux 정책이 unconfined_t 도메인에서 자체 제한된 도메인으로 전환할 수 있는 애플리케이션으로 정의되는 애플리케이션을 실행하는 경우 제한되지 않은 Linux 사용자에게는 여전히 해당 제한된 도메인의 제한 사항이 적용됩니다. 이 경우의 보안 이점은 Linux 사용자가 제한되지 않고 있는 경우에도 애플리케이션이 제한되어 있다는 것입니다. 따라서 애플리케이션에서 결함을 악용하는 것은 정책에 의해 제한될 수 있습니다.
마찬가지로 제한된 사용자에게 이러한 검사를 적용할 수 있습니다. 제한된 각 Linux 사용자는 제한된 사용자 도메인에 의해 제한됩니다. SELinux 정책은 제한된 사용자 도메인에서 대상 제한 도메인으로의 전환을 정의할 수도 있습니다. 이러한 경우 제한된 Linux 사용자에게는 해당 대상 제한된 도메인의 제한 사항이 적용됩니다. 주요 점은 특별 권한이 역할에 따라 제한된 사용자와 연결되어 있다는 것입니다. 아래 표에서는 Red Hat Enterprise Linux의 Linux 사용자를 위한 기본 제한된 도메인의 예를 확인할 수 있습니다.
Expand
표 3.1. SELinux 사용자 기능
사용자 Role 도메인 X 윈도우 시스템 su 또는 sudo 홈 디렉토리 및 /tmp에서 실행 (기본값) 네트워킹
sysadm_u sysadm_r sysadm_t 제공됨 Su sudo 제공됨 제공됨
staff_u staff_r staff_t 제공됨 sudo 제공됨 제공됨
user_u user_r user_t 제공됨 제공되지 않음 제공됨 제공됨
guest_u guest_r guest_t 제공되지 않음 제공되지 않음 제공됨 제공되지 않음
xguest_u xguest_r xguest_t 제공됨 제공되지 않음 제공됨 Firefox만
  • SELinux 정책에서 허용하는 경우 user_t,guest_t, xguest_t 도메인의 Linux 사용자는 설정된 사용자 ID(setuid) 애플리케이션만 실행할 수 있습니다(예: passwd). 이러한 사용자는 susudo setuid 애플리케이션을 실행할 수 없으므로 이러한 애플리케이션을 사용하여 root가 될 수 없습니다.
  • EgressIP_t ,staff _t ,user_t, xguest_t 도메인의 Linux 사용자는 X Window System 및 터미널을 사용하여 로그인할 수 있습니다.
  • 기본적으로 staff_t,user_t, guest_t , xguest_t 도메인의 Linux 사용자는 홈 디렉터리 및 /tmp 에서 애플리케이션을 실행할 수 있습니다. 사용자의 권한을 상속하는 애플리케이션이 실행되지 않도록 하려면 쓰기 액세스 권한이 있는 디렉터리에서 guest_exec_content 및 x guest_exec_content 부울을 off 로 설정합니다. 이를 통해 결함이 있는 애플리케이션 또는 악성 애플리케이션이 사용자의 파일을 수정하지 못하도록 방지할 수 있습니다.
    사용자가 홈 디렉터리 및 /tmp 에서 애플리케이션을 실행하지 못하도록 허용 및 방지하는 방법에 대한 자세한 내용은 6.6절. “사용자 애플리케이션 실행 부울” 을 참조하십시오.
  • xguest_t 도메인에 있는 유일한 네트워크 액세스 Linux 사용자는 Firefox 가 웹 페이지에 연결하는 것입니다.
system_u 는 시스템 프로세스 및 오브젝트의 특수 사용자 ID입니다. Linux 사용자와 연결하면 안 됩니다. 또한 unconfined_uroot 는 제한되지 않은 사용자입니다. 이러한 이유로 앞서 언급한 SELinux 사용자 기능 테이블에 포함되지 않습니다.
이미 언급한 SELinux 사용자와 함께 해당 사용자에게 매핑할 수 있는 특별한 역할이 있습니다. 이러한 역할은 SELinux에서 사용자가 수행할 수 있는 작업을 결정합니다.
  • webadm_r 는 Apache HTTP 서버와 관련된 SELinux 유형만 관리할 수 있습니다. 자세한 내용은 13.2절. “유형” 을 참조하십시오.
  • dbadm_r 는 MariaDB 데이터베이스 및 PostgreSQL 데이터베이스 관리 시스템과 관련된 SELinux 유형만 관리할 수 있습니다. 자세한 내용은 20.2절. “유형”21.2절. “유형” 을 참조하십시오.
  • logadm_rsyslogauditlog 프로세스와 관련된 SELinux 유형만 관리할 수 있습니다.
  • secadm_r 은 SELinux만 관리할 수 있습니다.
  • audit adm_r 은 감사 하위 시스템과 관련된 프로세스만 관리할 수 있습니다.
사용 가능한 역할을 모두 나열하려면 다음 명령을 입력합니다.
~]$ seinfo -r
앞에서 언급했듯이 seinfo 명령은 기본적으로 설치되지 않은 setools-console 패키지에서 제공합니다.

3.3.1. sudo 전환 및 SELinux 역할

경우에 따라 제한된 사용자는 root 권한이 필요한 관리 작업을 수행해야 합니다. 이렇게 하려면 제한된 사용자가 sudo 명령을 사용하여 제한된 관리자 SELinux 역할을 받아야 합니다. sudo 명령은 신뢰할 수 있는 사용자에게 관리 액세스 권한을 제공하는 데 사용됩니다. 사용자가 sudo 를 사용하여 관리 명령에 우선하면 고유한 암호를 입력하라는 메시지가 표시됩니다. 그런 다음, 인증되고 명령이 허용되었다고 가정하면 root 사용자인 것처럼 관리 명령이 실행됩니다.
표 3.1. “SELinux 사용자 기능” 에 표시된 대로 staff_usysadm_u SELinux 제한 사용자만 기본적으로 sudo 를 사용할 수 있습니다. 이러한 사용자가 sudo 로 명령을 실행하는 경우 /etc/sudoers 구성 파일에 지정된 규칙 또는 이러한 파일이 있는 경우 /etc/ sudoers.d/ 디렉터리의 해당 파일에 따라 해당 역할을 변경할 수 있습니다.

절차 3.5. sudo 전환 구성

다음 절차에서는 default_role_r 에서 administrator_r 관리자 역할로 새로 생성된 SELinux_user_u 제한된 사용자를 전환하도록 sudo 를 설정하는 방법을 보여줍니다.
참고
기존 SELinux 사용자에 대해 제한된 관리자 역할을 구성하려면 처음 두 단계를 건너뜁니다.
  1. 새 SELinux 사용자를 생성하고 이 사용자에 대한 기본 SELinux 역할 및 제한된 관리자 역할을 지정합니다.
    ~]# semanage user -a -r s0-s0:c0.c1023 -R "default_role_r administrator_r" SELinux_user_u
  2. 기본 SElinux 정책 컨텍스트 파일을 설정합니다. 예를 들어 staff_u SELinux 사용자와 동일한 SELinux 규칙을 사용하려면 staff_u 컨텍스트 파일을 복사합니다.
    ~]# cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/SELinux_user_u
  3. 새로 생성된 SELinux 사용자를 기존 Linux 사용자에게 매핑합니다.
    semanage login -a -s SELinux_user_u -rs0:c0.c1023 linux_user
  4. /etc/sudoers.d/ 디렉터리에 Linux 사용자와 동일한 이름으로 새 구성 파일을 생성하고 여기에 다음 문자열을 추가합니다.
    ~]# echo "linux_user ALL=(ALL) TYPE=administrator_t ROLE=administrator_r /bin/bash " > /etc/sudoers.d/linux_user
  5. restorecon 유틸리티를 사용하여 linux_user 홈 디렉터리의 레이블을 다시 지정합니다.
    ~]# restorecon -FR -v /home/linux_user
  6. 새로 생성된 Linux 사용자로 시스템에 로그인하고 사용자가 기본 SELinux 역할로 레이블이 지정되어 있는지 확인합니다.
    ~]$ id -Z
    SELinux_user_u:default_role_r:SELinux_user_t:s0:c0.c1023
  7. sudo 를 실행하여 사용자의 SELinux 컨텍스트를 /etc/sudoers.d/linux_user 에 지정된 대로 보조 SELinux 역할로 변경합니다. sudo 와 함께 사용되는 -i 옵션은 대화형 쉘이 실행되도록 합니다.
    ~]$ sudo -i
    ~]# id -Z
    SELinux_user_u:administrator_r:administrator_t:s0:c0.c1023
default_role_r 또는 administrator_r 와 같은 자리 표시자를 더 잘 이해하려면 다음 예제를 참조하십시오.

예 3.1. sudo 전환 구성

이 예제에서는 기본 역할 staff _r 이 할당된 새 SELinux 사용자 restricted_u 를 생성하고 sudo 를 사용하여 limited _u의 역할을 staff_ r 에서 webadm_r 로 변경하도록 구성됩니다.
  • sysadm_r 또는 unconfined_r 역할의 root 사용자로 다음 명령을 모두 입력합니다.
    ~]# semanage user -a -r s0-s0:c0.c1023 -R "staff_r webadm_r" confined_u
    ~]# cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/confined_u
    ~]# semanage login -a -s confined_u -rs0:c0.c1023 linux_user
    ~]# restorecon -FR -v /home/linux_user
    ~]# echo "linux_user ALL=(ALL) ROLE=webadm_r TYPE=webadm_t /bin/bash " > /etc/sudoers.d/linux_user
  • 새로 생성된 Linux 사용자로 시스템에 로그인하고 사용자가 기본 SELinux 역할로 레이블이 지정되어 있는지 확인합니다.
    ~]$ id -Z
    confined_u:staff_r:staff_t:s0:c0.c1023
    ~]$ sudo -i
    ~]# id -Z
    confined_u:webadm_r:webadm_t:s0:c0.c1023
    
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동