我们正在使用SSSD对CentOS服务器上的用户进行身份验证。当默认主目录为/ home时,oddjobd-mkhomedir可以很好地工作,但是在特定服务器上,我们必须将默认主目录更改为/ data,该目录位于SAN挂载上。
现在,每次用户尝试登录时,他们都会使用以下消息放入bash shell中。
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为什么要限制oddjobd创建/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(/.*)?"
这是解决此问题的正确方法吗?
不知道这是否与您的问题有关,但它过去使我感到悲伤:linux.die.net/man/8/nfs_selinux
—
0xSheepdog