我想/var/git
使用连接我为 git 创建的用户帐户authorized_keys
。但是,SELinux 通过以下 AVC 消息阻止了此操作
SELinux is preventing sshd(sshd_t) "read" var_t
我是 SELinux 管理新手,但我知道此消息表明 sshd 不允许读取 下的任何内容/var
。我该如何重新标记以允许它访问/var/git
?(不将 sshd 置于宽容模式)
我尝试过将其标记/var/git/.ssh/authorized_keys
为sshd_key_t
,但是没有效果。提前致谢!
答案1
我没有使用 Git,所以我可能错了,但如果我理解你的问题,你可能完全是手动创建用户(即编辑 /etc/passwd),没有让系统知道 /var/git 是用户主目录。它通常将相关目录放在 /etc/selinux/targeted/contexts/files/file_contexts.homedirs 中。例如,我有相同的设置,但使用 /Var/svn,使用 useradd 添加,以下是该文件的摘录,自动添加:
#
# Home Context for user unconfined_u
#
/var/svn/[^/]*/.+ system_u:object_r:user_home_t:s0
/var/svn/[^/]*/.pulse(/.*)? system_u:object_r:gnome_home_t:s0
/var/svn/[^/]*/.gnome2(/.*)? system_u:object_r:gnome_home_t:s0
/var/svn/[^/]*/.*/plugins/nppdf\.so -- system_u:object_r:textrel_shlib_t:s0
/var/svn/[^/]*/.*/plugins/nppdf\.so.* -- system_u:object_r:textrel_shlib_t:s0
/var/svn/[^/]*/((www)|(web)|(public_html)|(public_git))(/.+)? system_u:object_r:httpd_user_content_t:s0
/var/svn/[^/]*/\.ssh(/.*)? system_u:object_r:ssh_home_t:s0
(继续)
一旦设置完成,简单的 restorecon -Rv /var/git 就可以了。
答案2
.ssh
这也可以通过创建具有上下文的目录来解决ssh_home_t
。
例如
context directory
home_root_t /customhome
user_home_dir_t /customhome/user
ssh_home_t /customhome/user/.ssh
ssh_home_t /customhome/user/.ssh/authorized_keys
在 RHEL 上我使用以下命令创建了一个用户:
useradd gitlab --home /app/gitlab
我花了很多时间调试并找出正确的上下文。 audit.log
没有显示太多。我还仔细检查了它/etc/selinux/targeted/contexts/files/file_contexts.homedirs
,它没有自动创建上下文。