Ubuntu 16.04 FTP 服务程序 vsftpd
**安装:**
```
sudo apt install vsftpd
```
其配置文件为 /etc/vsftpd.conf
```
write_enable=YES #允许写文件操作
```
```
useradd -M -s /sbin/nologin ftp1 #创建一个本地 ftp 用户 ftp1
sudo passwd ftp1
sudo service vsftpd restart
```
**530 Login incorrect :**
修改/etc/pam.d/vsftpd:
将 auth required pam_shells.so 修改为 auth required pam_nologin.so 或者将 auth required pam_shells.so 注释
**创建虚拟用户:**
虚拟用户的文件读写需要一个真实用户配合,先创建一个真实用户(在配置文件中关联guest_username)
```
sudo useradd -m -d /home/vsftpd vsftpd
sudo usermod -s /sbin/nologin vsftpd
```
**启用匿名用户 anonymous**
匿名用户使用的是系统的 ftp 用户
```
sudo vim /etc/vsftpd.conf
write_enable=YES #允许写文件操作
anonymous_enable=YES
anon_upload_enable=YES #匿名用户上传使能
anon_mkdir_write_enable=YES #匿名用户创建文件夹使能
#anon_root=/home/ftp #匿名用户根目录,默认为/srv/ftp
sudo service vsftpd restart
```
**关于根目录写权限:**
从 2.3.5 之后,vsftpd 增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报错误:
>vsftpd: refusing to run with writable root inside chroot ()
解决方法:去除用户主目录的写权限
```
chmod a-w /srv/ftp
```
在根目录创建一个ftp用户可以写的目录
```
sudo mkdir /srv/ftp/public
sudo chmod 777 /srv/ftp/public
```
或者修改配置 allow_writeable_chroot=YES #允许根目录写
页:
[1]