如何将 SSH/SFTP 用户限制到 apache 网站的子文件夹?

如何将 SSH/SFTP 用户限制到 apache 网站的子文件夹?

我目前正在 Linux 服务器上设置 apache,需要创建一个可以登录并且只能编辑特定目录中的文件的新用户。

我目前将我的网站设置为

/数据/htdocs/我的网站/

这里的权限是 apache:apache

现在我需要做的是创建一个新用户“joeblogs”,并限制该用户只能访问 /data/htdocs/mywebsite/store/

用户应该能够通过 SSH 和 SFTP 访问,但始终直接指向该文件夹,同时用户应该能够完全访问 /store/ 文件夹,但不能查看系统上的任何其他文件夹或文件/

任何关于此事的帮助都将不胜感激,我已经跑了好几个小时了。

答案1

SSH 具有内置 chroot 用户功能(自 4.9p1 起),但将其用于交互式会话有些困难。

不过,限制 sftp 相当容易,可以针对每个用户或每个组进行配置

Match User joeblogs
    ChrootDirectory /data/htdocs/mywebsite/store/
    ForceCommand internal-sftp
    AllowTcpForwarding no

交互式会话更加复杂,因为用户需要一个shell,以及一些设备文件。

man 5 sshd_config

ChrootDirectory 必须包含支持用户会话所需的文件和目录。对于交互式会话,这至少需要一个 shell(通常是 sh(1))和基本 /dev 节点,例如 null(4)、zero(4)、stdin(4)、stdout(4)、stderr(4)、arandom(4) 和 tty(4) 设备

我不推荐这样做,因为您需要在 chroot 中构建和维护他们需要的任何实用程序的副本。如果您仍想尝试这种方式,可以阅读 sshd_config 手册页了解更多信息,然后这里

相关内容