sudo apt-get install vsftpd libpam-pwdfile apache2-utils
首先,你需要备份原始文件
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
sudo mkdir /etc/vsftpd
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2
同样,你需要备份最初的文件
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
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
sudo /etc/init.d/vsftpd restart
或使用 service 命令重启
sudo service vsftpd restart
根据配置的所有用户将被放置到这个文件夹:/var/www/user1。
您需要特别权利创建它们:根文件夹不能写!
在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客户端连接,它一定会成功!如果没有,你可以检查排除故障部分。
要创建一个管理员用户,我们需要注册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为主目录。
重新启动服务器,你就大功告成了!
修改 “/etc/vsftpd.conf” 文件即可:
anonymous_enable=YES
anon_root=/var/www/anonymous #此目录可以自己创建,访问权限也可以自定义
下面是我遇到了一些错误。
你的根目录是可写的,这是不允许的。检查第7部分查看更多信息,你需要创建一个555根,755子文件夹
在/var/www/$USER 文件夹不存在,用正确的权限(不可写)创建或添加用户进入/etc/vsftpd.chroot_list(见第8部分)。不要忘了重新启动服务器。
在/etc/vsftpd/ 文件夹已存在,htpasswd不会创建它。
这意味着你不能启动守护进程,即使你有/etc/init.d/vsftpd启动成功消息。它不会启动,因为你的配置是错误的。再次查看教程细节。
查看是否开启 21端口并开启 2121 - 2142 端口。
推荐阅读:mysql 5个常用操作,添加用户配置对应数据库,开启远程访问,修改密码