linux安装之ftp
本安装教程基于centos7
1.查看是否已安装了vsftp(如果已经安装了,请先卸载)
[[email protected] ~]# rpm -qa |grep vsftpd
2.安装
①yum -y install vsftpd
②修改配置文件
vi /etc/vsftpd/vsftpd.conf
③ 保证下面3项为YES
anonymous_enable=YES#匿名登录
anon_upload_enable=YES#允许上传文件
anon_mkdir_write_enable=YES#允许上传/创建目录
[[email protected] ~]# cat /etc/vsftpd/vsftpd.conf |grep -v '#' anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES ascii_upload_enable=YES ascii_download_enable=YES chroot_list_file=/etc/vsftpd/vuser.txt listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES guest_enable=YES guest_username=ftp |
④设置vsftpd开机启动
systemctl enable vsftpd.service
⑤启动并查看vsftpd服务状态,systemctl启动服务成功不会有任何提示,绿色的active表示服务正在运行
systemctl start vsftpd.service
systemctl status vsftpd.service
[[email protected] ~]# systemctl status vsftpd.service ● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since 二 2017-12-12 10:41:18 CST; 34min ago Process: 8261 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) Main PID: 8262 (vsftpd) CGroup: /system.slice/vsftpd.servic└─8262 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf |
3.本地验证ftp是否可以正常访问
①安装ftp
yum -y install ftp
②使用anonymous登陆,无需密码
ftp localhost
4.外部验证
5.文件读写权限
chmod 777 -R /var/ftp/pub
6.添加虚拟用户
①修改配置文件
打开/etc/vsftpd/vsftpd.conf,做如下配置
anonymous_enable=NO //设定不允许匿名访问
local_enable=YES //设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
ascii_upload_enable=YES
ascii_download_enable=YES //设定支持ASCII模式的上传和下载功能
pam_service_name=vsftpd //PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
以下这些是关于vsftpd虚拟用户支持的重要配置项,默认vsftpd.conf中不包含这些设定项目,需要自己手动添加
guest_enable=YES //设定启用虚拟用户功能
guest_username=ftp //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser //设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名
②进行认证
首先,安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包。
yum install db4 db4-utils
然后,创建用户密码文本/etc/vsftpd/vuser.txt ,注意奇行是用户名,偶行是密码
ftp ftp |
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
随后,编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句,再增加以下两句:
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
最后,创建虚拟用户配置文件
mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/ftp //文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效
内容如下(每一行末不能有空格,否则报错,我当时就是复制粘贴,导致有空格引起报错)
local_root=/var/ftp //虚拟用户根目录,根据实际情况修改 write_enable=YES //可写 anon_umask=022 //掩码 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES |
设置FTP根目录权限
chmod R 755 /var/ftp
最新的vsftpd要求对主目录不能有写的权限所以ftp为755,主目录下面的子目录再设置777权限
7.其他
①参考博客
安装:https://www.cnblogs.com/zhi-leaf/p/5983550.html
用户:http://www.cnblogs.com/surge/p/3868385.html
②配置曲折遭遇
在配置 /etc/vsftpd/vsftpd.conf
的时候设置了chroot_list_enable=YES
结果导致连接测试的时候报了500
chroot_local_user #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的) chroot_list_enable #是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用) chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目录下的用户名单,至于是限制名单还是排除名单 |