安装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
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. 注册虚拟用户
注册使用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
sudo vim /etc/pam.d/vsftpd
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd account required pam_permit.so
5. 创建没有shell访问的本地用户
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
当用户连接到FTP服务器时,它们将被用于管理对应用户名字的权限目录。
6. 重新启动vsftpd
常见的方法是使用的init.d重启守护进程,如下:sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
7. 创建目录
根据配置的所有用户将被放置到这个文件夹: /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,使用户无法看到他的文件夹以外的任何东西。对他来说,服务器看起来是这样的:
因此,只要运行这些命令:
mkdir /var/www/user1 chmod -w /var/www/user1 mkdir www/user1/www chmod -R 755 /var/www/user1/www chown -R vsftpd:nogroup /var/www/user1
8. 创建管理员用户访问整个服务器
要创建一个管理员用户,我们需要注册htpasswd的新用户。 在这样做之前,我会建议您检查到该定义被某些用户在/etc/ftpusers文件中未允许使用FTP连接。我认为这只是为本地用户,而不是虚拟用户,但以防万一,不要选择包含在此文件的名称。说实话,vsftpd是够复杂!sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin
theadmin you_password现在,我们需要在 /etc/vsftpd.conf文件中添加一行,代码如下:
chroot_list_enable=YES