阡陌 发表于 2024-2-3 13:41:29

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]
查看完整版本: Ubuntu 16.04 FTP 服务程序 vsftpd