在ubuntu中配置vsftpd 多用户对应多目录,使用虚拟用户设置VSFTPD账户(无需数据库工具)
参考连接 <https://blog.csdn.net/bingyu9875/article/details/<herf=>

我想在我的服务器上安装FTP服务器,我在网上查资料后,发现VSFTPD是最安全的,所以我就开始安装使用它。
我测试过很多教程,但找不到任何全面详细的教程,所以决定写我自己的方法。在我的个人服务器上建立了VSFTPD服务,接下来跟着我的教程一步一步部署VSFTPD到我们的专用服务器。
安装VSFTPD概要

* 安装vsftpd、PAM库 htpasswd
* 编辑/etc/vsftpd.conf和/etc/pam.d/vsftpd文件
* 创建自定义用户目录(例如:/var/www/)
* 使用 chmod 和 chown 设置正确的权限和组目录
* 创建拥有完全访问到服务器的管理员用户
* 疑难解答
1. 安装vsftpd(Very Secure FTP Deamon:非常安全的FTP守护进程)和 libpam-pwdfile
、apache2-utils 工具可以创建虚拟用户
我想创建FTP用户,但不想添加本地UNIX用户(没有shell访问,没有主目录等)。一个PAM(Pluggable Authentication
Modules)将帮助您创建虚拟用户。 sudo apt-get install vsftpd libpam-pwdfile apache2-utils
2. 编辑vsftpd.conf

首先,你需要备份原始文件
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
然后创建一个新的 vsftpd.conf 文件
sudo vim /etc/vsftpd.conf
复制并粘贴以下行。该文件应该只包含这些行:
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=
022 nopriv_user=vsftpd virtual_use_local_privs=YES guest_enable=YES
user_sub_token=$USER local_root=/var/www/$USER chroot_local_user=YES hide_ids=
YES guest_username=vsftpd # reserve TCP ports 2121-2142 for passive FTP
pasv_min_port=2121 pasv_max_port=2142
3. 注册虚拟用户
(adsbygoogle = window.adsbygoogle || []).push({});
注册使用htpasswd的用户。创建一个文件夹的vsftpd然后把配置文件在里面。 sudo mkdir /etc/vsftpd 然后 sudo
htpasswd-cd /etc/vsftpd/ftpd.passwd user1
* -c:如果文件不存在,将自动创建文件
* -d:MD5 加密,你需要在Ubuntu 14.04中,该命令将提示输入密码。 如果你想以后添加新用户,使用以下命令: sudo htpasswd -
d/etc/vsftpd/ftpd.passwd user2
4. 配置PAM在/etc/pam.d/vsftpd

同样,你需要备份最初的文件
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
并创建一个新的 vsftpd 文件
sudo vim /etc/pam.d/vsftpd
复制并粘贴这两行代码(这个文件中应该只包含这两行内容)。
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd account required
pam_permit.so


5. 创建没有shell访问的本地用户



(adsbygoogle = window.adsbygoogle || []).push({}); sudo useradd --home /home/
vsftpd--gid nogroup -m --shell /bin/false vsftpd
当用户连接到FTP服务器时,它们将被用于管理对应用户名字的权限目录。
6. 重新启动vsftpd
常见的方法是使用的init.d重启守护进程,如下: sudo /etc/init.d/vsftpd restart
或使用 service 命令重启
sudo service vsftpd restart


7. 创建目录



(adsbygoogle = window.adsbygoogle || []).push({});
根据配置的所有用户将被放置到这个文件夹:/var/www/user1。

您需要特别权利创建它们:根文件夹不能写!

* Folder / [root = /var/www/user1] => 555
* Folder www [ /var/www/user1/www ] => 755
* Folder docs [ /var/www/user1/docs ] => 755

注:在根目录下的用户**不能**创建文件或文件夹。
在vsftpd.conf中,我们有chroot_local_user = YES,使用户无法看到他的文件夹以外的任何东西。对他来说,服务器看起来是这样的:



因此,只要运行这些命令:



sudo mkdir /var/www/user1 sudo chmod -w /var/www/user1 sudo mkdir -p /var
/www/user1/www /var/www/user1/docs sudo chmod -R 755 /var/www/user1/www /var
/www/user1/docs sudo chmod-w /var/www/user1/docs sudo chown -R vsftpd:nogroup /
var/www/user1 备注:如果需要目录只有只读权限,使用chmod修改即可。
将在 /var/www/user1 的文件夹已存在,或连接失败。

现在,你可以尝试用你的FTP客户端连接,它一定会成功!如果没有,你可以检查排除故障部分。

8. 创建管理员用户访问整个服务器

要创建一个管理员用户,我们需要注册htpasswd的新用户。


在这样做之前,我会建议您检查到该定义被某些用户在/etc/ftpusers文件中未允许使用FTP连接。我认为这只是为本地用户,而不是虚拟用户,但以防万一,不要选择包含在此文件的名称。说实话,vsftpd是够复杂!
sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin
创建 /etc/vsftpd.chroot_list 文件,并把上边用户和密码添加到这个文件(第一行用户名,第二行密码):
theadmin you_password
现在,我们需要在 /etc/vsftpd.conf文件中添加一行,代码如下:
chroot_list_enable=YES
 

加入这个命令后,意味着在/etc/vsftpd.chroot_list
里的用户,你不必创建一个像/var/www/theadmin的文件夹,用户将登录后应该显示/home/vsftpd为主目录。

重新启动服务器,你就大功告成了!

9. 匿名用户访问

修改 “/etc/vsftpd.conf” 文件即可:
anonymous_enable=YES anon_root=/var/www/anonymous #此目录可以自己创建,访问权限也可以自定义


故障排除



(adsbygoogle = window.adsbygoogle || []).push({});
下面是我遇到了一些错误。

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

你的根目录是可写的,这是不允许的。检查第7部分查看更多信息,你需要创建一个555根,755子文件夹

500 OOPS: cannot change directory:/var/www/theadmin if the folder doesnt exist

在/var/www/$USER
文件夹不存在,用正确的权限(不可写)创建或添加用户进入/etc/vsftpd.chroot_list(见第8部分)。不要忘了重新启动服务器。

htpasswd: cannot create file /etc/vsftpd/ftpd.passwd

在/etc/vsftpd/ 文件夹已存在,htpasswd不会创建它。

vsftpd restart or stop error: “restart: Unknown instance”

这意味着你不能启动守护进程,即使你有/etc/init.d/vsftpd启动成功消息。它不会启动,因为你的配置是错误的。再次查看教程细节。

Error: Connection timed out after 20 seconds of inactivity

查看是否开启 21端口并开启 2121 - 2142 端口。

推荐阅读:mysql 5个常用操作,添加用户配置对应数据库,开启远程访问,修改密码
<https://www.howtoing.com/mysql-5-commonly-used-actions-add-user-configuration-database-open-the-remote-access-change-password/>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信