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
홈 디렉토리를 재배치할 때 가장 좋은 해결책은 아마도 EQUAL 메커니즘을 사용하는 것입니다 semanage fcontext
.서버 오류에 대한 답변입니다.:
semanage fcontext -a -e /home /data
이는 원래 거주지의 모든 규칙이 새 거주지에도 적용되도록 하기 위한 것입니다.