내 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와 독립적입니다.