我目前正在 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 手册页了解更多信息,然后这里