建立多个ftp虚拟机用户支持不同的访问权限实例

实验环境:

公司最近上了一款游戏,当游戏客户端登录到服务器有补丁更新时,是通过ftp来更新数据.所以需要建立一个普通虚拟用户账号,用于客户端登录ftp服务器更新补丁用,此账号只支持下载权限.由于平时我们也要维护服务器后台上传数据,需要建立一个专用虚拟用户账号,此账号拥有所有权限.还要把上传数据发布到普通虚拟用户家目录下,提供下载!


一个普通用户public:下载

一个专用用户personal:所有权限


解决方案:

1 创建用户数据库:

#vim /etc/vsftpd/vsftpd_login.txt
public   账号
public   密码
personal 账户
personal 密码

2 生成数据库:

db_load:安装 db4,db4-devel,db4-utils
#yum -y install db4*
#db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db

3 修改数据文件访问权限:

chmod 600  /etc/vsftpd/vsftp_login.db


4 修改pam配置:

#cat /etc/pam.d/vsftpd
将原来的全部注释掉,加入:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
注意:db=/etc/vsftpd/vsftpd_login 后面的.db必须去掉


5 创建虚拟账号对应的系统用户:


普通帐号public对应系统帐号ftp_public,并指定其主目录为/var/ftp/public

普通帐号public只允许下载,修改public目录其他用户权限为rx可读可执行


专用帐号personal对应系统帐号ftp_personal,指定主目录为/var/ftp/personal

专用帐号personal允许上传和下载,所以对personal目录权限设置为rwx,可读可写可执行,如果不设置可执行用户登录会出不能更改目录错误

# useradd -d /var/ftp/personal/ -s /sbin/nologin ftp_personal
# useradd -d /var/ftp/public/ -s /sbin/nologin  ftp_public
# chmod -R 500 /var/ftp/public/
# chmod -R 700 /var/ftp/personal/


6 为不同的虚拟用户创建不用的ftp权限:

#vim /etc/vsftpd/vsftpd.com
anonymous_enable=NO(修改配置)禁用匿名用户登录
write_enable=YES (默认开启)允许使用任何可以修改文件系统的FTP的指令
local_enable=YES(默认开启)启用本地用户登录设置
chroot_local_user=YES (自建配置)将所有本地用户限制在家目录中
pam_service_name=vsftpd(默认开启)配置vsftpd使用的PAM模块为vsftpd
user_config_dir=/etc/vsftpd/vsftpd_login (自建配置)设置虚拟帐号的主目录为/vsftpd_login
max_clients=300 (自建配置)设置FTP服务器最大接入客户端数为300个
max_per_ip=10 (自建配置)设置每个IP地址最大连接数为10个
listen=YES
port_enable=NO(自建配置)取消PORT模式进行数据传输
connect_from_port_20=NO (修改配置)PORT模式进行数据传输部使用20端口
pasv_enable=YES(自建配置)允许PASV模式进行数据传输
pasv_min_port=65341 (自建配置)PASV模式下数据传输所使用port范围下界
pasv_max_port=65351 (自建配置)PASV模式下数据传输所使用port范围上界

7 建立虚拟账户的配置文件:

在user_config_dir指定路径下,建立与虚拟帐号同名的配置文件并添加相应的配置字段

[root@red-hat-5 vsftpd]# mkdir /etc/vsftpd/vsftpd_login
[root@red-hat-5 vsftpd]# touch /etc/vsftpd/vsftpd_login/public
[root@red-hat-5 vsftpd]# touch /etc/vsftpd//vsftpd_login/personal

首先建立普通帐号public的配置文件

[root@red-hat-5 vsftpd_login]# echo guest_enable=yes >>public
[root@red-hat-5 vsftpd_login]# echo guest_username=ftp_public >>public
[root@red-hat-5 vsftpd_login]# echo anon_world_readable_only=no >>public
[root@red-hat-5 vsftpd_login]# echo anon_max_rate=50000 >>public
[root@red-hat-5 vsftpd_login]# cat public
guest_enable=yes   开启虚拟帐号登录
guest_username=ftp_public     设置虚拟用户public对应的系统帐号为ftp_public
anon_world_readable_only=no  不允许匿名用户浏览器整个服务器的文件系统
anon_max_rate=50000    限定传输速率为50KB/s

注意:

vsftpd对于文件传输速度限制并不是绝对锁定在一个数值上哈,而是在80%~120%之间变化哈~比如设置100KB/s则实际是速度在80KB/s~120KB/s之间变化哈~



接着建立专用帐号的配置文件personal

[root@red-hat-5 v:wqsftpd_login]# echo guest_enable=yes >> personal
[root@red-hat-5 vsftpd_login]# echo guest_username=ftp_personal >> personal
[root@red-hat-5 vsftpd_login]# echo anon_world_readable_only=no >> personal
[root@red-hat-5 vsftpd_login]# echo anon_mkdir_write_enable=yes >> personal
[root@red-hat-5 vsftpd_login]# echo anon_upload_enable=yes >> personal
[root@red-hat-5 vsftpd_login]# echo anon_max_rate=50000 >> personal
[root@red-hat-5 vsftpd_login]# cat personal
guest_enable=yes 开启虚拟帐号登录 
guest_username=ftp_ personal  设置虚拟用户对应的系统帐号为ftp_personal
anon_other_write_enable=YES   允许匿名账号具有删除.更名权限
anon_mkdir_write_enable=yes   允许创建文件夹
anon_upload_enable=yes        开启匿名帐号的上传功能
anon_world_readable_only=no   不允许匿名用户浏览整个服务器的文件系统
anon_max_rate=100000          限定传输速度为100KB/s
#service vsftpd restart


关于把上传数据发布到普通虚拟用户家目录下提供下载!

[root@red-hat-5 ~]# cp /var/ftp/personal/* /var/ftp/public/

把上传数据发布到普通虚拟用户家目录下提供下载

[root@red-hat-5 ~]# chown -R ftp_public.ftp_public /var/ftp/public/

更改public目录的所有者和属组为ftp_public,这样public用户才能下载   


你可能感兴趣的:(ftp,FTP服务器,解决方案,public,personal,游戏客户端)