赞
踩
FTP:文件传输协议
环境:Centos7
1、用命令安装
yum install -y vsftpd
2、设置用户和密码
useradd ftpuser
passwd ftpuser
3、修改配置文件
cd /etc/vsftpd/
vim vsftpd.conf
# 允许匿名访问 anonymous_enable=YES # 允许本地用户 local_enable=YES #设置本地用户登录所在的目录。 local_root=/usr/local/ftpdir # 本地用户上传文件权限 local_umask=022 # 匿名用户上传文件权限 anon_umask=022 # 允许写入操作 write_enable=YES # 允许匿名用户上传文件 anon_upload_enable=YES # 控制匿名用户对文件和文件夹的删除和重命名 anon_other_write_enable=YES # 允许匿名用户创建目录 anon_mkdir_write_enable=YES # ftp工具连接成功提示 ftpd_banner=Welcome to blah FTP service. # 所有用户均不能切换到上级目录 chroot_local_user=YES # 是否启动限制用户的名单。YES为启用,NO禁用。默认禁用 chroot_list_enable=NO # /etc/vsftpd/user_list文件不生效 userlist_enable=NO #添加以下配置。不添加此项,文件无法上传 allow_writeable_chroot=YES #匿名用户的根目录。 anon_root=/usr/local/ftpdir #匿名用户不要密码就靠这个 no_anon_password=YES # 匿名登录后的使用者 ftp_username=ftpuser
4、启动服务
systemctl start vsftpd
5、测试连接
6、设置开机自启
systemctl enable vsftpd.service
7、win 安装连接FTP服务的客户端 FileZilla
8、所有登录用户的目录 /usr/local/ftpdir
匿名用户上传文件的路径 /usr/local/ftpdir
[root@localhost local]# systemctl start vsftpd
Job for vsftpd.service failed because the control process exited with error code. See “systemctl status vsftpd.service” and “journalctl -xe” for details.
查看服务状态
[root@localhost vsftpd]# systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded
(/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset:
disabled)
Active: failed (Result: exit-code) since 三 2022-10-12
15:05:34 CST; 4min 28s ago
Process: 35719 ExecStart=/usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf (code=exited, status=2)
10月 12 15:05:34 localhost.localdomain systemd[1]: Starting Vsftpd ftp
daemon…
10月 12 15:05:34 localhost.localdomain systemd[1]:
vsftpd.service: control process exited, code=exited status=2
10月 12 15:05:34 localhost.localdomain systemd[1]: Failed to start Vsftpd ftp daemon.
10月 12 15:05:34 localhost.localdomain vsftpd[35719]: 500 OOPS: unrecognised variable in config file: anonnon_upload_enable_umask
10月 12 15:05:34 localhost.localdomain systemd[1]: Unit vsftpd.service
entered failed state.
10月 12 15:05:34 localhost.localdomain systemd[1]: vsftpd.service failed. code=exited, status=2
解决方案:
1、查看端口:lsof -i:21 没有被占用
2、修改配置文件:禁用ipv6,打开iPv4
3、虚拟用户配置文件中,文件名与虚拟用户名不一致导致
用户名与文件名一致
最终解决方案
发现是配置文件中 # 匿名用户上传文件权限 anon_umask=022 语句被自动篡改。
响应: 500 OOPS: cannot change directory:/home/ftpuser 错误: 无法连接到服务器
原因:ftpuser权限不够
解决方案
1、查看home目录下ftpuser的权限
修改权限
需要输入用户名和密码 ftpuser ftpuser
ftpuers 文件中的用户不允许访问 root 默认不允许 访问ftp
修改ftpusers ,将root注释,重启服务systemctl restart vsftpd
userlist_enable=NO 设置为NO ,表示 user_list文件不生效(默认为yes,只允许user_list里面的用户登录)
ftpdir 权限 755 里面的文件 files 权限 777
selinux限制了,把selinux关掉就可以了。(setenforce 0) 先运行getsebool -a | grep ftp (查看selinux里有哪些关于ftp的) allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off ftpd_connect_db --> off httpd_enable_ftp_server --> off sftpd_anon_write --> off sftpd_enable_homedirs --> off sftpd_full_access --> off sftpd_write_ssh_home --> off tftp_anon_write --> off 接下来我们allow_ftpd_anon_write allow_ftpd_full_access 这两个ON掉 setsebool -P allow_ftpd_anon_write on setsebool -P allow_ftpd_full_access on
这样子就OK了,如果出现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。