ACUA是一个基于Linux系统的用户帐户管理工具软件,它经常在ISP、BBS、校园远程拔入服务器、商用远程拔入服务器上。ACUA功能十分强大,使用它能够让你更加有效地管理各种用户帐号。
一、ACUA所能实现的功能
通过ACUA可以实现各种访问控制:
1) 临时冻结某个帐户;
2) 通过E-Mail向用户解释被系统踢出去的原因);
3) 当用户可用时间快到时,给予提示;
4) 当用户帐号快过期时,通过E-Mail给予提示;
5) 将已在系统上发呆太久的用户断开;
6) 对用户实施周期限制(如每天的哪些时间可登录,每月的哪些时间可登录);
7) 可以设定用户优先级:
a. 可将用户优先级映射成为CPU优先级;
b.如果系统需要踢出用户,则先踢低优先的用户;
8) 可以设定数据传输限制,可按每个帐户、也可按每个连接会话进行限制,它可分为传输总数、上载总数、下载总数。
另外,通过ACUA还可以进行各种有效的用户管理:
1) 自动删除过期的用户;
2) 可以临时为用户作一些访问权限增加;
3) 在新建用户时自己做call-back验证;
4) 能够收集、报告所有有效用户的状态信息;
5) 能够很方便地删除已删除用户遗留下的文件;
6) 能够很方便地杀死已删除用户遗留下的进程;
这个自由软件源于澳大利亚,截止到笔者写这篇文章时,最新版本是3.01版。你可以在http://acua.gist.net.au/files/下载到这个软件。
软件源程序包名称是:acua-3.01-2.tar.gz,它是使用gzip压缩过的,压缩后大小为138K。笔者在此假设你将这个软件下载后,存放在/usr/local目录下。另外,如果你想使安装更加简单一些,可以下载RPM格式的acua-3.01.i386.rpm文件。
三、 安装软件
这个软件的安装十分简单:
1. 以root用户登录系统;
2. 转到/usr/local目录,然后解压缩这个软件:
cd /usr/local
tar -zxvf acua-3.01-2.tar.gz
成功执行后,会在/usr/local目录下新生成一个acua-3.01目录。
1)cd acua-3.01
转入软件目录;
2)make dep
编译前进行一些依赖性检查;
3)make
开始编译软件,屏幕上将会出现许多以gcc开始的输出;
4)make install
最后执行make install命令,将出现以下输出,至此安装完成。
strip --strip-debug libacua.so.2
strip acua_login acua_logout acua_updated acua_verify clean_proc clean_tmp acuaa
install -c -m 0755 libacua.so.2 /usr/lib
ldconfig
install -c -m 0700 acua_adduser acua_deluser acua_nounsub /usr/sbin
install -c -m 0700 acua_login acua_logout acua_updated acua_verify clean_proc cn
install -c -m 0755 acua_stats acua_bytes acua_viewRec /usr/bin
install -c -m 0755 acua /usr/bin
chmod 6755 /usr/sbin/acua_login
chmod 6755 /usr/sbin/acua_logout
chmod 6755 /usr/sbin/acua_verify
if [ -d /usr/lib/acua ]; then
rm -rf /usr/lib/acua.old ;
mv /usr/lib/acua /usr/lib/acua.old ;
fi
mkdir /usr/lib/acua
mkdir /usr/lib/acua/record
mkdir /usr/lib/acua/record/archive
chmod 755 /usr/lib/acua
install -c -m 0644 lib/* /usr/lib/acu
在缺省情况下,ACUA的配置文件、E-mail消息、userbase等等都将存放在/usr/lib/acua目录下。而ACUA的可执行文件则存放在/usr/bin、/usr/sbin目录下,它们大都是以acua开头的。
四、使用之前的一些说明
1.如果想要使用ACUA控制正常的tty、telnet、ssh登录,那就必须先在用户登录之前运行acua_login程序。大多数人都喜欢使用bash,让bash启动时,会自动执行/etc/profile下的内容,我建议你在/etc/profile中加入一行:
/usr/sbin/acua_login logout
2.如果想使用其控制PPP登录,则需在pppd启动之前运行acua_login程序。
3.如果需要,你可以编辑acua_adduser和acua_deluser文件以适合你的系统;
4.如果需要编辑配置文件、消息文件的话,它们存放在/usr/lib/acua目录下;
5.应确保在系统启动时启动acua_updated程序。
五、 软件使用方法
ACUA软件是由acua程序和一些相关的程序组成的。
1.acua程序使用方法
ACUA软件最主要的一个程序就是存放在/usr/bin目录下的acua,它的命令格式是:
acua <子命令> {参数}
下面,我们就一起来看看acua命令的子命令选项,及其功用。
注:<>代表必选项,[]代表可选项,{}代表可选0个或多个。
1) acua adduser
调用acua_adduser脚本创建一个UNIX/ACUA用户帐号,使用时,将替换成相应的帐号。例如,我们要创建一个thing用户,则执行命令:
acua adduser thing
这个命令除了在系统上创建这个帐号,还完成addrec命令,在ACUA上创建这个帐号。
2) acua addRec [session_limit][priority] [ph_no] {class_limit}
这个命令用来创建一个ACUA的用户记录。通常,我们并不直接运行这个命令,因为执行时acua adduser命令时,这个命令就已经一起执行了。但有时,你还是可以通过直接运行,完成一些特殊的任务。以下是每个参数的说明:
:用户帐户名。
:用户帐户的有效期,你可以在此通过以下格式来说明(x是一个数):
x :表示x天,
xd :表示x天,
xm :表示x个月,
xy :表示x年,
或者直接使用日期格式:yy/mm/dd
注意:如果 = 0,则这个帐号将永不远期。而以x、xd、xm、xy这 种格式说明,表示从现在开始多少天后,多少月以后,多少年以后。
例如,我们在2000年12月3日创建的帐户中设置了=1y,那么,这个用户到了2001年12月3日就会失效。
:指定这个用户帐户总共能够使用多少时间。
注意:如果=-1,则表示没有时间限制。
[session_limit]:指定用户帐户总共能够使用多少session,如果没有给出,则缺省设置为。
注意:session_limit <= time_limit,如果session_limit=-1,那么表示没有限制。
[priority]:指定用户帐户的优先级(0-7,7代表最高优先级),缺省值为4。
[ph_no]:用户的电话号码。
{class_limit}:最多可以给出16个值,第1个是class 0,第2个是class1……等等。
3) acua ban [-l] [-p] |
这个命令用来禁止一个电话号码号一组电话号码。
-l:显示出所有被禁止的电话号码;
-p:用来指出所有被禁号码的前缀。
:该禁止的生效期,它的语法与acua rec相同。
:禁止一个指定的用户,设置后,这个用户将马上被断开,用户帐号被 删除,该电话号码被删除。
:指定要禁止的电话号码。以后将没有任何一个用户能够设置成为这个电话号码。
下面就是一些使用实例:
acua ban -p 0:凡是电话号码最前面是0的都禁止,也就是不允许外地用户;
acua ban -p 1234567:禁止电话1234567。
4) acua bytes
这个命令通过调用一个名叫acua_bytes脚本程序,显示出谁是传输数据最多的用户。
5) acua daysleft
这个命令将告诉所有的用户还有多少天,帐户将过期。
6) acua delUser
这个命令将调用acua_deluser脚本,删除一个UNIX/ACUA用户帐号。这个脚本将使用clean-up删除这个用户残留的文件,并且调用acua delrec将ACUA帐号记录删除。
7) acua delRec
删除一个ACUA帐号记录
8) acua dump {login}
这个命令将给出一个ACUA记录的报告。如果有给出{login}的话,则只报告列出帐号名的ACUA记录。否则就列出所有的帐号。
9) acua dumpStats [name]
这个命令将报告输出出一个文件,如果未给出文件名,则输出到overall文件中。
10)acua expire
这个命令用于将到期的帐户禁止,acua_updated会周期性调用,通常你无须手动调用。
11)acua forEach {-p n} {-r n} [-u]
这个命令允许你为每一个用户执行一个命令。如果在命令中出现“{}”符,则使用用户代替进去。
12)acua lock
暂时冻结一个用户帐号。
13)acua modRec
用于修改用户的ACUA记录信息。
14)acua pp
使用ACUA用户记录,处理中的预处理指令,输出到文件中去。
15)acua purge
这个命令将删除天没有使用的帐号,acua_updated会自动调用。
16)acua renew {-p n} {-r n} [-c] [-d] [-t]
执行这个命令后,用户的时间限制将重新开始计算。举例来说,如果一个帐户的时间限制是5天,过了两天后,用户应还有3天。这时如果执行这个命令后,用户余下的时间又有5天了。
17)acua subscribe [session_limit] [priority] {class_limit}
这个命令给用户加上一些说明。它的参数与addrec的类似。
18)acua timeLeft
这个命令可以输出用户所剩余的时间。
19)acua touch
这个命令用于修改一个用户的“最后在线时间”,使其等于当前时间。
20)acua unBan
取消用acua ban命令设置的禁止。
21)acua unLock
为用acua lock冻结的用户解冻。
2.相关的程序
与其相关的程序有不少,下面我们介绍一下几个最常用到的:
1) clean_proc,存放在/usr/sbin目录下,用来清除用户遗留下来的进程;
2) clean_tmp,存放在/usr/sbin目录下,用来清除用户遗留下来的文件;
3) acua_login,存放在/usr/sbin目录下,用来验证用户的登录;
4) acua_logout:存放在/usr/sbin目录下,用来退出登录;
5) acua_updated,存放在/usr/sbin目录下,监控系统,在有必要时断开用户的连接;
6) acua_verify,存放在/usr/sbin目录下,用于执行一个call-back验证;