您的位置:首页 > 编程语言 > PHP开发

RHEL vsftpd多个虚拟用户访问不同目录问题

2015-03-30 14:28 781 查看
  近期收到这样一个需求:某部门需要和HK公司(internet)及不同的供应商共享文件,各供应商之间不可共享(通过FTP共享)。
  FTP账号要求:某部门一个内部账号,一个HK外部账号,供应商各一个外部账号,内部账号和HK账号可以访问各供应商账号目录。
  FTP权限要求:内部账号和HK账号有所有权限,包括上传、下载、删除;外部账号只有上传、下载权限。
  FTP带宽限制:内部账号上传下载无限制,HK账号上传下载限速500KB,供应商账号上传下载限速200KB。
  解决方法:
  1、在FTP服务器(vsftpd)上新建一个用户并指定目录(虚拟账号使用)
   [root@ftp ~]# useradd ftpgcb -s /bin/fail -d /home/gcb
  2、新建外部虚拟账号目录
   [root@ftp home]# mkdir -p /home/gcb/shxc
  3、修改虚拟目录所有权并授予权限755(可根据需要设置)
   [root@ftp home]# chmod -R 755 /home/gcb/
   [root@ftp home]# chown -R ftpgcb:ftpgcb /home/gcb/
  4、新建虚拟账号并生成数据库文件(奇数为账号,偶数为密码)
   内部账号:[root@ftp vsftpd]# vi vsftpd_login_intranet.txt
   [root@ftp vsftpd]# db_load -T -t hash -f vsftpd_login_intranet.txt vsftpd_login_intranet.db
   外部账号:[root@ftp vsftpd]# vi vsftpd_login_internet.txt
   [root@ftp vsftpd]# db_load -T -t hash -f vsftpd_login_internet.txt vsftpd_login_internet.db
  5、新建虚拟账号的配置文件
   内部账号:[root@ftp user_conf]# vi /etc/vsftpd/vsftpd_intranet/user_conf/ruisi
   主要的几个参数:
   write_enable=YES    anon_upload_enable=YES
   anon_mkdir_write_enable=YES anon_other_write_enable=YES
   guest_enable=YES guest_username=ftpgcb
   chmod_enable=YES anon_world_readable_only=NO
   connect_from_port_20=YES hide_ids=YES
   pasv_min_port=50000 pasv_max_port=60000
   tcp_wrappers=YES xferlog_std_format=YES
   xferlog_enable=NO log_ftp_protocol=NO
   ls_recurse_enable=NO ascii_download_enable=NO
   ascii_upload_enable=NO async_abor_enable=NO
   dirlist_enable=YES idle_session_timeout=120
   data_connection_timeout=300 accept_timeout=60
   connect_timeout=60 port_enable=YES
   download_enable=YES anon_max_rate=0
   chroot_local_user=NO deny_file={*.mp3,*.mov,.private}

  内部用户上级目录通用配置(/etc/vsftpd/vsftpd_intranet/vsftpd_intranet.conf):
   listen=YES listen_address=10.x.x.y (对内的IP地址)
   listen_port=21 anonymous_enable=NO
   local_enable=YES user_config_dir=/etc/vsftpd/vsftpd_intranet/user_conf
   local_max_rate=0 ftpd_banner=FTP Server
   banner_file=/etc/vsftpd/vsftpd_intranet/banner
   pam_service_name=ftp_e  use_localtime=YES

   外部账号:[root@ftp user_conf]# vi /etc/vsftpd/vsftpd_internet/user_conf/xinchun
   listen=YES 开启监听
   listen_address=10.x.x.x 设置监听的IP地址(对外的IP地址)
   listen_port=21 设置侦听的端口号
   max_clients=200 设置最大连接的IP数
   max_per_ip=4 设置第个IP允许与FTP服务器同时建立的连接数
   write_enable=YES 允许写入权限
   anon_upload_enable=YES 允许匿名用户上传 (如只允许下载不允许上传,可修改为NO)
   anon_mkdir_write_enable=NO 禁止匿名用户创建目录 (HK账号新建和删除权限需要YES)
   anon_other_write_enable=NO 禁止匿名用户其他的权限 (HK账号新建和删除权限需要YES)
   guest_enable=YES 启用虚拟用户
   guest_username=ftpgcb 虚拟用户对应的本地用户账号
   local_root=/home/gcb/shxc 本地用户登入时的(定义的)目录 (HK账号对应为上一级目录)
   chmod_enable=YES 允许本地用户使用chmod命令改变上传的文件权限
   local_umask=077 本地用户上传档案时的权限掩码(默认)
   file_open_mode=0666 本地用户上传档案后的档案权限(默认)
   anon_world_readable_only=NO 禁止匿名用户下载
   connect_from_port_20=YES 开启20端口连接
   hide_ids=YES 所有档案的拥有者与群组为虚拟用户对应的本地用户
   pasv_min_port=50000 设置被动模式数据连接可使用端口范围的最小端口(默认为0表示任意端口)
   pasv_max_port=60000 设置被动模式数据连接可使用端口范围的最大端口(默认为0表示任意端口)
   tcp_wrappers=YES 启用wrap配合vsftpd检查/etc/hosts.allow和/etc/hosts.deny中的设定来决定请求连接的主机是否允许访问FTP服务器(简易防火墙)
   xferlog_std_format=YES 启用xferlog标准日志格式(默认为关闭)
   xferlog_enable=NO 禁用上传/下载日志记录(默认为开启,记录保存在xferlog_file所定义的文件中)
   log_ftp_protocol=NO 禁用所有ftp请求和响应日志记录(默认为禁用,开启后日志将保存在/var/log/vsftpd.log,且xferlog_std_format不能被激活。此选项一般用于调试)
   ls_recurse_enable=NO 禁止登入者使用ls -R查看当前目录下子目录中的文件(默认禁止)
   ascii_download_enable=NO 禁用ASCII模式下载数据(默认为NO)
   ascii_upload_enable=NO 禁用ASCII模止上传数据(默认为NO)
   async_abor_enable=NO 禁用sync abor功能(启用时FTP命令将显示为"async ABOR",仅对高级客户端使用)
   dirlist_enable=YES 允许用户查看目录的内容
   idle_session_timeout=200 空闲用户会话的超时时间,200秒不对FTP服务器进行任何操作将断开FTP链接
   data_connection_timeout=300 设置建立FTP数据连接的超时时间5分钟
   accept_timeout=60 设置建立FTP连接的超时时间为60秒(默认)
   connect_timeout=60 响应主动模式下数据连接的超时时间为60秒(默认)
   port_enable=YES 开启主动模式
   download_enable=YES 允许文件下载到本地 (如只允许上传不允许下载,可修改为NO)
   anon_max_rate=200000 匿名用户的最大传输速度(200K,有80%-120%的浮动,0为无限制)
   local_max_rate=200000 本地用户的最大传输速度(200K,有80%-120%的浮动)
   chroot_local_user=YES 当chroot_list_enable=NO,所有的用户均不能切换到其他目录
   banner_file=/etc/vsftpd/vsftpd_internet/banner 设置包含当用户登录FTP时显示的内容的文件,会覆盖由ftpd_banner设置的字符串
   deny_file={*.mp3,*.mov,*.exe,.private} 设置拒绝访问的文件
   use_localtime=YES 使用本地用户所在的时区显示时间
   
  外部用户上级目录通用配置文件(/etc/vsftpd/vsftpd_internet/vsftpd_internet.conf):
   anonymous_enable=NO 禁止匿名用户登录

   local_enable=YES 允许本地用户登录
   user_config_dir=/etc/vsftpd/vsftpd_internet/user_conf 设定用户配置文件所在的目录(用户登录后会到指定的目录下读取与当前用户名相同的文件,并根据文件中的配置命令对当前用户进行更进一步的配置)
   ftpd_banner=FTP Server 设定FTP欢迎语的字符串(默认无)
   pam_service_name=ftp_i 设置PAM使用的文件名称(默认路径/etc/pam.d/)
  6、修改磁盘配额限制
   修改/etc/fstab,在/home所在行defaults后面加上逗号再加上usrquota后保存退出 
   使用quotacheck检查/home文件系统:[root@ftp ~]# quotacheck -avug
   对账号设置配额限制quota(以K为单位),设置blocks相应的soft及hard值(30G,250000个文件)。

   [root@ftp ~]# edquota -u ftpgcb
   Disk quotas for user ftpgcb (uid 509):
   Filesystem blocks soft hard inodes soft hard
   /dev/sda5 116 31457280 31458280 22 250000 253000
  7、重启服务,测试。

vsftpd的配置参考:
http://wiki.ubuntu.org.cn/Vsftpd
http://os.51cto.com/art/201008/222036.htm
http://yuanbin.blog.51cto.com/363003/108262/
http://blog.sina.com.cn/s/blog_946cb2b70100x4zc.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: