1、安装FTP服务
sudo apt-get install vsftpd
安装完成会自动生成目录srv目录和home在同一层级,可以通过以下命令访问
cd /srv/ftp/
nautilus ./
2、修改配置,支持匿名访问
sudo vi /etc/vsftpd.conf
在打开的文件末尾增加以下内容
#启用匿名用户
anonymous_enable=YES
#匿名用户无密码
no_anon_password=YES
#限定匿名用户目录
anon_root=/home/xxx/ftp
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
3、重启FTP服务器,使配置生效
sudo /etc/init.d/vsftpd restart
4、其它命令
#启动ftp服务器
sudo /etc/init.d/vsftpd start
#停止ftp服务器
sudo /etc/init.d/vsftpd stop
5、ftp连接
本机连接
ftp 127.0.0.1
其它电脑连接
ftp ip
Connected to 127.0.0.1.
220 (vsFTPd 3.0.3)
Name (127.0.0.1:xxx):
输入用户名:anonymous 或 ftp
回车
进入ftp根目录,可以愉快的玩耍了
6、错误修复
Connected to 127.0.0.1.
220 (vsFTPd 3.0.3)
Name (127.0.0.1:starry): anonymous
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令去除被限定目录的的写权限
chmod 755 /home/xxx/ftp
或者去掉/etc/vsftpd.conf配置文件中的限定目录,如下注释掉匿名用户的限定目录,则匿名用户登录后会在/srv/ftp/目录下
#anon_root=/home/xxx/ftp
配置本地用户
1、新建本地用户
#创建用户
sudo useradd zhangsan -m
#设置密码
sudo passwd zhangsan
2、修改配置
打开/etc/vsftpd.conf,在文件末尾追加以下内容
local_enable=YES
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
3、配置本地用户文件夹权限
chmod a-w /home/zhangsan
如果不设置以上权限,会报vsftpd: refusing to run with writable root inside chroot(),拒绝在根目录可写。
4、重启FTP服务器,使配置生效
sudo /etc/init.d/vsftpd restart
5、设置FTP目录,并设置可读写权限
cd /home/zhangsan
sudo mkdir ftpData
sudo chmod 777 ftpData
注:因配置本地用户文件夹权限时,将/home/zhangsan目录写权限去掉了,所以使用zhangsan用户访问ftp时无法直接在/home/zhangsan目录下上传文件,所以在/home/zhangsan目录下新建一个文件夹,并设置可读写权限,上传文件在新建的文件夹下操作即可
配置可切换根目录
打开/etc/vsftpd.conf,追加以下内容
chroot_list_file=/etc/vsftpd.chroot_list
在/etc/vsftpd.chroot_list文件中添加想要配置的用户名,例如zhangsan,重启FTP服务器
参考:
https://blog.csdn.net/bluishglc/article/details/42398811
https://blog.51cto.com/4610383/1428704