RHEL 6.x 搭建企业级FTP
==============================
db4-utils+vsftpd 搭建虚拟用户
mysql+vsftpd 搭建虚拟用户
==============================
为企业搭建基于虚拟用户的FTP服务器是非常有必要的,因为虚拟用户是在服务器上面没有此用户,就算,恶意破坏系统安全的人员得到虚拟用户的账号和密码也不能通过此账号登录到系统,保证了系统的安全性。
相关阅读:
CentOS6 X64中VsFTP配置中的一个问题
Ubuntu下搭建tFTP服务器最简单方法
一、db4-utils+vsftpd 实现FTP的虚拟用户
1)安装db4-utils和vsftpd
yum -y install vsftpd db4-utils
vsftpd的虚拟用户数据库是使用Berkeley DB格式的数据库文件。建立该数据库文件需要用到db_load命令工具,db_load命令依赖于db4-utils软件包,所以需要安装db4-utils。
2)建立文本格式的用户名和密码列表文件
cat > /etc/vsftpd/virtual_user.list << EOF
user1 #奇数行为用户名,偶数行为前一行的用户名的密码
123
user2
456
EOF
#此文件中空格也代表一行,不要添加额外的行
3)把用户名和密码列表文件,使用db_load工具转化为DB数据库文件
[root@jie3 vsftpd]#db_load -T -t hash -f /etc/vsftpd/virtual_user.list /etc/vsftpd/virtual_user.db
[root@jie3 vsftpd]# file /etc/vsftpd/virtual_user.db
/etc/vsftpd/virtual_user.db: Berkeley DB (Hash, version 9, native byte-order)
#db_load -T:转换
# -t hash:指定读取数据文件的基本方法
# -f /etc/vsftpd/virtual_user.list:用户名和密码列表文件
#/etc/vsftpd/virtual_user.db:转化为Berkeley DB数据库文件
4)建立访问ftp的根目录及虚拟用户对应的系统账号
[root@jie3 vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
#此用户不能登录系统,-d指定此用户的家目录
[root@jie3 vsftpd]# chown virtual:virtual /var/ftproot/
[root@jie3 vsftpd]# chmod 755 /var/ftproot/
5)建立pam认证文件
[root@jie3 vsftpd]# cat > /etc/pam.d/vsftpd.vu << EOF
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/virtual_user
account required pam_userdb.so db=/etc/vsftpd/virtual_user
EOF
##db=/etc/vsftpd/virtual_user 指向刚才用db_load命令生成的数据库文件,后缀名.db可以不写
6)修改配置文件,使vsftpd能支持虚拟用户
######修改/etc/vsftpd/vsftpd.conf配置文件的内容###############
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES #启用用户映射功能
guest_username=virtual #将用户映射为之前创建的不能登录系统的用户virtual
pam_service_name=vsftpd.vu #指定pam认证的文件
local_root=/var/ftproot #指定ftp的根目录
user_config_dir=/etc/vsftpd/chroot_list #指定给用户配置权限目录的路径
7)创建为虚拟用户分配权限的目录,及设置虚拟用户权限的文件,此文件必须以虚拟用户名命名。
[root@jie3 vsftpd]# mkdir /etc/vsftpd/chroot_list
#创建配置文件里面通过user_config_dir定义的目录名称
[root@jie3 vsftpd]# touch /etc/vsftpd/chroot_list/user1
#创建之前以用户名命名为文件,此用户存在于用户名密码列表文件中
[root@jie3 vsftpd]# touch /etc/vsftpd/chroot_list/user2
[root@jie3 vsftpd]# cd chroot_list/
[root@jie3 chroot_list]# ls
user1 user2
[root@jie3 chroot_list]# echo "anon_upload_enable=YES" >>/etc/vsftpd/chroot_list/user1
#为user1用户,设置可以上传文件的权限
[root@jie3 chroot_list]# cat > /etc/vsftpd/chroot_list/user2 << EOF
> anon_upload_enable=YES #user2也可以上传文件的权限
> anon_mkdir_write_enable=YES #为user2用户设置可以创建文件的权限
> EOF
8)验证不同用户的不同权限