限制 ssh 登录的用户为只读?

限制 ssh 登录的用户为只读?

我正在使用 backuppc 来备份一些主机 - 但我想将该主机上的 backuppc 的 rsync 命令限制为“只读”。

一种选择是获取 rsync 命令并将 backuppcs ssh 密钥限制为该命令。

但是,是否有任何选项可以限制 ssh 密钥的 shell 只执行读取操作?例如,通过强制执行 apparmor/selinux 规则等?

答案1

编写一个 PAM 模块,挂载到使用 unshare() 创建的单独挂载命名空间中pam_sm_open_session,并执行大致相同的操作mount -o rbind,ro / /。仅让 /etc/pam.d/ssh 调用此模块。(类似于 systemd 针对服务的 ProtectSystem=。)

AppArmor 可能有效;可能存在一个现有的 PAM 会话模块,可以通过名称附加 AppArmor 配置文件。再次设置 pam.d/ssh 来调用该模块,可能与 pam_succeed_if.so 结合使用,以便不受限制的用户跳过该模块。

不要授予备份客户端 root 权限;而应仅授予它cap_dac_read_search权限。(同样,通过使用 PAM 会话模块通过 prctl() 或 libcap 来操纵进程“环境功能”。)这将允许客户端像 root 一样绕过文件权限,但是仅有的用于阅读,而不是写作。

答案2

默认情况下,用户只能写入他们的主目录(他们拥有的)、任何具有 777 访问权限的位置(/run/shm/tmp和其他一些地方)以及他们拥有用户所有权的任何其他位置。

如果您创建的仅拥有其主文件夹的用户帐户,那么它自然将只对系统的其余部分具有读取权限(除了上述例外情况)。

相关内容