如何创建具有极其有限权限的SFTP(SSH)用户


8

我在Ubuntu Server 14.04上运行服务器。我想创建一个能够通过sftp进行连接,下载1个文件并终止连接的用户。用户应该不能做任何其他事情。浏览系统文件或设置,也不浏览命令行条目,什么也没有。登录,下载文件gg。文件更新后,登录下载gg。该文件每次都在同一目录中,并且每次都具有相同的名称,但是会被更新。

编辑:我正在尝试实现您的解决方案,但我发现了一些问题:在我的配置中ssh的配置文件上,有一行“ allow groups sshdusers”。我添加了sftp_users。但是,还有另一个问题。sudo chown root.root / ubuntu /对我来说不是最佳选择,因为root无法ssh并将“ ubuntu”必须下载的文件写入目录(我们将其称为user1。我希望user1能够在其上写入目录和ubuntu只读。如果我更改sudo chown user1.user1 / ubuntu /,并且尝试使用ubuntu用户进行sftp,则连接失败。如果我将其保留为root,则可以连接,但看不到currentdirectory我在filezilla上只看到/和empy,甚至将user1添加到sftp_users,但仍然没有成功。

非常感谢

Answers:


11

开始吧

创建用户 ubuntu

sudo useradd ubuntu

设定密码

sudo passwd ubuntu
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

仅针对SFTP创建组

xxx@xxx:~$ sudo groupadd sftp_users 

为仅SFTP组添加到用户“ ubuntu”

xxx@xxx:~$ sudo usermod -G sftp_users ubuntu 

设置sftp访问目录

sudo mkdir /ubuntu

更改所有者,因为具有读/写权限

sudo chown root.root /ubuntu/

添加权限

sudo chmod 755 /ubuntu/

编辑 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

注释掉并添加如下一行

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

最后添加

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /ubuntu
  ForceCommand internal-sftp

重新启动ssh服务

sudo service ssh restart

通过这种配置,您可以将ssh放入文件夹ubuntu并获取文件。不能putdelete

尝试。

编辑1

要在正确的文件夹中进行sftp编辑/etc/passwd。更改行以使用户ubuntu看起来像这样

sudo nano /etc/passwd

 ubuntu:x:1001:1001::/ubuntu:

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

启用root帐户不是一个好主意。

您可以使用SSH到服务器user1

如果您在其中添加用户user1sudoer group将能够在文件夹中写入/ubuntu/并设置适当的权限

sudo adduser user1 sudo

制作文件夹,在文件夹ubuntu中写入。完成操作后,您必须为user设置权限ubuntu。最简单的方法是再次将权限设置为755

sudo chmod 755 -R /ubuntu/

-R-选项将为用户提供所有文件和目录的读取权限 ubuntu


非常感谢你。请参阅我的编辑以获取更多信息,因为评论确实很严格。
BlueStarry

1
您的答案中有Edit 1。
2707974

很遗憾地说这行不通。使用filezilla sftp,我无法使用user1或ubuntu在该文件夹上进行写操作。尽管做了最后的修改,通过sftp用ubuntu登录仍然给了我/文件夹。我已经尝试了很多次,但我想不出这个问题。
BlueStarry,2015年

我还认为,因为所有者是root和sudoers文件不能在文件夹中有755写755,不利于这一目的
BlueStarry

即使回到2015年,我敢肯定,Ubuntu的使用adduseraddgroup,而不是useraddgroupadd等的sudo chown root.root /ubuntu/就是错的。您使用创建了目录sudo,因此所有权已经存在root。应该使用ubuntu.sftp_users。最后,如果您最初将其创建为ubuntu,则“ 启用根用户 ...”中的所有内容都是多余的。
Auspex
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.