我已将 FreeIPA 设置为我的网络的 IDM 软件,并成功配置了支持 Kerberos 的 NFS 服务器和支持 Kerberos 的 NFS 客户端。当用户登录到计算机时,NFS 服务器上的用户目录会通过 autofs 自动挂载nfs:/srv/nfs/home/userdir
到/home/userdir
本地计算机上。
我面临的问题是,当我需要在一台计算机上创建本地用户(例如 git 用户)时,我无法作为根用户在 下为 git 用户创建一个新的主目录/home/git
,因为它说useradd: cannot create directory /home/git
我的 auto.home 地图配置如下:* nfs:/srv/nfs/home/&
当我以任何用户身份登录时,只有用户的主目录安装在我的 auto.master 地图下,/home
并且我的 auto.master 地图具有以下条目:/home auto.home
的输出mount
如下:
auto.home on /home type autofs (rw,relatime,fd=6,pgrp=651,timeout=300,minproto=5,maxproto=5,indirect,pipe_ino=15731)
nfs:/srv/nfs/home/userdir on /home/userdir type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,clientaddr=10.110.29.100,local_lock=none,addr=10.110.29.107)
我省略了有关其他文件系统和设备的不必要的信息。
主目录的 getfacl 返回:
file: home
owner: root
group: root
user::rwx
group::r-x
other::r-x
现在,我的问题是,此设置是否会阻止我的本地 root 帐户在我的计算机上创建本地主目录?
答案1
是的,您当前的设置阻止您在...下为本地用户创建本地主目录/home
,因为您已定义/home
为 NFS 挂载点的自动挂载映射。由于 NFS 是 Kerberos 感知的,因此用户至少需要一个 Kerberos 密钥表才能访问 NFS 安装的主目录,并且该密钥表将存储在用户的主目录中。这似乎是一个先有鸡还是先有蛋的问题。
但名为 的本地用户的主目录git
不需要位于 下:例如,/home
它也可以位于 下。/home.local/git
由于您已标记此问题rhel
并且 RHEL 默认情况下使用 SELinux,因此您可能需要知道必须将适当的 SELinux 标签应用于实际的主目录及其父目录。
如果您希望将git
的主目录设置为/home.local/git
,则需要首先准备 SELinux 标签,如下所示:
semanage fcontext -a -t home_root_t -f d /home.local
semanage fcontext -a -t user_home_dir_t -f d '/home.local/[̂^/]+'
semanage fcontext -a -t user_home_t '/home.local/[^/]+/.+'
mkdir /home.local
restorecon -rv /home.local
换句话说,/home.local
will get home_root_t
,紧接其下的每个目录都将 get user_home_dir_t
,所有比该目录更深的文件和目录都将 get user_home_t
。类似的标签规则已经存在于常规/home
.
之后,您可以创建git
用户:
useradd -d /home.local/git -m [any other options] git
或者,如果用户已经存在,只是主目录创建失败,您可以修改其主目录路径并手动创建实际的主目录:
usermod -d /home.local/git git
cp -a /etc/skel /home.local/git
chown -R git: /home.local/git
chmod 700 /home.local/git # or according to requirements