如何仅在Centos / Linux安装上创建具有特定/ dir /访问权限的FTP用户


44

因此,我正在使用VPS-CentOS Linux安装。我在服务器上有vsFTPd。我目前可以通过root用户对服务器进行SFTP访问,但是现在尝试创建一个仅对服务器上的特定目录具有FTP访问权限的新用户,我已经完成了以下操作:

1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com

我正在努力做的是创建只能访问的用户 /var/www/mydomain.com -我观察到用户正确登录了正确的文件夹,但是用户可以随后“浏览”到其他目录。我希望用户坚持使用特定的文件夹,而不能“浏览”回来

有任何想法吗?

我找到了有关chrooting的不同文章,但只是没有弄清楚如何在上述步骤中使用它。


digitalocean.com/community/tutorials/…您可以按照此方法解决您的问题
杰克

对于那些谁是在Ubuntu 18这里是特定版本的digitalocean.com/community/tutorials/...
阮晋勇

Answers:


39

这很简单。

您必须在vsftpd.conf文件上添加以下选项

chroot_local_user=YES

配置文件中的文档是不言自明的:

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

这意味着,该用户将只能访问您配置为该用户的HOME的文件夹。下面,我有一个用户passwd条目的示例:

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

使用以下命令设置用户的主目录

usermod -d /var/www/my.domain.example/ exampleuser

注意:在我的示例中,该用户还是Linux中某些计划任务的有效用户。如果您不需要此功能,请将用户的外壳更改为/sbin/nologin而不是bash


嗨,威尔德纳!非常感谢您抽出宝贵的时间回答我的问题。因此,在我的vsftpd.conf文件中,IVE添加了以下行“ chroot_local_user = YES”-然后据我所知,我需要添加与您为用户显示的行类似的行?必须承认我不完全确定在您提供的示例中该写些什么。“ 1001”等是什么?假设我的用户名为:“ im_a_linux_noob”,该用户的目录为:“ / var / www / mydomain.com”-看起来如何?
user1231561 2013年

而且我可以在执行帖子时不做任何额外的步骤就能做到这一点吗?因此,执行1-8,然后添加您描述的内容应该可以解决问题?
user1231561 2013年

你好 上面的示例只是文件的一行(当然是经过修改的)/etc/passwd,它表示一个名为upload_ftp的用户,1001:1001是其用户ID和组ID,/ var / www / sites是该用户的主目录(并且vsftpd读取的参数)和/ bin / bash(shell)。也许缺什么对你的情况是一个主目录用户,它可以用下面的命令来解决:usermod -d /var/www/mydomain.com <username>。干杯:)

3
是的,非常感谢。不过有一个问题。通过普通的FTP可以正常登录,但是当我以SFTP登录时-然后我可以再次浏览-有什么想法吗?
user1231561 2013年

1
当然是因为sftp是由ssh服务器而不是ftp服务器处理的。以一种“粗暴”的方式:SFTP = SSH + FTP; FTPS = FTP + SSL。这里有一个关于sftp的线程,我将其引用为aviod主题重复行吗?;) unix.stackexchange.com/a/64541/34720

6

更改配置以使其包括后 chroot_local_user=YES

您可以将用户的外壳程序更改为,/usr/sbin/nologin以便在密码泄漏时减轻一些风险(也可以设置主目录)。外壳也需要列出,/etc/shells否则身份验证将失败。

usermod -d /var/www/my.domain.example -s / usr / sbin / nologin exampleuser

-d,--home HOME_DIR用户的新登录目录。如果指定了-m选项,则当前主目录的内容将被移至新主目录,如果该主目录不存在,则会创建该主目录。

-s,--shell SHELL用户的新登录shell的名称。将此字段设置为空白会导致系统选择默认的登录外壳。

https://security.appspot.com/vsftpd/FAQ.txt


4

以下是设置用户并仅允许用户通过FTP(即没有SSH)访问以及限制访问proftpd上特定目录(用户主目录)的步骤:

  1. 添加新用户: adduser newusername

  2. 设置密码: passwd newusername

  3. 将用户主目录从默认修改为新文件夹:

    usermod -d /target/directory username

  4. 编辑shells文件:vi /etc/shells/dev/null在末尾添加

  5. 修改文件中的newusername条目passwdvi /etc/passwd/./之前添加,newusername以便条目如下所示:

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    步骤4和5的详细信息在这里:

  6. 编辑/etc/proftpd/proftpd.conf文件并取消注释行DefaultRoot ~



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.