我正在创建一个具有以下详细信息的新用户:
useradd -d /var/www/html/testuser.com -G users testuser
我继续为用户创建一个新密码,并尝试通过 SSH 登录,我登录到 /var/www/html/testuser.com,但我仍然可以返回目录。我想限制用户权限,以便他们只能管理 testuser.com 和同级目录中的内容(这样他们就可以执行所有正常操作),我不希望用户能够返回目录并有效地获得 root 访问权限。
答案1
用户并不只是因为可以浏览其他目录而“有效地拥有 root 访问权限”。所有具有 shell 访问权限的用户都可以浏览软件安装 — 这毕竟不是机密信息,因为它可以从任意数量的站点下载。如果您不想向所有 shell 用户公开某些目录,请给予他们适当的限制性权限。
如果您想要第二层安全,您可以对帐户进行更多限制。如果您只想允许这些用户浏览、上传和下载 下的文件/var/www/html/testuser.com
,那么就不要给他们 shell 帐户,给他们一个只能使用 SFTP 的受限帐户。您可以在中指定特定帐户的选项sshd_config
与一个Match
块。 (将其放在文件末尾,因为该Match
指令扩展到下一个Match
指令或文件末尾。)
Match User testuser
Force-command internal-sftp
ChrootDirectory /var/www/html/testuser.com
如果您希望允许用户使用更多命令,例如 scp 和 rsync,但不允许一般 shell 访问,请使用RSSH或者斯波利作为其帐户上的 shell,并安装和配置 rssh 或 scponly 以指定您要允许的命令(请参阅SCP 需要外壳吗?)。
如果您想提供一个仅允许运行少数白名单程序的 shell 帐户,请将其 shell 设置为受限外壳。请注意,这些用户将能够根据文件权限访问其主目录之外的文件。
如果您想提供完整的 shell 访问权限,但使除主目录之外的所有内容都不可见,那么您需要创建某种形式的监狱。最弱的监狱形式是chroot监狱,它将用户限制为目录树的一个分支。将用户限制为 chroot 与ChrootDirectory
在 中指定一样简单sshd_config
;但是,由于用户无法退出监狱,因此该目录必须包含用户将使用的所有程序及其数据。您可以使用绑定安装使一些目录(例如/usr
)在监狱内可见。
答案2
看看man 5 sshd_config
这个选项ChrootDirectory
。
答案3
您可以更改权限,/var/www/html
以便只有 root 可以查看/修改文件/文件夹。
喜欢:
chown root:root /var/www/html