SELinux 阻止无密码 SSH 登录

SELinux 阻止无密码 SSH 登录

我想/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_keyssshd_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,它没有自动创建上下文。

相关内容