所以,现在我已经发现.ssh
文件需要ssh_home_t
文件上下文,现在我需要弄清楚如何嵌套 SELinux 规则。
我的第一个问题是我找不到任何描述其预期用途的 SELinux 文件上下文列表。所以,我可能要离开这里了。我认为我需要按顺序做三件事:
- 将每个目录匹配设置
/exports/home/$USER
为nfs_t
没有还匹配$USER
.这告诉我的 NFS 服务器主目录可以合法导出。 - 将所有内容设置
/exports/home/$USER/.*
为...某事?这是带有描述的综合列表会很方便的地方。 SELinux 是否有一个文件上下文,通常指定用户主目录中的文件? - 设置一切匹配
/exports/home/$USER/\.ssh(/.*)
仅有的到ssh_home_t
,这样SSHD就可以允许使用了authorized_keys
。
我需要从 NFS 服务器调用所有三个规则。而且,我需要调用第二条和第三条规则作为个人用户从安装主目录的任何主机上访问该单个用户的文件。因为,显然我希望,我会在安装这些主目录之一的任何主机上压缩根目录。用户很可能从非 NFS 服务器的主机创建文件,包括 ssh 文件。
更新
我想我已经找到了正确的文件上下文。现在,我只需要找出正确的正则表达式。
# semanage fcontext -a nfs_t '<regexp 1>'
# semanage fcontext -a user_home_t '<regexp 2>'
# semanage fcontext -a ssh_home_t '<regexp 3>'
在哪里
<regexp 1>
抓住/exports/home/$USER
并且不再继续。<regexp 2>
捕获物/exports/home/$USER\.*
除了exports/home/$USER/\.ssh(/.*)?
。<regexp 3>
捕获exports/home/$USER/\.ssh(/.*)?
。
并且$USER
与字符串无关(即任何用户),并且POSIX 扩展正则表达式似乎是不允许的。
答案1
一个简单的、令人震惊的答案:
SELinux 已经有一个默认规则“/export/home/*”。只要去掉“s”,我就被修复了。