Answers:
Unix系统提供了chroot
允许您/
将用户的用户重置到文件系统层次结构中某个目录的命令,该目录中他们无法访问“上层”文件和目录。
但是,根据您的情况,应该提供一个由远程Shell服务实现的虚拟chroot。sftp可以轻松配置为将本地用户限制为文件系统的特定子集。
因此,在您的情况下,您想让chroot
用户foo
user进入/var/www/vhosts/
目录。
您可以为用户设置chroot目录,以将其限制在子目录中,/var/www/vhosts/
如下所示/etc/ssh/sshd_config
:
foo
用密码创建用户
sudo useradd foo
sudo passwd foo
仅针对SFTP创建组
$ sudo groupadd sftp_users
添加到foo
仅SFTP组的用户
$ sudo usermod -G sftp_users foo
更改所有者,因为具有读/写权限
sudo chown root.root /var/www/vhosts/
添加权限
sudo chmod 755 /var/www/vhosts/
编辑 /etc/ssh/sshd_config
sudo vi /etc/ssh/sshd_config
注释掉并添加如下一行
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
最后添加
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/www/vhosts/
ForceCommand internal-sftp
(注:Match
块必须在END中的sshd_config
文件。)
重新启动ssh
服务
sudo service ssh restart
通过这种配置,您可以将其放入文件夹ubuntu
并获取文件。不能put
或delete
要在正确的文件夹中进行sftp编辑/etc/passwd
。更改行以使用户foo
看起来像这样
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
这会将用户foo
主文件夹更改为您的sftp服务器文件夹。
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftp
但是当我想重新启动ssh时出错/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Match.....
部分在END文件。将该代码放在文件末尾,然后重新启动。
Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no
在sshd_config中添加了 文件,并像您一样创建了用户和组,但是用户foo
拥有对所有文件夹的权限:(