一、基本知识
1.1 ftp:ftp:file transfer proto 互联网中最老牌的文件传输协议
1.2 vsftp:
服务名称: vsftpd.service
配置目录: /etc/vsftpd
主配置文件: /etc/vsftpd/vsftpd.conf
默认发布目录: /var/ftp
报错信息:
代码 含义 550 程序本身拒绝 553 文件系统权限限制 500 权限过大 530 认证失败 1.3 vsftp服务安装
(1)在共享的yum仓库端安装:yum install vsftpd -y
(2)关闭selinux 关闭firewalld
(3)开启vsftp服务:systemctl start vsftpd;开机即开启:systemctl enable vsftpd
(4)在另一台主机测试安装发布: firefox ftp://ip
lftp ip
【注】在测试时,若没有lftp命令,需要进行安装。
二、匿名用户访问控制
匿名用户登录:lftp IP
查看登录是否成功:用ls,看是否显示出目录列表
权限控制:修改配置文件(修改服务器主机的配置,对客户主机进行控制)
修改的内容 含义 anonymous_enable=YES|NO 是否允许匿名用户登录 anon_root=/software 规定登录用户的家目录 max_clients=2 最大的登录用户的个数 anon_mkdir_write_enable=YES|NO 是否可创建目录(文件不可创建) anon_other_write_enable=YES|NO 是否可删除文件及目录 anon_world_readable_only=YES|NO 是否可以下载只能读的文件(no:可以下载) anon_upload_enable=YES|NO 是否可以上传文件 anon_max_rate=102400 上传文件的最大速率
【注】1.在上传文件时,因为有权限要求,所以我们可以在/var/ftp/pub中,修改pub的权限,使其可读,即可在里面创建文件
chmod 755/var/ftp; chmod 777/var/ftp/pub;lftp 172.25..25.100;cd pub; put /etc/passwd;
2.可下载只读文件,默认值为YES(不可下载):可下载值应为:anon_world_readable_only=NO
3.下载时的文件位置:从那个目录下登录,即下载的文件会在那个目录下,若要指定下载路径,可使用wget ftp://172.25.254.100 -O /mnt
依次按照上述表格修改配置文件即可,得到相应的结果。这里不再一一验证,若读者在操作中有什么问题,欢迎留言,我会尽自己所能在第一时间解决您的问题。
三、本地用户访问控制
本地用户登录(用户为服务器的用户):lftp IP -u username
查看登录是否成功:使用密码登录;用ls,看是否显示出目录列表
权限控制:修改配置文件
修改内容 含义 local_enable=NO|YES 是否允许本地用户登录 local_root=/software 设置本地与用户登录的家目录 write_enable=YES|NO 是否具有写的权限 local_umask=077 上传后文件的权限设定 userlist_deny=NO 设定/etc/vsftpd/user_list为白名单
不在名单中的用户不能登陆ftp
/etc/vsftpd/user_list 默认黑名单;userlist_deny可设定 /etc/vsftpd/ftpusers 永久黑名单 chroot_local_user=YES 锁定用户到自己的家目录 chroot_local_user=YES
chroot_loacl_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
锁定用户到自己的家目录中的白名单
名单内用户,可到达家目录以外目录
chroot_local_user=NO
chroot_loacl_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
锁定用户到自己的家目录中的黑名单
名单内用户,不可到达除家目录以外的任何目录
【注】若需要配置个别用户不能出家目录,其他用户均可出家目录,只需将chroot_loacl_user=NO即可;则名单chroot_list为黑名单。
三、虚拟用户访问
在实际的网路应用中,我们不可能给每个访问服务器的用户均建立一个用户,首先是服务器压力过大,其次,对所建立的用户权限过大,不太安全。所以我们可以相应的建立一个虚拟用户“池”,当有用户访问时,我们可以从中“捞”一个去访问,但此时,在服务器中,只设定一个用户即可。
【说明】本事设定在rhtl8中做,所以提前配置rhtl8中的环境,如下:
3.1 虚拟用户建立
(1)建立用户模板
在/etc/vsftpd/目录下建立用户模版文件:ftp_auth_file
【注】这里要特别注意模板格式:
westos1
123
......
用户一行,密码一行。且空格符也会被计算到用户名和用户密码中。
(2)模板加密
db_load -T -t hash -f ftp_auth_file ftp_auth_file.db
其中:T:转化;-t:加密的方式;-f;指定文件的转化
【注】当添加新用户时,需要对用户模板重现加密。
(3)编辑认证文件:/etc/pam.d/westos;格式如下:
account required pam_userdb.so db=/etc/vsftpd/ ftp_auth_file (账户:强行认证:认证方式:认证文件)
auth required pam_userdb.so db=/etc/vsftpd/ ftp_auth_file (密码:强行认证:认证方式:认证文件)
(4)指定认证策略编写配置文件:/etc/vsftpd/vsftpd.conf
pam_service_name=westos(指定认证策略文件)
guest_enable=YES (指定虚拟用户功能开启 )
guest_username=ftp (指定虚拟用户在ftp服务器上的用户身)
(5)结果
westos1登录成功,但在主机rhtl8中,并未产生westos1这个用户。
3.2 虚拟用户单独设置
3.2.1 配置每个虚拟用户的独立目录
(1)建立每个虚拟用户的家目录
mkdir -p /ftpuserhome/westos{1..3}
(2)配置每个用户的独立目录
在配置文件:/etc/vsftpd/vsftpd.conf中设定目录分配;
local_root=/ftpuserhome/$USER($USER为用户通配符,可匹配当前用户分身)
user_sub_token=$USER(因为$USER为Linux系统中设定,所以需要告诉$USER的使用为Linux中的策略)
(3)重启服务
systemctl restart vsftpd
(4)结果
为了结果明显我们可分别在每个用户根目录下建立file*
结果显示:
3.2.2 虚拟用户单独配置
(1)在配置文件(/etc/vsftpd/vsftpd.conf)中编写:user_config_dir=/etc/vsftpd/user_config,设定在/etc/vsftpd/目录下与用户名称相同的文件为该用户的配置文件
(2)建立用户配置文件:
mkdir /etc/vsftpd/user_config(建立虚拟用户配置文件)
vim /etc/vsftpd/user_config/westos2(编译westos2用户的配置)
anon_upload_enable=YES(配置westos2可上传文件)
上述为Linux下系统中vsftpd服务的基本介绍,若有问题,欢迎大家指出;因实验有时结果会覆盖上一条命令的操作,若上述内容还有所不懂,欢迎留言,会在第一时间给尽自己所能,给大家解决。愿上述内容有所用!