创建新的vsftpd用户并锁定(指定)主目录/登录目录


31

我需要定期给安装了vsftp的CentOS linux服务器上的各种目录提供临时和有限的访问权限。

我已经使用创建了一个用户,useradd [user_name]并使用为其提供了密码passwd [password]

我在中创建了一个目录/var/ftp,然后将其绑定到我希望限制访问的目录。

为了确保该用户登录FTP时,他们仅能访问该目录,我还需要特别做什么?


抱歉,您是否曾经考虑过检查vsftpd.conf?
jirib

是。我有。它没有告诉我如何指示特定用户登录特定目录...?
zigojacko

1
当然?chroot_list_enable选项...还是要覆盖不同于$ HOME的目录?
jirib

1
我想知道如何为特定用户声明特定主目录。我已经启用chroot_list_enable并创建了/etc/vsftpd/chroot_list。我只是不知道下一步该怎么做。
zigojacko

然后usermod更改用户的homedir。
jirib

Answers:


44

逐步解决所有其他问题的完整答案,解决了我的问题。

安装vsftpd使用这个作为指导

  • 使用创建用户useradd [user_name]
  • 使用创建用户密码passwd [user_name]。(系统将提示您指定密码)。
  • 在中创建FTP目录,/var/ftp然后绑定到您要为此用户指定的“主”目录mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/
  • 使用以下命令更改用户的主目录 usermod -d /var/ftp/custom_name/ user_name

    在中/etc/vsftpd/vsftpd.conf,确保设置了以下所有条件:

    • chroot_local_user =是
    • chroot_list_enable =是
    • chroot_list_file = / etc / vsftpd.chroot_list

vsftpd.chroot_list如果您希望用户具有对服务器上任何位置的完全访问权限,请仅在文件中列出用户。通过不在此文件中列出他们,是说将所有vsftpd用户限制为他们指定的主目录。

换句话说(供参考):

  1. 意味着默认情况下,除文件中的用户外,所有用户都被chroot。
    • chroot_local_user =是
    • chroot_list_enable =是
  2. 意味着默认情况下,仅文件中的用户被chroot。
    • chroot_local_user =否
    • chroot_list_enable =是

为什么不直接将该用户的主目录设置为/var/www/vhosts/domain.com/?这有什么问题(如任何潜在的风险)吗?
leemes

2
我刚刚发现,出于安全原因,vsftp似乎禁止在chroot顶级授予ftp用户写权限(但我不确定100%)。因此,这可能是具有此“间接性”的原因,以便授予ftp用户对特定文件夹的写访问权限,同时又不允许查看任何同级文件夹(如果您只是将其主目录设置为一个较高级别,情况就是这样)。避免提到的问题)。(见ubuntuforums.org/...
leemes

2
@zigojacko您的用户只看到他们分配的主目录吗?对我来说,这默认使用户使用分配的目录,但是,他们仍然可以看到其他文件夹,并且可以一直窥探到根目录,尽管只有读访问权限。
GraehamF

1
这个答案,结合unix.stackexchange.com/questions/208960/…,对我来说是完整的答案。我最终在组中创建了一个用户,并限制了该组对所需目录的访问。
GraehamF

10

对我而言,即使经过上述操作,它也无法正常工作。有一个已经设置为目录的local_root,无论我做什么,用户的目录都没有被监禁。最后,只有更改后它才能工作

chroot_local_user =是

并遵循以下程序

  1. vi /etc/vsftpd.conf
  2. 添加“ user_config_dir = / etc / vsftpd_user_conf”行(无引号)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi user_name;
  6. 输入“ local_root = / srv / ftp / user_name”行

如果有人遇到同样的问题,只需我的两分钱。


我按照此过程更改了vsftpd的根目录,包括gnaanaa的其他步骤。不幸的是,这还行不通。Filezilla报告530登录不正确。用户和密码符合上述步骤(user_name)。我创建了一个测试用户ftp2,并设置了它的密码。Filezilla正常登录使用该用户名和密码。我还将根目录设置为只读,并根据这篇文章创建了一个具有写权限的较低级别的目录。我正在使用Ubuntu 16.04(如果有任何区别)。
tim11g

我正在使用Ubuntu 16.04,如果有什么不同,@ gnaanaa。我也觉得在/ var中没有ftp目录很奇怪。因此,我必须先创建/ var / ftp,然后创建/ var / ftp / user_name。code<br/>响应:220(vsFTPd 3.0.3)<br/>命令:USER ftp2 <br/>响应:331请指定密码。<br/>命令:PASS ***** <br/>响应:530登录不正确。<br/>错误:严重错误:无法连接到服务器<br/>code
tim11g

首先,看看为什么您无法登录服务器。仅在成功登录后,您才可以通过jail调试问题。干杯。
gnaanaa

与计算机上的帐户相比,vsftp使用的用户/密码是否不同?我发现必须使用smbpasswd -a分别设置smb密码。vsftpd是否以相同的方式工作?
tim11g '16

不,这是系统用户帐户。检查此答案:askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa
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.