禁止匿名用户有删除,覆盖等权限
(1)查看ftp的默认根路径,默认是有一个pub目录(默认的跟目录),
[iyunv@Centos2 ~]# ls /var/ftp/
pub
(2)备份配置文件
cd /etc/vsftpd/vsftpd.confg
cp vsftpd.conf vsftpd.bak
vim vsftpd.conf
内容如下
write_enable=YES
anon_umask=022
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO 是否允许匿名用户有其他写入权(改名,删除,覆盖)
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
(3)启动服务
service vsftpd start
(4)改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。
chown ftp /var/ftp/pub
验证:
在网络或是计算中输入ftp地址:格式如下图。
我们会看到默认的pub目录。
图1
进入到pub目录下,可以创建和上传测试目录了。如图2
图2
注意:(1)修改完配置之后需要重启完服务才能生效
(2)还需要从新从客户端登陆,否则修改后的配置看不到效果。
实验2
只允许u1、u2两个用户可以登录
创建测试用户,并且设置密码
[iyunv@crushlinux ~]# useradd u1
[iyunv@crushlinux ~]# echo "user" |passwd --stdin u1
[iyunv@crushlinux ~]# useradd u2
[iyunv@crushlinux ~]# echo "user" |passwd --stdin u2
[iyunv@crushlinux ~]# useradd u3
[iyunv@crushlinux ~]# echo "user" |passwd --stdin u3
在配置文件中加入红色部分内容
[iyunv@crushlinux ~]# vi /etc/vsftpd/vsftpd.conf
local_enable=YES
local_umask=077
chroot_local_user=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
将允许登陆的用户加入到白名单中
vi /etc/vsftpd/user_list
u1
u2
service vsftpd restart
登陆验证
格式为:ftp://用户名:密码@ftpIP地址
登陆上默认是空白的,因为这是用户的家目录。
用u3用户登陆,会报错误(windows不同系统报错不会完全一致):
实验3
构建基于虚拟用户的FTP服务
创建账号数据
1.建立虚拟FTP用户的帐号数据库文件
2.创建FTP根目录及虚拟用户映射的系统用户
3.建立支持虚拟用户的PAM认证文件
添加虚拟用户支持
4.在vsftpd.conf文件中添加支持配置
5.为个别虚拟用户建立独立的配置文件
启动服务并测试
6.重新加载vsftpd配置
7.使用虚拟FTP账户访问测试
实验部分
1.建立虚拟FTP用户的帐号数据库文件用到db_load工具先安装软件包
rpm -ivh db4-utils-4.7.25-17.el6.x86_64.rpm
cd /etc/vsftpd/
2、创建虚拟用户文件
vim user
a
1
b
1
c
1
基数行代表用户名,偶数行代表密码
通过db_load工具创建出Berkeley DB格式的数据库文件
db_load -T -t hash -f user user.db
-f 指定数据原文件
-T允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
-t hash读取文件的基本方法
3、创建虚拟用户对应的系统用户
useradd -s /sbin/nologin vu
4、建立支持虚拟用户的PAM认证文件
vi /etc/pam.d/vsftpd.vu
加入以下两行
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
对应刚才生成user.db的文件
5、在vsftpd的配置文件中支持虚拟用户
注意:在做虚拟用户的时候,一定要去掉userlist_deny=NO
这个选项,否则会显示用户验证失败
vi /etc/vsftpd/vsftpd.conf
guest_enable=YES 启用用户映射功能
guest_username=vu 指定映射的系统用户名称
pam_service_name=vsftpd.vu 指定新的PAM认证文件
local_enable=YES
local_umask=077
chroot_local_user=YES 如果红色3条配置没有的话就会报错:用户身份验证失败
virtual_use_local_privs=YES
如果没有这条配置的话 上传将会显示错误.这条最重要
还要注意每行配值的末尾不要有空行,否则也会有报错
6.为个别虚拟用户建立独立的配置文件
vi /etc/vsftpd/vsftpd.conf 加入下面一行
user_config_dir=/etc/vsftpd/user_dir用户配置目录支持
为用户a、b建立独立的配置目录及文件 这一行也是必须有的
mkdir /etc/vsftpd/user_dir
vim a
local_root=/test 规定了a用户的根目录 注意:一定要把目录的属主改为虚拟用户对应的系统用户。
默认就是所有权限
总结:本地用户和虚拟用户不能同时登录、因为认证方式只有一种
本地是pam_service_name =vsftpd
虚拟是pam_service_name =vsftpd.vu
实验4