sftp用户在特定目录下的只读权限

sftp用户在特定目录下的只读权限

我想创建特定的 SFTP 用户,该用户有权仅读取/var/www/vhosts.对此有什么帮助吗?

答案1

Unix 系统提供的chroot命令允许您将/用户重置到文件系统层次结构中的某个目录,在该目录中用户无法访问“更高层”的文件和目录。

但是,就您的情况而言,提供由远程 shell 服务实现的虚拟 chroot 是合适的。 sftp 可以轻松配置为将本地用户限制为文件系统的特定子集。

因此,在您的情况下,您想要chroot将用户foouser 放入/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块需要位于结尾文件的sshd_config。)

重启ssh服务

sudo service ssh restart

通过此配置,您可以 ssh 进入文件夹ubuntu并获取文件。不能putdelete

在右侧文件夹中编辑 sftp /etc/passwd。将用户的行更改foo为如下所示

$ sudo vi /etc/passwd

..
foo:x:1001:1001::/var/www/vhosts/:
..

这会将用户主文件夹更改foo为您的 sftp 服务器文件夹。

相关内容