当前位置:   article > 正文

Centos搭建FTP,实现本地和匿名访问_centos ftp用户权限设置

centos ftp用户权限设置

前言

FTP:文件传输协议
环境:Centos7

搭建步骤

1、用命令安装

 yum install -y vsftpd
  • 1

2、设置用户和密码

useradd ftpuser
passwd ftpuser
  • 1
  • 2

3、修改配置文件

cd /etc/vsftpd/
vim vsftpd.conf
  • 1
  • 2
# 允许匿名访问
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

4、启动服务

systemctl start vsftpd
  • 1

在这里插入图片描述
5、测试连接
在这里插入图片描述
6、设置开机自启

systemctl enable vsftpd.service
  • 1

7、win 安装连接FTP服务的客户端 FileZilla
8、所有登录用户的目录 /usr/local/ftpdir
匿名用户上传文件的路径 /usr/local/ftpdir

踩坑

1、需要root权限执行 yum install -y vsftpd 命令

2、启动服务失败

[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 语句被自动篡改。

3、连接失败:500, 权限不够

响应: 500 OOPS: cannot change directory:/home/ftpuser 错误: 无法连接到服务器
原因:ftpuser权限不够

解决方案
1、查看home目录下ftpuser的权限
在这里插入图片描述

修改权限
在这里插入图片描述

4、连接失败:530

需要输入用户名和密码 ftpuser ftpuser

5、root用户登录 530

在这里插入图片描述

ftpuers 文件中的用户不允许访问 root 默认不允许 访问ftp
修改ftpusers ,将root注释,重启服务systemctl restart vsftpd

userlist_enable=NO 设置为NO ,表示 user_list文件不生效(默认为yes,只允许user_list里面的用户登录)

6、FileZilla上传文件错误 553

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

这样子就OK了,如果出现

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/139928?site
推荐阅读
相关标签
  

闽ICP备14008679号