SELinux가 켜져 있으면 루트가 아닌 사용자에게는 su 문제가 발생합니다.

SELinux가 켜져 있으면 루트가 아닌 사용자에게는 su 문제가 발생합니다.

내 RHEL 7.6 서버에 일반 사용자가 있고 SELinux가 꺼져 있으면 su 명령이 제대로 작동합니다. 그러나 SElinux를 켜면 su 명령이 더 이상 작동하지 않습니다. 내가 찾은 PAM 소스에서

#ifndef HELPER_COMPILE
if (geteuid() || SELINUX_ENABLED)
    return PAM_UNIX_RUN_HELPER;
#endif

SELinux가 켜져 있으면 특수 명령을 사용하여 unix_chkpwd비밀번호를 확인하세요. 이 명령에는 다음과 같은 코드가 있습니다.

user = getuidname(getuid());
/* if the caller specifies the username, verify that user
  matches it */
if (strcmp(user, argv[1])) {
 user = argv[1];
 /* no match -> permanently change to the real user and proceed */
 if (setuid(getuid()) != 0)
   return PAM_AUTH_ERR;

내 경우 user는 일반 사용자 이름이고 argv[1]은 root입니다. 이 경우 setuid는 일반 사용자의 uid에 대해 실행됩니다. 왜 이런 일이 일어나는지 아십니까? SELinux가 켜져 있을 때 su가 작동하도록 하는 방법이 있습니까?

답변1

내 RHEL 7.9 시스템에서:

semanage login -l | more

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       *

이는 RHEL의 기본 설정입니다. 이를 변경하면 사용자가 그룹 su에 있어도 selinux 적용이 작동하지 않는 상황이 발생합니다. wheel나는 이것이 selinux를 사용하여 su에 허용되어야 하는 올바른 selinux 태그 또는 컨텍스트를 가진 휠 그룹 사용자를 추가하는 방법을 이해하는 것으로 귀결된다고 믿습니다.

다음과 같이 보일 수 있습니다 visudo.

%wheel ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL

이것은 v3r4 stig에서 나온 것이며 이것이 내가 경험한 것입니다.SELinux가 켜져 있으면 루트가 아닌 사용자에게는 su 문제가 발생합니다.이 의미론적 안전 지침을 적용하려고 시도한 후. a를 수행 setenforce 0하고 su예상대로 작동합니다. STIG의 의미를 모르거나 semange명령을 실행한 적이 없다면 이것이 원인이 아닐 수도 있습니다.

이제 RHEL 7에서는 루트가 아닌 사용자가 원할 경우 이 그룹에 가입해야 한다고 생각 su합니다 wheel. /etc/?이 작업을 취소하고 모든 사용자를 허용할 수 있는 파일이 어디에 설정되어 있는지 모르겠습니다 . su그러나 전통적인 단순 측면에서는 휠 그룹의 사용자만 su할 수 있으며 일반적으로 기본적으로 selinux와 독립적입니다.

답변2

관련 정보