Centos7搭建FTP服务器,可匿名登录和非匿名登录同时使用

零、目的

在centos上搭建一个ftp服务器,可以通过windows的资源管理器访问,并且既可以匿名访问,也可以用户登录访问,只是权限不一样、访问的目录不一样:

  • 要求匿名登录时只可下载,不可修改、删除及上传;
  • 要求两种访问方式进入的目录不一样,用户登录访问既能进入匿名的根目录,也有自己的目录

这样用户登录访问的权限及目录完全包含了匿名登录,便于ftp的文件管理。

一、安装vsftpd

  1. 先查看是否已经安装vsftpd
[root@localhost ~]# rpm -q vsftpd
未安装软件包 vsftpd 
  1. 安装vsftpd服务及ftp命令
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# yum -y install ftp

在这里插入图片描述
3. 验证是否安装成功

[root@localhost ~]# rpm -q vsftpd
vsftpd-3.0.2-27.el7.x86_64
  1. 启动vsftpd服务并验证状态
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 三 2020-11-04 16:53:01 CST; 9s ago
  Process: 1986 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 1987 (vsftpd)
    Tasks: 1
   CGroup: /system.slice/vsftpd.service
           └─1987 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

11月 04 16:53:01 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon...
11月 04 16:53:01 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
  1. 加入开机启动:
[root@localhost ~]# chkconfig vsftpd on

二、SELinux及防火墙处理

  1. 关闭SELinux限制

先执行下面一条命令,临时关闭(重启后失效)

[root@localhost ~]# setenforce 0

再修改配置文件,即使服务器重启,仍为permissive状态,只需改动第8行

[root@localhost ~]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=permissive
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
  1. 添加防火墙白名单(或关闭防火墙)
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=ftp
success
[root@localhost ~]# firewall-cmd --reload
success

三、添加ftp账户

新建一个账户

[root@localhost software]# cd /home
[root@localhost home]# useradd ftpuser
[root@localhost home]# passwd ftpuser

用ftpuser建立两个目录以便测试

[root@localhost home]# cd /home/ftpuser
[root@localhost home]# su ftpuser
[root@localhost home]# mkdir denyroot
[root@localhost home]# mkdir ftproot

设置ftpuser不可登录

[root@localhost ftpuser]# su
[root@localhost ftpuser]# vim /etc/passwd
#将最后一行改为:
ftpuser:x:1001:1001::/home/ftpuser:/sbin/nologin

在/etc/shells添加登录shell,如有已有则不用再添加

[root@localhost ftpuser]# vim /etc/shells

在这里插入图片描述
另外,注意改一下目录的权限

[root@localhost ftpuser]# chmod -R 700 ftproot/
[root@localhost ftpuser]# chmod -R 755 denyroot/

四、修改配置文件

引用以下最简单的配置

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

chroot_local_user=YES
allow_writeable_chroot=YES

listen=YES

pam_service_name=vsftpd
userlist_enable=NO
tcp_wrappers=YES

#增加下列内容,赋给匿名用户相应权限
anon_other_write_enable=YES
anon_world_readable_only=NO
anon_root=/home/ftpuser/denyroot

重启ftp服务

[root@localhost vsftpd]# systemctl restart vsftpd

五、验证

在windows资源管理器中输入ftp://192.168.3.29/,可直接访问到denyroot
在这里插入图片描述
在windows资源管理器中右键登录,输入用户名密码后,直接访问到ftpuser(新建的ftp账户)目录下
在这里插入图片描述
另,可逐一测试下载、上传、修改、删除等权限,均无问题。

六、遇到的一些坑

  1. 刚开始仿照另一台ftp服务器配置,设置了vsftpd.conf中的listen=NO,并且启用了IPv6,配置如下:
listen_ipv6=YES
listen_port=9070   
pasv_enable=YES
pasv_min_port=9071
pasv_max_port=9079

但实际在windows资源管理器中访问时,输入的IP是基于IPv4的,所以该方法不可行。

  1. 因为设置了新建的ftpuser账户不可登录,/sbin/nologin,导致在匿名访问时能正常访问,但登录时总是提示用户名密码不正确,用ftp命令登录时提示如下:
530 Login incorrect. Login failed

这是因为contos系统中没有配置登录用到的shell,所以需要在/etc/shells文件中添加登录脚本:/sbin/nologin
该问题感谢这位的帮助:https://blog.csdn.net/hahahaxiaoyu/article/details/100582853

以上就是所有步骤,有疑问–>请评论

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值