CentOS 서버에서 사용자를 인증하기 위해 SSSD를 사용하고 있습니다. oddjobd-mkhomedir은 기본 홈 디렉터리가 /home일 때 완벽하게 작동하지만 특정 서버에서는 기본 홈 디렉터리를 SAN 마운트에 있는 /data로 변경해야 했습니다.
이제 사용자가 로그인을 시도할 때마다 다음 메시지와 함께 bash 쉘에 드롭됩니다.
Creating home directory for first.last.
Could not chdir to home directory /data/X.Y.local/first.last: No such file or directory
-bash-4.1$
모든 시도에 대해 다음 AVC 거부 메시지가 표시됩니다.
type=AVC msg=audit(1492004159.114:1428): avc: denied { create } for pid=2832
comm="mkhomedir" name="x.y.local"
scontext=system_u:system_r:oddjob_mkhomedir_t:s0-s0:c0.c1023
tcontext=system_u:object_r:default_t:s0 tclass=dir
/data에 대한 컨텍스트를 변경했는지 확인하십시오.
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 data
/data가 /home과 동일한 컨텍스트를 갖는 경우 SELinux가 이상한 작업이 /data/XYlocal/first.last를 생성하도록 제한하는 이유는 무엇입니까?
# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
[업데이트]
이것이 이 문제를 해결하는 올바른 방법인지 확실하지 않지만 다음 세 가지 항목을 추가하면 사용자는 이제 로그인하여 홈 디렉터리에 액세스할 수 있습니다. 새로운 사용자의 디렉토리는 아래에 정의된 컨텍스트를 기반으로 생성됩니다.
semanage fcontext -a -t home_root_t /data
semanage fcontext -a -t user_home_dir_t /data/x.y.local
semanage fcontext -a -t user_home_t "/data/x.y.local(/.*)?"
이 문제를 해결하는 올바른 방법입니까?
답변1
마지막 섹션은 semanage fcontext
컨텍스트를 영구적으로 yes로 설정하는 올바른 방법입니다. restorecon
하지만 적용하려면 실행해야 합니다 .
restorecon -Rv /data
restorecon
/etc/selinux/targeted/contexts/files/file_contexts.local
방금 다음을 사용하여 추가한 사용자 정의 fcontext가 있어야 하는 의 모든 항목을 고려합니다.semanage
이러한 컨텍스트를 임시로 설정하려면 다음 명령을 참조하십시오 chcon
.
chcon -Rv -t home_root_t /data
답변2
semanage fcontext
홈 디렉토리를 재배치할 때 가장 좋은 해결책은 아마도 다음에 설명된 EQUAL 메커니즘을 사용하는 것입니다.서버 결함에 대한 이 답변:
semanage fcontext -a -e /home /data
이는 원래 홈 위치의 모든 규칙이 새 홈 위치에도 적용되도록 하기 위한 것입니다.