要求如下:
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:
测试ftpuser2:
解决:
[root@localhost vsftpd]# chown virtual /var/www/
测试ftpadmin:
有一些权限是肯定有的。我就不一一测试了。