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

  近期公司收到这样一个需求:某部门需要和不同的供应商共享文件,各供应商之间不可共享(通过FTP共享)。

  FTP账号要求:某部门一个内部账号,供应商各一个外部账号,内部账号可以进各供应商账号目录。

  FTP权限要求:内部账号有所有权限,包括上传、下载、删除;外部账号只有上传、下载权限。

  FTP带宽限制:内部上传下载无限制,外部上传下载限速200KB。

  解决方法:

  1、在FTP服务器(vsftpd)上新建一个用户并指定目录(虚拟账号使用)

   [[email protected] ~]# useradd ftpgcb -s /bin/fail -d /home/gcb

  2、新建外部虚拟账号目录

   [[email protected] home]# mkdir -p /home/gcb/shxc

  3、修改虚拟目录所有权并授予权限755(可根据需要设置)

   [[email protected] home]# chmod -R 755 /home/gcb/

   [[email protected] home]# chown -R ftpgcb:ftpgcb /home/gcb/

  4、新建虚拟账号并生成数据库文件(奇数为账号,偶数为密码)

   内部账号:[[email protected] vsftpd]# vi vsftpd_login_intranet.txt

   [[email protected] vsftpd]# db_load -T -t hash -f vsftpd_login_intranet.txt vsftpd_login_intranet.db

   外部账号:[[email protected] vsftpd]# vi vsftpd_login_internet.txt

   [[email protected] vsftpd]# db_load -T -t hash -f vsftpd_login_internet.txt vsftpd_login_internet.db

  5、新建虚拟账号的配置文件

   内部账号:[[email protected] 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

   外部账号:[[email protected] 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    允许匿名用户上传

   anon_mkdir_write_enable=NO    禁止匿名用户创建目录

   anon_other_write_enable=NO    禁止匿名用户其他的权限

   guest_enable=YES        启用虚拟用户

   guest_username=ftpgcb    虚拟用户对应的本地用户账号

   local_root=/home/gcb/shxc    本地用户登入时的(定义的)目录

   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    允许文件下载到本地

   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文件系统:[[email protected] ~]# quotacheck -avug

   对账号设置配额限制quota(以K为单位),设置blocks相应的soft及hard值(30G,250000个文件)。

   [[email protected] ~]# 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

时间: 2025-01-13 14:28:22

RHEL vsftpd多个虚拟用户访问不同目录问题的相关文章

通过MySQL实现虚拟用户访问vsftpd服务器

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 通过MySQL实现虚拟用户访问FTP服务器. 配置 # 安装本次实验所用到的所有软件包 yum -y install vsftpd mysql-server mysql-devel pam-devel gcc-c++ make wget # 启动mysqld服务 service mysqld start # 初始化数据库管理员密码 mysq

mysql实现vsftp虚拟用户访问

使用MYSQL实现VSFTP虚拟用户访问 1.查看是否安装 mysql 安装包,没有就使用yum安装一下 2.查看是否安装vsftpd 软件包 如果没有就是用yum安装一下 3.查看mysql和ftp 服务是否为开机自启动如果不是就使用chkconfig 设置一下 4.登陆数据库 5.创建数据库名字vsftp 注意是后面使用分号 6.使用数据库vsftp并创建ftpuser 表 7.查看创建的ftpuser 是否成功,已经创建成功 8.插入数据名字为 yuri  和 kebo  密码为 1234

CentOS7 FTP服务搭建(虚拟用户访问FTP服务)

概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FTP服务器需要安装vsftp服务端软件.我们知道,在建立vsftpd用户时,我们一般是在linux下建立用户useradd的方式来访问ftp,但有时我们只想提供ftp服务,而避免用户用ftp的帐号去登录linux,采用一般的方式只能是限制该用户的访问权限,但还是避免不了用户登录进linux系统,所以比

CentOS 6.4下安装vsftpd、配置虚拟用户登录

概述: vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个. 本文介绍了在CentOS 6.4下安装vsftpd.配置虚拟用户登录FTP的过程. 正文: 一:安装vsftpd 查看是否已经安装vsftpd rpm -qa | grep vsftpd 如果没有,就安装,并设置开机启动 yum -y install vsftpd chkconfig vsftpd on 二:基于虚拟用户的配置 所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的.虚拟

在Centos7上使用vsftpd+pam_mysql实现虚拟用户认证

一.安装所需要程序 1.安装开发环境及所需要程序 # yum groupinstall -y "Development Tools" "Server PlatformDevelopment" # yum install -y pam-devel mariadb-devel mariadb-server vsftpd lftp ftp 启动服务: # systemctl start mariadb.service 2.编译安装pam_mysql-0.7RC1 # ta

vsftpd基于数据库文件实现虚拟用户管理站点目录

vsftpd基于数据库文件来实现虚拟用户管理站点目录: ftp授权单个系统用户管理(此用户要禁止登陆服务器),虚拟出多个虚拟用户来管理不同的站点目录 一环境:(1)关闭selinux,centos6.8 x_86_64开启防火墙,放开ftp的端口 (2).存放虚拟用户的密码文件[[email protected] vsftpd]# cat /etc/vsftpd/vsftpd_logindrxiaowu ##账户ZkJxu55rt9 ##密码yanyonGZk&aO=+w09xiaowuZk&am

centos 6 安装vsftpd与PAM虚拟用户

使用yum 安装vsftp 1 yum install vsftpd pam pam-* db4 db4-* 创建一个保存用户及密码的文件 1 cd /etc/vsftpd/ 2 touch vuser_passwd.txt 添加用户(奇行用户,偶行密码) 1 vim vuser_passwd.txt 2 3 tom 4 DSfaoewLD3 5 ken 6 GetpOIIofd324DLJhg 将文本内的帐号及密码添加到db4的数据库文件内 1 db_load -T -t hash -f /e

安装vsftp,虚拟用户访问

安装vsftp虚拟用户访问 安装主机:192.168.0.25 一.安装ftp 1.查看是否安装了vsftp rpm -qa | grep vsftpd 2.未安装vsftp,则执行下列命令安装 yum -y install vsftpd 二.修改vsftpd.conf配置文件 vi /etc/vsftpd/vsftpd.conf 修改下面配置 anonymous_enable=NO (不允许匿名用户登陆) local_enable=YES (允许本地用户登录) write_able=YES (

centos7搭建vsftpd并启用虚拟用户

虚拟用户的特点是只能访问服务器为其提供的FTP服务,不能访问系统的其它资源,所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其他资源,可以使用虚拟用户来提高系统的安全性. 在vsftpd中,谁这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证.使用这种方式更加安全,并且配置更加灵活. 安装vsftpd,Berkeley Database(db4) yum install vsftpd db4-utils db4 -y 创建虚拟用户数据库