Vsftpd实现虚拟账号

运维 系统运维
本文讲述的是如何在Vsftpd下实现虚拟账号。

  Vsftpd实现虚拟账号:

  1. 创建虚拟账号文件,奇数行为用户名,偶数行为口令:

  1.   vi /etc/vsftpd/account.txt  
  2.  
  3.   user1  
  4.  
  5.   pass1  
  6.  
  7.   user2  
  8.  
  9.   pass2  
  10.  

  2. 将虚拟账号加入数据库

  1.   db_load –T –t hash –f /etc/vsftpd/account.txt /etc/vsftpd_login.db  
  2.  
  3.   chmod 600 /etc/vsftpd_login.db  
  4.  

  3. 修改/etc/pam.d/ftp

  1.   auth required pam_userdb.so db=/etc/vsftpd_login  
  2.  
  3.   account required pam_userdb.so db=/etc/vsftpd_login  
  4.  

  4. 建立虚拟账号本地映射

  1.   useradd –d [vuser_home] –g [groupname] –G [addtogroup] –s /sbin/nologin vuser  
  2.  

  5. 或者直接编辑/etc/passwd设置虚拟账号本地不能登录

  1.   vi /etc/passwd  
  2.  
  3.   vuser:x:uid:gid::[vuser_home]:/sbin/nologin  
  4.  

  6. 设置虚拟账号本地映射目录权限

  1.   chgrp  
  2.  
  3.   chown vuser  
  4.  
  5.   chmod  
  6.  

  7. 配置/etc/vsftpd-pam.conf

  1.   anonymous_enable=NO 
  2.  
  3.   anon_upload_enable=NO 
  4.  
  5.   anon_mkdir_write_enable=NO 
  6.  
  7.   local_enable=YES 
  8.  
  9.   guest_enable=YES 
  10.  
  11.   guest_username=vuser 
  12.  

  8. 配置vsftpd自动运行,编辑/etc/profile,添加

  1.   /usr/local/sbin/vsftpd-pam /etc/vsftpd-pam.conf &  
  2.  

  锁定不同用户到不同目录,配置不同的读写权限配置/etc/vsftpd-pam.conf

  1.   #锁定用户目录  
  2.  
  3.   chroot_list_enable=YES 
  4.  
  5.   #指定用户配置文件位置  
  6.  
  7.   user_config_dir=/etc/vsftpd_user_conf  
  8.  

  配置/etc/vsftpd_user_conf/,添加与账号对应的userid文件,内容如下:

  1.   #指定用户登录根目录  
  2.  
  3.   local_root=[login_root]  
  4.  
  5.   #指定用户读写权限  
  6.  
  7.   write_enable=YES|NO  
  8.  
  9.   anon_world_readable_onlyYES|NO  
  10.  
  11.   anon_upload_enableYES|NO  
  12.  
  13.   anon_mkdir_write_enableYES|NO  
  14.  
  15.   anon_other_write_enableYES|NO  
  16.  
  17.   #指定用户下载速度  
  18.  
  19.   local_max_rate=500000 
  20.  

  更改vsftpd端口执行以下两行指令,只允许2121和2020端口打开,其余端口关闭:

  1.   #iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT  
  2.  
  3.   #iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset  
  4.  

  修改/etc/vsftpd/vsftpd.conf文件,在文本***添加以下两行:

  1.   listen_port=2121 
  2.  
  3.   ftp_data_port=2020 
  4.  

  只允许指定ip访问直接在/etc/hosts.allow中定义允许或拒绝某一源地址,可以通过以下配置来实现。先确保/etc/vsftpd/vsftpd.conf中tcp_wrappers=YES。

  假设提供168.192.2.1和210.31.8.1到210.31.8.254的连接,则可对/etc/hosts.allow进行如下设定:

  1.   vsftpd : 168.192.2.1 210.31.8. : allow  
  2.  
  3.   ALL : ALL : DENY  
  4.  

  给vsftpd增加新硬盘将新硬盘分区格式化后,挂到vsftpd用户目录下,并设定好用户为vuser,指定好读写权限。

  给vsftpd分配磁盘配额用系统自带磁盘配额,对vuser用户进行磁盘限额,修改/etc/fstab中根分区的记录,将/home分区的第4个字段改成defaults,usrquota,如下:

  1.   LABEL=/home /home ext3 defaults,usrquota 1 2  
  2.  
  3.   # reboot //重新启动系统使设置生效  
  4.  

  也可以用

  1.   # mount -o remount /dev/sda6 ///dev/sda6的挂接点就是/home,这样可以不用启动系统。  
  2.  

  如果对一个组进行磁配额,需要增加参数grpquota,例如

  1.   LABEL=/home /home ext3 defaults,grpquota 1 2  
  2.  

  也可以

  1.   LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2  
  2.  
  3.   # quotacheck -avu  
  4.  

  说明:a-自动开启挂载文件系统的配额,v-显示信息,u-启用用户配额or g-启用组配额

  1.   # edquota vuser //为用户ftpd设置磁盘配额  
  2.  
  3.   OR  
  4.  
  5.   # edquota -g vuser //为组vuser设置磁盘配额  
  6.  

  系统会自动打开配额文件,如下:

  1.   Disk quotas for user vuser(uid 502):  
  2.  
  3.   Filesystem blocks soft hard inodes soft hard  
  4.  
  5.   /dev/sda6 424 0 0 13 0 0  
  6.  

  ***列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数,单位为KB。随后的两列用来设置用户在该文件系统上的软硬块限度。inodes 列显示了用户当前使用的i节点数量。***两列用来设置用户在该文件系统上的软硬i节点限度。硬限是用户或组群可以使用的磁盘空间的绝对***值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的***磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为过渡期(grace period),默认七天的超越。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上值中的任何一个被设置为 0,那个限度就不会被设置。

  1.   # quotaon -avu //打开磁盘配额监控进程,u是用户g是组  
  2.  

  可以使用以下命令校验用户的配额是否被设置:

  1.   # quota vuser  
  2.  
  3.   Disk quotas for user vuser (uid 502):  
  4.  
  5.   Filesystem blocks quota limit grace files quota limit grace  
  6.  
  7.   /dev/sda6 424* 0 1 13 0 0  
  8.  
  9.   # edquota –t(-g)来设置过渡期(grace period) //当然只针对软限制而言  
  10.  

  和另一个 edquota 命令相似,这个命令也会在文本编辑器中打开当前的文件系统配额:

  1.   Grace period before enforcing soft limits for users:  
  2.  
  3.   Time units may be: days, hours, minutes, or seconds  
  4.  
  5.   Filesystem Block grace period Inode grace period  
  6.  
  7.   /dev/sda6 7days 7days  
  8.  

  按需要修改后存盘退出

  用以下命令显示磁盘配额使用状态

  1.   # repquota -a 或 repquota /dev/sda6(用户配额)  
  2.  
  3.   # repquota -g -a 或 repquota -a /dev/sda6 (组的配额)  
  4.  

  取消某个文件系统的配额限制

  1.   #quotaoff -vug /dev/sda6 //删除home分区的磁盘限额  
  2.  
  3.   #删除/etc/fstab中设置配额的部分  
  4.  

  修改软配额的***超越时间

  注意:

  /,/boot/,/proc,/mnt/cdrom等无法使用配额,没用。而且磁盘配额不适合FAT和FAT32系统。

  以后当新设置了某个用户的配额,可以使用如下命令,马上生效。

  1.   # quotacheck -auvgm --是不尝试重新挂载文件系统  
  2.  

【编辑推荐】

  1. VSFTPD配置虚拟FTP服务器
  2. Vsftpd下日志文件的分析(表)
  3. Vsftpd配置虚拟用户
责任编辑:zhaolei 来源: CSDN
相关推荐

2011-03-04 15:18:47

Vsftpd

2011-02-24 09:14:37

vsFTPd虚拟用户

2011-03-04 10:05:10

Vsftpd虚拟用户

2011-08-23 17:26:05

2010-07-01 13:35:51

vsftpd

2011-03-04 14:47:58

Vsftpd虚拟用户

2010-02-22 18:27:14

CentOS vsft

2010-12-27 13:26:25

FreeBSDvsftpd虚拟用户

2011-02-21 17:32:37

Vsftpd

2011-03-04 10:03:44

VSFTPD虚拟服务器

2011-03-03 17:02:50

Vsftpd

2010-01-13 16:13:38

centos vsft

2017-05-23 14:56:49

MySQLvsftpd虚拟用户

2010-01-13 13:57:09

CentOS vsft

2010-07-01 13:29:08

vsftpd

2010-07-13 15:23:10

vsftpd

2010-05-20 12:57:38

2011-03-02 09:31:13

2015-08-25 14:34:20

LinuxvsftpdFTP

2011-03-02 09:31:13

点赞
收藏

51CTO技术栈公众号