专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Linux » linux磁盘限额:ProFTPD支持MySQL添加虚拟用户认证及磁盘限额 »正文

linux磁盘限额:ProFTPD支持MySQL添加虚拟用户认证及磁盘限额

来源: 发布时间:星期四, 2009年2月12日 浏览:44次 评论:0


前言

本文是根据实战而来最主要是帮助新手知道如何自架FTP本文也可以说是个简单使用例子;但不会把ProFTPD所有文档都详细介绍说明;也就是说简单安装和配置以及最简单使用让不懂ProFTPD弟兄比着“瓢”也能画出“葫芦”至于哪个FTP更好我想都是好只要会用就行;vsftpd 现在很流行;但ProFTPD也是种选择... ...

1、什么是ProFTPD;

ProFTPD 是个FTP服务器和vsftpd、wuftp 类似FTP服务器他们最终实现功能和目都是都是为了传输文件;

2、ProFTPD编译和安装;

2.1、ProFTPD

ProFTPD主页: http://www.proftpd.org
本教程选用版本: proftpd-1.3.0rc3.tar.gz
地址:

ftp://ftp.proftpd.org/distrib/source/
http://www.proftpd.org/download.html

2.2、编译安装;

编译安装时得用编译环境比如需要gcc如果少什么包您可以在系统安装盘中找到;或者在线升级也行;现在大多发行版都有支持在线升级软件Software包管理工具;比如RPM系统有yum和apt可用debian有apt可用 ... ... 另外Proftpd 用户认证是通过MySQL数据库来实现我们也得把Mysql数据库服务器也得安装上吧;这个不详细说了您自己看着办吧;

我们想把ProFTPD 安装在 /opt/proftpd 目录中我们把软件Software到 root用户家目录中安装软件Software需要 root权限如果您在普通用户下执行编译是到make 这步得通过su命令切换到root用户然后执行 make



[root@localhost ~]# pwd
/root
[root@localhost ~]# ls
proftpd-1.3.0rc3.tar.gz





解压、编译、安装
[root@localhost ~]# tar zxvf proftpd-1.3.0rc3.tar.gz
[root@localhost ~]# cd proftpd-1.3.0rc3
[root@localhost proftpd-1.3.0rc3]#./configure --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
--with-s=/usr//mysql \
--with-libraries=/usr/lib/mysql \
--prefix=/opt/proftpd



介绍说明:

--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql

这句是让编译ProFTPD 支持MySQL模块并有磁盘限额支持;

--with-s=

这是来指定MySQL服务器s所在位置;在这里我设置是/usr//mysqlMySQL服务器s确在这个目录;你可以根据自己机器环境来调整;

--with-libraries=
这是来指定MySQL服务器libraries所在位置;在这里我设置是/usr/lib/mysqlMySQL服务器libraries确在这个目录;你可以根据自己机器环境来调整;

--prefix=

这是用来指定要把ProFTPD安装在哪个位置在这里我把ProFTPD安装在了 /opt/proftpd 目录下您不必自己建目录 /opt/proftpd 在安装时候这个目录会自动生成;当然您也可以自己来指定ProFTPD安装位置;当我们不需要proftpd时候就可以直接删除proftpd目录;这样做好象是有点方便;

在configure过程中排查:

如果在configure过程中也就是上面./configure 长串指令执行后发生无非是编译工具缺少或者Mysqls和libraries目录指定不对;自己想想看?

编译和安装:

[root@localhost proftpd-1.3.0rc3]# make
[root@localhost proftpd-1.3.0rc3]# make



如果没有发生这样就安装好了您可以在 /opt/目录下看到个/opt/proftpd 目录;

[root@localhost proftpd-1.3.0rc3]# ls -ld /opt/proftpd/
drwxr-xr-x 8 root root 4096 1月 2 09:37 /opt/proftpd



3、ProFTPD认证中MySQL数据库

3.1、创建个ProFTPD数据库proftpd;

首先您应该会把MySQL数据库服务器打开以MySQL超级管理员root进入创建名为proftpd数据库;


[root@localhost ~]# mysql -uroot -p
Enter password: 注:在这里请您输入MySQL管理密码;
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 41 to server version: 4.1.11
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>create database proftpd;
mysql>Grant select,insert,update,delete,create,drop,index,alter,create temporary tables,lock tables _disibledevent=>

介绍说明:

create database proftpd; 这行是创建名为proftpd数据库;
Grant 这行是为proftpd 数据库授权让用户名为proftpd密码为123456(这只是个例子密码自己定义)这个用来管理proftpd这个数据库;
quit 这行是退出mysql界面;

3.2、导入proftpd数据库;

下面是个现成数据库你只需要导入就行了比较简单;把下面代码拷贝下来然后另存为 proftpd.sql;然后通过下面命令来导入;

[root@localhost ~]# mysql -uproftpd -p proftpd <proftpd.sql
Enter password: 在这里输入proftpd 数据库管理员proftpd 密码我们前面举例是123456以你设置为准;



下面是proftpd数据库您可以拷贝下来另存为 proftpd.sql 然后用上面命令来导入;

-- 数据库: `proftpd`
--
-- --------------------------------------------------------
--
-- 表结构 `ftpgroups`
--
CREATE TABLE `ftpgroups` (
  `groupname` varchar(30) NOT NULL default '',
  `gid` (11) NOT NULL default '1000',
  `members` varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- 表结构 `ftpusers`
--
CREATE TABLE `ftpusers` (
  `userid` varchar(30) NOT NULL default '',
  `passwd` varchar(80) NOT NULL default '',
  `uid` (10) unsigned NOT NULL default '1000',
  `gid` (10) unsigned NOT NULL default '1000',
  `homedir` varchar(255) NOT NULL default '',
  `shell` varchar(255) NOT NULL default '/sbin/nologin',
  `count` (10) unsigned NOT NULL default '0',
  `host` varchar(30) NOT NULL default '',
  `lastlogin` varchar(30) NOT NULL default '',
  UNIQUE KEY `userid` (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- 导出表中数据 `ftpusers`
--
INSERT INTO `ftpusers` VALUES ('test', 'test', 1000, 1000, '/home/test', '/sbin/nologin',0,'','');
-- --------------------------------------------------------
--
-- 表结构 `quotalimits`
--
CREATE TABLE `quotalimits` (
  `name` varchar(30) default NULL,
  `quota_type` enum('user','group','','all') NOT NULL default 'user',
  `per_session` enum('false','true') NOT NULL default 'false',
  `limit_type` enum('soft','hard') NOT NULL default 'soft',
  `s_in_avail` float NOT NULL default '0',
  `s_out_avail` float NOT NULL default '0',
  `s_xfer_avail` float NOT NULL default '0',
  `files_in_avail` (10) unsigned NOT NULL default '0',
  `files_out_avail` (10) unsigned NOT NULL default '0',
  `files_xfer_avail` (10) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- 表结构 `quotatallies`
--
CREATE TABLE `quotatallies` (
  `name` varchar(30) NOT NULL default '',
  `quota_type` enum('user','group','','all') NOT NULL default 'user',
  `s_in_used` float NOT NULL default '0',
  `s_out_used` float NOT NULL default '0',
  `s_xfer_used` float NOT NULL default '0',
  `files_in_used` (10) unsigned NOT NULL default '0',
  `files_out_used` (10) unsigned NOT NULL default '0',
  `files_xfer_used` (10) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;




4、ProFTPD配置文件proftpd.conf

在我们这个例子中ProFTPD配置文件在/opt/proftpd/etc目录中就是proftpd.conf文件;您可以把它改名备份;

[root@localhost ~]# cd /opt/proftpd/etc/
[root@localhost etc]# mv proftpd.conf proftpd.confBAK



然后再新建个 proftpd.conf 文件内容如下;您可以对这个文件进行相应调整;其中#号部份就是注掉不会生效;注意下MySQL连接数据库部份;另外如果您不是把ProFTPD安装在了/opt/proftpd目录下些东西也是需要调整;自己看着办吧;

# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.
ServerName "My TestFTP" #这是您FTP服务器名字自己写定
ServerType standalone
ServerAdmin [email protected] #这是管理员信箱自己来写;
DefaultServer _disibledevent=>SQLNamedQuery getlastlogin SELECT "lastlogin from ftpusers where userid='%u'"
SQLNamedQuery updatelogininfo UPDATE "count=count+1,host='%h',lastlogin=current_timestamp WHERE userid='%u'" ftpusers
SQLShowInfo PASS "230" "You've logged _disibledevent=>SQLNamedQuery get-quota-tally SELECT "name, quota_type, s_in_used, s_out_used, \
s_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies \
WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "s_in_used = s_in_used + %{0}, \
s_out_used = s_out_used + %{1}, s_xfer_used = s_xfer_used + %{2}, \
files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, \
files_xfer_used = files_xfer_used + %{5} \
WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
#--------- load qudes.mod for Quota limit --------#
# Logging options
# Debug Level
# emerg, alert, crit (empfohlen), error, warn. notice, info, debug
#
SyslogLevel emerg
Log /var/log/proftpd.system.log
TransferLog /var/log/proftpd.xferlog
# Some logging formats
#
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
# Log file/dir access
# ExtendedLog /var/log/proftpd.access_log WRITE,READ write
# Record all logins
ExtendedLog /var/log/proftpd.auth_log AUTH auth
# Paranoia logging level....
ExtendedLog /var/log/proftpd.paranoid_log ALL default
#注;上面几行是存放log设置不必改动也行;查看log就到上面相应文件看吧;
# To prevent DoS attacks, the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at _disibledevent=>




5、系统用户和用户组ftpUID和GID调整;

由于我们在配置文件中把ftp用户和用户组UID和GID都设置为了1000;所以我们得调整下/etc/passwd 和/etc/group中有关ftp用户和用户组行;把UID和GID都改为1000;

您可以在/etc/passwd 中找到 ftp用户比如类似下面这行

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin


在这行中14是ftp用户UID,我们要改为100050为ftp用户组GID也改为1000,其它可以不变;也就是

ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin


接着我们再找到 /etc/group ;在这个文件中找到类似如下

ftp:x:50:


把这行中50改为1000;也就是这样

ftp:x:1000:



6、启动ProFTPD并测试;

[root@localhost ~]# /opt/proftpd/sbin/proftpd
[root@localhost ~]# pgrep proftpd
17965



介绍说明:上面就把proftpd 启动起来了;我们通过pgrep 来查看是否有ProFTPD进程查看得知已经有了;证明服务器已经启动我们进入测试阶段;

测试:测试帐号是test密码是test;您可以用ftp命令来测试也可以用lftp来测试也可以用gftp来测试;找个FTP客户端就行;这个test帐号是如何来回头看下proftpd.sql那段代码中是否有下面这行;

INSERT INTO `ftpusers` VALUES ('test', 'test', 1000, 1000, '/home/test', '/sbin/nologin',0,'','');


这是我在写文档时添加个测试帐号;只要您把proftpd.sql文件导入了就有这个帐号;您当然也可以删除它;上面这行说是在ftpusers表中添加个录;也就是ftp用户记录;在本文最下面有介绍说明如何通过MySQL来管理帐号;在这里我们只是测试是不是FTP能用了;

在默认情况下test用户家目录是在/home/test密码是test;而/home/test是当您第次以用户test登录时系统自动建立;这些都自动

如果您用ftp命令连接

[root@localhost home]# ftp localhost
Connected to localhost.localdo.
220 ProFTPD 1.3.0rc3 Server (My TestFTP) [127.0.0.1]
500 AUTH not understood
500 AUTH not understood
KERBEROS_V4 rejected as an authentication type
Name (localhost:beinan): test 注:用户名
331 Password required for test. 注:密码
Password:
230-You've logged _disibledevent=>

如果您用lftp 来连接测试

[root@localhost home]# lftp test:test@localhost 注:登录;
lftp test@localhost:~> ls 注:列目录;
lftp test@localhost:/> put /home/beinan/fcitx-3.2-051108.tar.bz2
4164490 s transferred 注:上传测试;
lftp test@localhost:/> ls 注:查看是否成功;OK成功
-rw-r--r-- 1 test ftp 4164490 Jan 2 05:03 fcitx-3.2-051108.tar.bz2



介绍说明:

如果您想远程连接请把localhost改为实际ip地址比如我机器在本地网是192.168.1.5那就把localhost改为192.168.1.5;如果您想在公网测试请把localhost改为公网IP地址;

请查看是否有/home/test这个目录 ?是不是FTP服务器自己建了个?答案是肯定... ...

7、有关ProFTP服务器管理、用户管理和磁盘限额管理

7.1 ProFTPD 服务器管理;

ProFTPD服务器启动是在安装目录sbin中也就是proftpd;我们还是以安装目录/opt/proftpd 为准来介绍说明;

[root@localhost ~]# /opt/proftpd/sbin/proftpd 注:服务器启动;
[root@localhost ~]# pgrep proftpd 注:查看服务器是不是启动起来了;如果没有进程介绍说明失败;
[root@localhost ~]# pkill proftpd 注:杀死proftpd进程;也就是关掉服务器;



注意:我们更改proftpd.conf后要重启proftpd 否则改动不会生效这时就要用到pkill proftpd 然后再重启proftpd 服务器;每次改动proftpd.conf都要这么做;

下面是几个查看ProFTPD服务器状态命令您也可以尝试具体使用方法自己尝试吧;

[root@localhost ~]# /opt/proftpd/bin/ftpcount
[root@localhost ~]# /opt/proftpd/bin/ftpwho
[root@localhost ~]# /opt/proftpd/bin/ftptop
[root@localhost ~]# /opt/proftpd/bin/ftpdctl




7.2 通过MySQL来管理FTP用户

在本文档中ProFTPD 对FTP用户是通过MySQL来进行现在我们分析下我们前面所提到proftpd数据库;ftp所有用户都装在ftpusers这个表中我们先分析下这个表;分析这个表是我们能明白如何添加用户;

首先我们以proftpd 用户和密码登录到MySQL;并查看ftpusers表结构;

[root@localhost ~]# mysql -uproftpd -p
Enter password: 注:在这里输入proftpd用户密码;
mysql> 注:成功进入;



mysql> show databases; 注:查看数据库都有哪些;
+----------+
| Database |
+----------+
| proftpd |
| test |
+----------+
2 rows in (0.00 sec)
注:我们看到了proftpd 还是存在



mysql> use proftpd; 注:要对proftpd 数据库进行操作我们要先USE(用)proftpd数据库;


mysql> show tables; 注;我们在执行use proftpd;后我们再查看proftpd中所有表;
+-------------------+
| Tables_in_proftpd |
+-------------------+
| ftpgroups |
| ftpusers |
| quotalimits |
| quotatallies |
+-------------------+
4 rows in (0.00 sec)



我们要查看ftpusers 这个表结构我们要用到 DESCRIBE 这个指令后面接表名称;
mysql> DESCRIBE ftpusers;
+-----------+------------------+------+-----+---------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------------+-------+
| userid | varchar(30) | | PRI | | |
| passwd | varchar(80) | | | | |
| uid | (10) unsigned | | | 1000 | |
| gid | (10) unsigned | | | 1000 | |
| homedir | varchar(255) | | | | |
| shell | varchar(255) | | | /sbin/nologin | |
| count | (10) unsigned | | | 0 | |
| host | varchar(30) | | | | |
| lastlogin | varchar(30) | | | | |
+-----------+------------------+------+-----+---------------+-------+
9 rows in (0.00 sec)



介绍说明:

userid 就是FTP用户名这个是必填写字段;
passwd 是FTP用户密码这个是必填写字段;
uid和gid字段默认是1000;
homedir 是FTP用户家目录放在哪里要自己指定;
shell 这个是用来指定用户是否能登录系统这里默认是不能登录是虚拟用户所以不能让虚拟用户来登录系统;所以默认是/sbin/nologin;
count 是访问次数默认是0;
host 是登录FTP服务器IP地址记录可以不设置;服务器会自己纪录;
lastlogin 是最后登录时间这个也是自动生成可以不必理会;

如何添加用户呢?

其实添加用户过程也就是向proftpd 数据库中表ftpusers插入纪录过程;我们上面分析了表结构;那我们就按其要求来插入用户纪录;

我们看看ftpusers表中有哪些纪录;


mysql> select * from ftpusers;
+--------+--------+------+------+------------+-----------+-------+-----------+---------------------+
| userid | passwd | uid | gid | homedir | shell | count | host | lastlogin |
+--------+--------+------+------+------------+-----------+-------+-----------+---------------------+
| test | test | 1000 | 1000 | /home/test | /bin/bash | 8 | 127.0.0.1 | 2006-01-02 13:03:10 |
+--------+--------+------+------+------------+-----------+-------+-----------+---------------------+
1 row in (0.01 sec)



尝试插入条纪录

比如我们想加个用户用户名为test2密码为test2UID和GID为都为1000,家目录位于/home/test2;值得注意是UID和GID只能是1000,我们在系统用户设置中做了改动;前面有提到;我们添加所有FTP用户UID和GID都是 1000;

所以如果您添加用户时只是改下userid、passwd和homedir字段处就行了其它不必改动当然您非常性MySQL也没有什么不可;

INSERT INTO `ftpusers` VALUES ('test2', 'test2', 1000, 1000, '/home/test2', '/sbin/nologin',0,'','');


查看是否插入成功

mysql> select * from ftpusers;
+--------+--------+------+------+-------------+---------------+-------+-----------+---------------------+
| userid | passwd | uid | gid | homedir | shell | count | host | lastlogin |
+--------+--------+------+------+-------------+---------------+-------+-----------+---------------------+
| test | test | 1000 | 1000 | /home/test | /bin/bash | 8 | 127.0.0.1 | 2006-01-02 13:03:10 |
| test2 | test2 | 1000 | 1000 | /home/test2 | /sbin/nologin | 0 | | |
+--------+--------+------+------+-------------+---------------+-------+-----------+---------------------+
2 rows in (0.00 sec)

再举例;添加个用户名为test3密码为test3 并且把test3家目录放在/opt/test3中;
mysql> INSERT INTO `ftpusers` VALUES ('test3', 'test3', 1000, 1000, '/opt/test3', '/sbin/nologin',0,'','');


添加好后测试下用户test3是否能登录并且上传文件;下面例子证明是成功

[root@localhost ~]# lftp test3:test3@localhost
lftp test3@localhost:~> ls
lftp test3@localhost:/> put /home/beinan/fcitx-3.2-051108.tar.bz2
4164490 s transferred
lftp test3@localhost:/> ls
-rw-r--r-- 1 test3 ftp 4164490 Jan 2 06:08 fcitx-3.2-051108.tar.bz2
lftp test3@localhost:/>



如果你想删除个用户您可以用 MySQLdelete 指令;比如我想删除test2这个用户;可以用.....

mysql> DELETE FROM ftpusers WHERE userid="test2";


如果想更新条用户纪录比如test用户密码字段;

mysql> update ftpusers passwd="aaasss" where userid="test";


也就是说你想更新用户纪录那个字段就更新什么下面公式;

mysql>update 数据表 字段="赋值" where 关健字段="字段值";


在这里关健字段是唯这样才能找到你所要更新纪录表达不太好;如果不太熟悉慢慢理解吧;我也不会MySQL;呵难为人师...... 在这里我们还是把userid 做为关健字段只有这个字段才是唯

再比如我们想更新用户家目录比如我想把test用户家目录改到 /opt/test;

mysql> select userid,homedir from ftpusers where userid="test";
+--------+-----------+
| userid | homedir |
+--------+-----------+
| test | /home/test |
+--------+-----------+



通过上面我们得知test目前家目录在/home/test下面我们来更改到/opt/test;

mysql> update ftpusers homedir="/opt/test" where userid="test";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select userid,homedir from ftpusers where userid="test";
+--------+-----------+
| userid | homedir |
+--------+-----------+
| test | /opt/test |
+--------+-----------+



7.3 ProFTPD 用户磁盘限额管理;

我们在前面所导入proftpd 数据库中有这样段;

CREATE TABLE `quotalimits` (
  `name` varchar(30) default NULL,
  `quota_type` enum('user','group','','all') NOT NULL default 'user',
  `per_session` enum('false','true') NOT NULL default 'false',
  `limit_type` enum('soft','hard') NOT NULL default 'soft',
  `s_in_avail` float NOT NULL default '0',
  `s_out_avail` float NOT NULL default '0',
  `s_xfer_avail` float NOT NULL default '0',
  `files_in_avail` (10) unsigned NOT NULL default '0',
  `files_out_avail` (10) unsigned NOT NULL default '0',
  `files_xfer_avail` (10) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;



介绍说明:

上面其实就是在proftpd库中创建个表quotalimits;我们在proftpd数据库中再来查看下quotalimits表结构这样方便我们理解和使用磁盘限额;

mysql> DESCRIBE quotalimits; +------------------+------------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------------------------+------+-----+---------+-------+ | name | varchar(30) | YES | | NULL | | | quota_type | enum('user','group','','all') | | | user | | | per_session | enum('false','true') | | | false | | | limit_type | enum('soft','hard') | | | soft | | | s_in_avail | float | | | 0 | | | s_out_avail | float | | | 0 | | | s_xfer_avail | float | | | 0 | | | files_in_avail | (10) unsigned | | | 0 | | | files_out_avail | (10) unsigned | | | 0 | | | files_xfer_avail | (10) unsigned | | | 0 | | +------------------+------------------------------------+------+-----+---------+-------+

介绍说明;

quotalimits
     name - username
     quota_type - user, group, , all (we use user)
     per_session - true or false (we use false)
     limit_type - quota limit type - hard or soft (we use soft)
     s_in_avail - upload limit in s - allowed s _disibledevent=>

name 应该这样理解既能表示单个用户也能表示用户组名;如果我们在quota_type(限额类型)中使用group来认证那就得在这里设置组名这样整组都具有统磁盘限额特性;当然您要在ftpgroups表中插入组纪录;并且在member字段中得把用户列进去这是后话了;先自己研究只是插入纪录事;我们只说最简单单个用户磁盘限额;默认值可以为空NULL如果为空则针对所在有quota_type中设置类型比如在quota_type中设置为user 就是针对所有ftpusers 中用户起作用;如果是group名也是对ftpgroups 所有组作用;

quota_type 磁盘限额类型可以设置为用户也可以设置为用户组group ;如果您name写是用户组那在这里就得设置为group来认定;默认为user认证;

per_session 默认为false;
limit_type 默认为soft;
s_in_avail 用户占用空间大小也就是家目录空间最大可以让用户占用多少单位是;默认为00是不受限制以下同理;

s_out_avail 注;所有下载文件总和默认为0;

s_xfer_avail 注;个用户上传下载流量总和默认为0

files_in_avail 注:限制上传文件总数默认为0;

files_out_avail 注;限制下载文件个数总计默认为0

files_xfer_avail 注:允许下载和上传文件总和我默认为0;

由此看来我们比如想让test用户约束空间大小为100M其它不受限制;则可用下面mysql命令添加;

先让我们对照quotalimits表结构然后根据表结构来添加;

mysql> describe quotalimits; +------------------+------------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------------------------+------+-----+---------+-------+ | name | varchar(30) | YES | | NULL | | | quota_type | enum('user','group','','all') | | | user | | | per_session | enum('false','true') | | | false | | | limit_type | enum('soft','hard') | | | soft | | | s_in_avail | float | | | 0 | | | s_out_avail | float | | | 0 | | | s_xfer_avail | float | | | 0 | | | files_in_avail | (10) unsigned | | | 0 | | | files_out_avail | (10) unsigned | | | 0 | | | files_xfer_avail | (10) unsigned | | | 0 | | +------------------+------------------------------------+------+-----+---------+-------+ 10 rows in (0.00 sec)

添加记录

mysql>insert o quotalimits VALUES ('test','user','false','soft','104857600','0','0','0','0','0');


运算公式:

1Kb=1024
1M=1024 Kb
100M=100x1024 Kb= 100x1024x1024 =104857600

注意:磁盘限额生效必须让FTP用户重新登录才有效;比如test用户正在ftp上这时要先退出然后再登录这是磁盘限额就有效了;

查看用户空间使用情况

登录FTP后用下面命令;

quote site quota;


举例:

lftp [email protected]:/> quote site quota;
200-The current quota for this session are [current/limit]:
 Name: test
 Quota Type: User
 Per Session: False
 Limit Type: Soft
   Uploaded Mb: 19.00/95.37
   Downloaded Mb: unlimited
   Transferred Mb: unlimited
   Uploaded files: unlimited
   Downloaded files: unlimited
   Transferred files: unlimited
200 Please contact [email protected] these entries are inaccurate

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: