FTP服务搭建安装

vsftpd相关文档

/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。  黑名单
/etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件。  白名单
/etc/vsftpd/vsftpd_conf_migrate.sh:是vsftpd 操作的一些变量和设置脚本
/var/ftp/:默认情况下匿名用户的根目录 

安装vsftp服务

[root@wxj ~]# yum install vsftpd -y

启动服务

[root@wxj ~]# systemctl start vsftpd
[root@wxj ~]# systemctl enable vsftpd
 Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@wxj ~]# netstat -ntlp|grep vsftpd
 tcp6       0      0 :::21                   :::*                    LISTEN      5755/vsftpd 

允许匿名用户登录并允许上传

修改配置文件如下

[root@wxj ~]# vim /etc/vsftpd/vsftpd.conf
允许匿名用户访问
anonymous_enable=YES
允许匿名用户上传文件并可以创建目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES 

如上图所示创建文件夹报错的解决办法:

[root@wxj ~]# chown ftp.ftp -R /var/ftp/pub/

重命令报错了,需要配置文件中增加

[root@wxj ~]# vim /etc/vsftpd/vsftpd.conf 
 anon_other_write_enable=YES  ##默认没有,需要手动添加下这行 
[root@wxj ~]# systemctl restart vsftpd

成功重命名,但是也是能删除的,相当不安全

备注:默认匿名用户的目录是755,是不能修改权限,否则会报错

 [root@wxj ~]# mkdir /var/ftp/wxj
 [root@wxj ~]# chown ftp:ftp /var/ftp/wxj/
 [root@wxj ~]# systemctl restart vsftpd

无法删除了哦。一般情况下匿名FTP服务器只允许读不允许写的哦

只允许用户登陆FTP服务器和上传

创建用户不允许登陆系统

[root@wxj ~]# useradd -s /sbin/nologin test1
[root@wxj ~]# useradd -s /sbin/nologin test2
[root@wxj ~]# echo "Aa123456"|passwd --stdin test1
[root@wxj ~]# echo "Aa123456"|passwd --stdin test2

修改配置文件

[root@wxj ~]# vim /etc/vsftpd/vsftpd.conf
# 修改
anonymous_enable=NO:禁止匿名用户登录
local_enable=YES:允许本地用户登录 
chroot_list_enable=YES:激活chroot 功能
chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名 
# 增加
local_root=/var/www/html:设置本地用户的根目录为/var/www/html 
allow_writeable_chroot=YES :允许锁定的用户有写的权限 

创建chroot文件

[root@wxj ~]# vim /etc/vsftpd/chroot_list
test1
test2

权限修改

 [root@wxj ~]# chmod -R o+w /var/www/html/
 [root@wxj ~]# ll -d /var/www/html/
 drwxr-xrwx 3 root root 35 9月  16 10:07 /var/www/html/
 [root@wxj ~]# 

重启服务

[root@wxj ~]# systemctl restart vsftpd

测试

FTP设置虚拟用户登陆

[root@wxj ~]# yum install pam* libdb-utils libdb* --skip-broken -y
[root@wxj ~]# vim /etc/vsftpd/ftpusers.txt
wxj
123456
[root@wxj ~]# db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
[root@wxj ~]# chmod 700 /etc/vsftpd/vsftpd_login.db 
[root@wxj ~]# vim /etc/pam.d/vsftpd 
auth       required     pam_userdb.so     db=/etc/vsftpd/vsftpd_login
account    required     pam_userdb.so     db=/etc/vsftpd/vsftpd_login
[root@wxj ~]# vim /etc/vsftpd/vsftpd.conf
 anonymous_enable=NO
 local_enable=YES
 write_enable=YES
 local_umask=022
 dirmessage_enable=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 xferlog_std_format=YES
 listen=NO
 listen_ipv6=YES
 userlist_enable=YES
 tcp_wrappers=YES
 pam_service_name=vsftpd
 guest_enable=YES
 guest_username=ftpuser
 user_config_dir=/etc/vsftpd/vsftpd_user_conf
 virtual_use_local_privs=YES
[root@wxj ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf/
[root@wxj ~]# vim /etc/vsftpd/vsftpd_user_conf/wxj
 //虚拟用户配置文件路径
 local_root=/home/ftpuser/wxj  
//允许登陆用户有写权限
 write_enable=YES
//以下为允许匿名用户的各种权限
 anon_world_readable_only=YES
 anon_upload_enable=YES
 anon_mkdir_write_enable=YES
 anon_other_write_enable=YES
[root@wxj ~]# mkdir /home/ftpuser/wxj
[root@wxj ~]# chown -R ftpuser:ftpuser /home/ftpuser/
[root@wxj ~]# systemctl restart vsftpd

测试,可以访问和创建文件

中间也遇到了一系列问题,最后查看日志发现是pam的问题,pam需要注释掉下面的内容。

查看secure的日志报错如下

登陆报错530 Login incorrect

连接失败(Connection closed by server)

发表评论

后才能评论