Ubuntu搭建FTP服务器支持匿名和本地用户访问

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

你可能感兴趣的:(Ubuntu搭建FTP服务器支持匿名和本地用户访问)