
我希望每个用户通过 SFTP 连接仅访问其特定的主目录。
结构示例:
admin1 access to: /var/www/vhosts/vhost1
(optional)editor1 access to: /var/www/vhosts/vhost1/public
admin2 access to: /var/www/vhosts/vhost2
(optional)editor2 access to: /var/www/vhosts/vhost2/public
etc...
...`
答案1
也许你指的是监狱,将限制特定用户的文件夹。
我会尝试恢复配置示例:
1)环境准备
您需要执行一些步骤来准备 Jail 环境。我们必须尊重 SSH 施加的一些安全限制(如果您愿意,您可以禁用它们,但这确实是一个坏主意!)。
- 监狱文件夹必须为 root 所有
- 监狱fodler 不能被群组/其他人写入
.ssh/
文件夹必须有模式 700authorized_keys
文件必须具有模式 600
假设您有一个用户,其用户名是echoes
,其主目录是/home/echoes/
,并且假设我们要将其限制在自己的主目录中。正如您所说,假设我们想要使用具有公钥授权机制的 SFTP 帐户。
mkdir /home/echoes/.ssh
# write echoes public-key into /home/echoes/.ssh/authorized_keys
chown root /home/echoes/
chmod 755 /home/echoes/
chown -R echoes:echoes /home/echoes/.ssh/
chmod 700 /home/echoes/.ssh/
chmod 600 /home/echoes/.ssh/authorized_keys
2)SSH 配置
现在我们需要匹配用户并将其限制在其自己的主目录中。那么,让我们打开 SSH 服务器配置文件:
vim /etc/ssh/sshd_config
启用internal-sftp
管理 sftp 连接:
Subsystem sftp internal-sftp
将以下行复制粘贴到sshd_config
配置文件中。我们是说:当您匹配 时echoes
,只需将其移动到由ChrootDirectory
(本例中是其唯一的主文件夹)定义的文件夹中。
Match user echoes
ChrootDirectory /home/echoes/
ForceCommand internal-sftp
3)允许在子文件夹内进行写入操作
如您所见,主文件夹用户现在由 root 拥有,因此echoes
将无法向其中写入一些文件。因此,您可以创建一个新的子文件夹(即echoes-write
),允许用户在其中写入:
mkdir /home/echoes/echoes-write/
chown echoes:echoes /home/echoes/echoes-write/
chmod ug+w /home/echoes/echoes-write/
4)自动移动到自己的可写文件夹中
如果您需要自动:
匹配用户 -> 将其移动到 Jail -> 自动将其移动到其自己 Jail 的可写子文件夹中,请告诉我,我将尝试以配置步骤恢复该场景。
由于您没有写有关您的系统的信息,因此我做了很多假设。