centos7-vsftp(虚拟用户)

要求如下:

1、所有用户主目录为/var/www宿主为virtual用户;

2、ftpuser1用户只能下载不能上传以及删除文件重命名操作;

3、ftpuser2可以下载与上传文件以及删除重命名操作;

4、ftpadmin可以下载与上传文件以及删除重命名操作,上传文件的umask为022;

 本机ip:192.168.1.3

 

anonymous_enable=NO -------------------#是否开启匿名用户,匿名都不安全,不要开
local_enable=YES ------------------ #允许本机账号登录FTP
write_enable=YES ------------------ #允许账号都有写操作
local_umask=022------------------ #意思是指:文件目录权限:777-022=755,文件权限:666-022=644,这有点反人类了,并且没有人跟我说是减去的。注意理解!
#anon_upload_enable=YES ------------------ #匿名用户是否有上传文件的功能,不要开
#anon_mkdir_write_enable=YES------------------ #匿名用户是否有创建文件夹的功能,不要开
dirmessage_enable=YES ------------------ #进入某个目录的时候,是否在客户端提示一下
xferlog_enable=YES------------------ #日志记录
connect_from_port_20=YES------------------ #开放port模式的20端口的连接
#chown_uploads=YES------------------ #允许没人认领的文件上传的时候,更改掉所属用chown_uploads=YES的前提下,所属的用户
#xferlog_file=/var/log/xferlog ------------------#日志存放的地方
xferlog_std_format=YES ------------------ #日志成为std格式
#idle_session_timeout=600 ------------------ #用户无操作服务器会主动断开连接,单位秒
#data_connection_timeout=120 ------------------ #数据连接超时
#nopriv_user=ftpsecure------------------ #以 ftpsecure 作为此一服务执行者的权限。因为ftpsecure 的权限相当的低,因此即使被入侵,入侵者仅能取得nobody 的权限喔!
#async_abor_enable=YES------------------ #异步停用,由客户发起
#ascii_upload_enable=YES------------------ #使用ascii格式上传文件
#ascii_download_enable=YES------------------ #使用ascii格式下载文件
#ftpd_banner=Welcome to blah FTP service------------------ #欢迎词
#deny_email_enable=YES------------------ #以anonymous用户登录时候,是否禁止掉名单中的emaill密码。
#banned_email_file=/etc/vsftpd/banned_emails------------------ #以anonymous用户登录时候,所禁止emaill密码名单。
chroot_local_user=YES ------------------ #限制用户只能在自己的目录活动
#chroot_list_enable=YES ------------------ #例外名单,如果是YES的话,这个有点怪,不懂别乱开,上面的选项会跟这个名单反调(会被上面的选项影响)。
#chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=NO ------------------ #是否允许使用ls -R等命令
listen=YES ------------------ #监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务。
#listen_ipv6=YES------------------ #监听ipv6端口,还没普及呢!
pam_service_name=vsftpd------------------ #pam模块的名称,放置在 /etc/pam.d/vsftpd ,认证用
userlist_enable=YES------------------ #使用允许登录的名单
userlist_deny=NO ------------------ #限制允许登录的名单,前提是userlist_enable=YES,其实这里有点怪~!
allow_writeable_chroot=YES------------------ #允许限制在自己的目录活动的用户 拥有写权限
tcp_wrappers=YES------------------ #Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。
user_config_dir=/etc/vsftpd/userconfig------------------ #主目录配置,修改后到这个目录中在修改用户配置

pasv_min_port=6000 (0为随机分配)
pasv_max_port=6010(这两项定义了可以同时执行下载链接的数量。)
------------------#被动模式端口范围:注意:linux客户端默认使用被动模式,windows 客户端默认使用主动模式。在ftp客户端中执行"passive"来切换数据通道的模式。也可以使用"ftp -A ip"直接使用主动模式。主动模式、被动模式是有客户端来指定的。

 

配置文件说明摘抄☞:https://blog.csdn.net/annita2019/article/details/92004340

一、安装服务。

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

 

二、配置主配置文件。

[root@localhost ~]# cd /etc/vsftpd/  

[root@localhost vsftpd]# grep -v "^# \|^#$" vsftpd.conf.bak  > vsftpd.conf  #过滤一下。不然看着乱

[root@localhost vsftpd]# vim vsftpd.conf 

增加:

allow_writeable_chroot=yes  #是否允许囚禁的用户进行写权限
user_config_dir=/etc/vsftpd/user  #权限映射目录
guest_enable=YES  #启用虚拟用户
guest_username=virtual   #映射用户

 

修改:

pam_service_name=vsftpd

为:

pam_service_name=pa   #定义pam模块

 

三、pam模块认证。

首先先要去添加一下用户账号、以及密码,并hash加密。

[root@localhost vsftpd]# vim up   #这儿我用up来代表用户信息。username、password的缩写

增加:

ftpuser1   #用户名
123      #密码
ftpuser2  #用户名
123       #密码
ftpadmin  #用户名
123  #密码

[root@localhost vsftpd]# db_load  -T -t hash -f up up.db   #加密用户信息

[root@localhost vsftpd]# vim /etc/pam.d/pa #编辑pam认证

增加:

auth required pam_userdb.so db=/etc/vsftpd/up
account required pam_userdb.so db=/etc/vsftpd/up

 

四、定义虚拟用户的权限。

[root@localhost vsftpd]# mkdir user  

[root@localhost vsftpd]# cd user

[root@localhost user]#  touch ftpuser1  #要求是ftpuser1只能进行下载,啥都不能了,所以直接创建一个空文件在这儿就好啦。

 

[root@localhost user]# vim ftpuser2

增加:

anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes

 

[root@localhost user]# vim ftpadmin

增加:

anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=022

 

 

[root@localhost user]# useradd -s /sbin/nologin -d /var/www virtual  #创建映射的用户

 

[root@localhost user]# systemctl restart vsftpd 

[root@localhost user]# echo haha > /var/www/1.txt #创建一个文件,方便连接的时候,好识别是不是连接对了。

 

测试ftpuser1

 

centos7-vsftp(虚拟用户)_第1张图片

 centos7-vsftp(虚拟用户)_第2张图片

 

centos7-vsftp(虚拟用户)_第3张图片

 

 

 centos7-vsftp(虚拟用户)_第4张图片

 

 

 

 

 测试ftpuser2:

 

centos7-vsftp(虚拟用户)_第5张图片

 

 

 centos7-vsftp(虚拟用户)_第6张图片

 

 

 

 

 

 

 

 解决:

[root@localhost vsftpd]# chown virtual /var/www/

 

centos7-vsftp(虚拟用户)_第7张图片

centos7-vsftp(虚拟用户)_第8张图片

 

测试ftpadmin:

centos7-vsftp(虚拟用户)_第9张图片

 

 

 

 

 

 

 

 有一些权限是肯定有的。我就不一一测试了。

你可能感兴趣的:(centos7-vsftp(虚拟用户))