admin 管理员组

文章数量: 887021


2024年3月6日发(作者:isalpha在c语言中的意思)

Freeradiusforwin安装配置手册

Free radius for win 安装配置手册

一、参考1

前几天由于网络方案测试需要radius服务器,从网络上找了一下,都说Freeradius最好,但就是没有详细的配置手册,一边学习一边测试,有一点心得,与大家分享。

Freeradius是免费下载源代码的,有能力的朋友可以下载后自己编译,本人很懒呀,就直接下载了windows下的安装版本,也就是别人编译好的1.1.5版本。采用默认安装在C盘,主要需要修改的是在etc/raddb中的文件,下面分别说明:

(1)主配置文件是:

首先是是环境变量

prefix = /usr/local

exec_prefix = ${prefix}

sysconfdir = ${prefix}/etc

localstatedir = ${prefix}/var

sbindir = ${exec_prefix}/sbin

logdir = ${localstatedir}/log/radius

raddbdir = ${sysconfdir}/raddb

radacctdir = ${logdir}/radacct

配置文件和日志文件的位置

confdir = ${raddbdir}

run_dir = ${localstatedir}/run/radiusd

日志文件的信息,添加到如下配置文件的底部

log_file = ${logdir}/

以下是全局配置

模块的位置由libdir来配置。

如果不能工作,那么你可以从新配置,从新Build源码,并且使用共享库。

pidfile: Where to place the PID of the RADIUS server.

pidfile = ${run_dir}/

user/group

如果有评论,服务器会运行用户/组启动它. 修改用户/组,必须具有root权限启动服务器这里的含义是指定启动radius服务可以限定操作系统上的用户和组,但是不建议启动它. #user = nobody

#group = nobody

最长请求时间(秒),这样的问题经常需要存在在应用SQL数据库时候,建议设置为5秒到120秒之间.

max_request_time = 30

当请求超过最长请求时间的时候,可以设置服务器删除请求.

当你的服务在threaded(线程下)运行,或者线程池(thread pool)

模式,建议这里设置为no. 但用threaded 服务设置为yes时,有可能使服务器崩溃.

delete_blocked_requests = no

在reply 发送给NAS后的等待清空时间. 建议2秒到10秒

cleanup_delay = 5

服务器的请求最大数,建议值256 到无穷

max_requests = 1024

让服务器监听某个IP,并且从次IP发送相应信息. 主要是为了服务器同时具有多服务器时候

使用.

bind_address = *

可以指定raidus的使用端口号,使用0表示使用默认的radius端口,在配置文件/etc/services 配置.

port = 0 //与NAS上配置的端口号要相同

(2)是用来配置哪些NAS可以访问radius,语法如下:

client 192.168.100.0/24 { //NAS的IP地址,可以是网段,NAS是指在那些启用了AAA 指定radius服务器的设备。

secret = azalea // NAS与radius间的通信密码key

shortname = /doc/, //域名,可以随便写。

nastype = other //可以不写,指定nas的类型,通常radius能自己识别。}

(3):是用来配置用户信息的。语法如下:

ming Auth-Type := EAP, User-Password == "123456" //ming为用户名,后面跟认证类型与密码。

EAP-Type := peap

radiusadmin Auth-Type := Local, Cleartext-Password :=

"radiusadmin"

Service-Type = NAS-Prompt-User, cisco-avpair = "shell:priv-lvl=15"

(4) acct_users:计费用户设定:语法如下:

DEFAULT Acct-Status-Type == Start

Exec-Program = "/aaa/acctStart"

DEFAULT Acct-Status-Type == Stop

Exec-Program = "/aaa/acctStop "

(5):是用来配置eap的相关参数,语法如下:

eap {

default_eap_type = md5

timer_expire = 60

ignore_unknown_eap_types = no

cisco_accounting_username_bug = no

md5 {

}

leap {

}

tls {

private_key_password = whatever

private_key_file = ${raddbdir}/certs/

certificate_file = ${raddbdir}/certs/

CA_file = ${raddbdir}/certs/demoCA/

dh_file = ${raddbdir}/certs/dh

random_file = ${raddbdir}/certs/random

fragment_size = 1024

include_length = yes

check_crl = yes

check_cert_issuer

"/C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd"

check_cert_cn = %{User-Name}

cipher_list = "DEFAULT"

}

ttls {

default_eap_type = md5

copy_request_to_tunnel = no

use_tunneled_reply = no

}

peap{

default_eap_type = mschapv2

}

mschapv2 {

}

}

配置完这些后,运行/doc/,后,右键点击任务栏出现start /doc/,

in Debug mode后,直到出现以下信息才算正常:

直到出现以下信息才算正常

Listening on authentication *:1812

Listening on accounting *:1813

Ready to process requests.

=

如果用cisco的三层交换机做NAS,要做如下配置:

aaa new-model

aaa authentication dot1x default group radius

aaa authorization network default group radius

dot1x system-auth-control

radius-server host 192.168.100.2 auth-port 1812 acct-port

1813 key azalea

如果要使用户用802.1x认证,在交换机端口下启用802.1x时的配置:

Dot1x port-control auto

Dot1 multi-host //这是由于通常一个交换机端口下不至一个用户。

(5):是用来配置eap的相关参数,语法如下:

eap {

default_eap_type = md5

timer_expire = 60

ignore_unknown_eap_types = no

cisco_accounting_username_bug = no

md5 {

}

leap {

}

tls {

private_key_password = whatever

private_key_file = ${raddbdir}/certs/

certificate_file = ${raddbdir}/certs/

CA_file = ${raddbdir}/certs/demoCA/

dh_file = ${raddbdir}/certs/dh

random_file = ${raddbdir}/certs/random

fragment_size = 1024

include_length = yes

check_crl = yes

check_cert_issuer

"/C=GB/ST=Berkshire/L=Newbury/O=My Company Ltd"

check_cert_cn = %{User-Name}

cipher_list = "DEFAULT"

}

ttls {

default_eap_type = md5

copy_request_to_tunnel = no

use_tunneled_reply = no

}

peap{

default_eap_type = mschapv2

}

mschapv2 {

}

}

二、参考2

FreeRadius的官方网站:

/doc/,

还有一个很奇怪的/doc/, ,提供Windows版本的下载(木马???)。下面分别介绍FreeRadius在Linux和Windows上的安装过程,以及与MySQL的集成。

phpmyprepaid

/doc/,/projects/phpmyprepaid

Linux下的FreeRadius

这里安装MySQL的过程略去。

编译安装

=

从/doc/, 下载最新版本(这里是2.0.5,Linux是Fedora 8)的tar包,解压缩。

运行./configure |grep mysql_config,如果没有输出或者提示没有mysql的支持,那么需要安装mysql_devel包,运行:yum install

"mysql_devel"

安装完mysql_devel后,运行./configure; make; make install 完成安装。

如果不指定prefix,默认安装到/usr/local下。

配置

配置文件在/usr/local/etc/raddb下。

MySQL 配置

在MySQL中创建需要的表。进入sql/mysql目录,运行如下命令:

#] mysql -u root -p

mysql> create database

mysql> exit

#] mysql -uroot -prootpass radius <

#] mysql -uroot -prootpass radius <

#] mysql -uroot -prootpass radius <

注意中创建了radius数据库用户和密码,并对radius用户进行了授权。后面如果使用daloRadius,需要radius用户对radius数据库的其他表也拥有权限。因此,这里可以顺便修改,把授权语句改成grant all privileges on radius.* to

'radius'@'%';

如果使用daloRadius需要进入aaa/contrib/db,用在前面创建的radius 数据库添加表。

Radius配置

编辑site_enabled/default文件,把authorize, accounting,

session, postauth这几个section里的sql注释去掉。

编辑里,设置正确的数据库主机、数据库用户名、密码。

编辑,设置允许任何NAS访问Radius服务器。在文件最后添加下面一段:client 0.0.0.0/1 {

secret = testing123

shortname = all-net

}

然后就可以启动radius了:radiusd -X

Windows下的FreeRadius

与Linux主要区别源于FreeRadius的版本差异。这里是 1.1.7版,Windows Server 2003 Professional。MySQL的配置基本同上,但是Windows版本在sharedocfreeradiusexamples 提供了文件,用来创建radius数据库的表。

从/doc/, 下载安装程序,安装到c:/doc/,目录。然后修改etc/raddb下的文件。找到authorize, accounting,

session这几个section,把sql 的注释去掉。与上面同样修改和文件。

注意:这里一定要用支持unix/dos转换格式的编辑器修改,例如UltraEdit。如果用notepad/wordpad之类修改将导致文件格式混乱。

注意2*:记着修改,把里面的Auth-Type = System两行注释掉。否则后面验证会出错。

之后,在cmd下运行start_radiusd_debug启动radiusd服务。

daloRadius的安装配置

下载后解开到Web主目录的aaa目录下,进入library目录,修改文件,填写正确的数据库名称、用户名和密码。

进入aaa/contrib/db,用在前面创建的radius数据库添加表。

访问aaa/,出现登录页面,如果登录后出错或者什么也不显示,则可能是PEAR没装。参见下面的链接完成安装,其中一定要安装DB包:

/doc/,/manual/en/installati

安装完成后,根据PAER的安装信息,修改aaa/library/文件,修改的真实路径(最好用全路径)。之后,应该就可以登录daloradius了。

三、参考3(实际配置案例)

三友认证计费系统详细配置步骤

1、安装freeradius1.1.4的版本

1、# tar -xvf

2、# cd freeradius-1.1.4

3、# ./configure -localstatedir=/var -sysconfdir=/etc

4、# make

5、# make install

至此freeradius安装完毕

二、mysql数据库服务器操作

1、rpm -qa|grep mysql 查看是否安装mysql数据库程序

2、service mysqld start 启动mysql数据库程序

3、/usr/bin/mysqladmin password '336699' 修改mysql用户的root的密码

4、mysql -u root -p

enter password: 336699 (输入密码,无显示)

5、mysql> CREATE DATABASE radius;

6、Show databases;

6、mysql> quit

注释:删除mysql 命令mysql>dorp databases radius;

Mysql下的命令都有“;”

三、设置启动的服务

1、# ntsysv

选中mysqld和httpd服务,使其开机启动。

四、设置freeradius程序

1、# cd /freeradius-1.1.4/doc/examples

2、# mysql -u root -p radius<="">

3、# cd /etc/raddb/

注释:“i”是编辑的的意思

Esc 退出

“shift”+ “;”后输入wq 保存修改数据“q!”不保存

查找字符输入”/”后输入要查找的字符“N”是下一个“shift”+“N”是上一个4、# vi

将以下:

# Connect info

server = "localhost"

login = "root"

password = "password"

修改为:

# Connect info

server = "localhost"

login = "root"

password = "336699"

5、# vi

将以下:

# See "Authorization Queries" in

# sql

修改为:

# See "Authorization Queries" in

sql

将以下:

# See "Accounting queries" in

# sql

修改为:

# See "Accounting queries" in

sql

将以下:

post-auth {

# Get an address from the IP Pool.

# main_pool

#

# If you want to have a log of authentication replies,

# un-comment the following line, and the 'detail reply_log'

# section, above.

# reply_log

#

# After authenticating the user, do another SQL qeury.

#

# See "Authentication Logging Queries" in

# sql

#

# Un-comment the following if you have set

# 'edir_account_policy_check = yes' in the ldap module sub-section of

# the 'modules' section.

修改为:

post-auth {

# Get an address from the IP Pool.

# main_pool

#

# If you want to have a log of authentication replies,

# un-comment the following line, and the 'detail reply_log'

# section, above.

# reply_log

#

# After authenticating the user, do another SQL qeury.

#

# See "Authentication Logging Queries" in

sql

#

# Un-comment the following if you have set

# 'edir_account_policy_check = yes' in the ldap module sub-section of

# the 'modules' section.

6、# vi

在文件末尾增加以下代码:

client 192.168.15.1 {

secret = 336699

shortname = sanyou1

}

注释:336699是ros 里ip-ppp-secret密码

7、# /usr/local/sbin/radiusd -X 启动freeradius的调试模式出现1812和1813就成功了

8、# cd /etc

9、# vi

在文件末尾加以下代码:

/usr/local/sbin/radiusd

五、配置apache和php

1、# cd /etc/httpd/conf.d

2、# vi

在文件末尾加以下代码:

AddType application/x-httpd-php .php3

3、# cd /etc/httpd/conf

4、# vi

将以下代码:

# DocumentRoot: The directory out of which you will serve

your

# documents. By default, all requests are taken from this

directory, but

# symbolic links and aliases may be used to point to other

locations.

#

DocumentRoot "/var/www/html"

修改为:

# DocumentRoot: The directory out of which you will serve

your

# documents. By default, all requests are taken from this

directory, but

# symbolic links and aliases may be used to point to other

locations.

#

DocumentRoot "/var/www"

将以下代码:

#

# This should be changed to whatever you set

DocumentRoot to.

#

修改为:

#

# This should be changed to whatever you set

DocumentRoot to.

#

将以下代码:

# more or less alphabetized them here. You probably want

to change this.

#

LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz

nl nn no pl pt pt-BR ru sv zh-CN zh-TW

修改为:

# more or less alphabetized them here. You probably want

to change this.

#

LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it

ja ko ltz nl nn no pl pt pt-BR ru sv zh-TW

将以下代码修改成:

# If your host doesn't have a registered DNS name, enter its

IP address here.

# You will have to access it by its address anyway, and this

will make

# redirections work in a sensible way.

#

ServerName localhost:80

将以下代码:

# Specify a default charset for all content served; this enables

# interpretation of all content as UTF-8 by default. To use the

# default browser choice (ISO-8859-1), or to allow the META

tags

# in HTML content to override this choice, comment out this

# directive:

#

AddDefaultCharset UTF-8

修改为:

# Specify a default charset for all content served; this enables

# interpretation of all content as UTF-8 by default. To use the

# default browser choice (ISO-8859-1), or to allow the META

tags

# in HTML content to override this choice, comment out this

# directive:

#

#AddDefaultCharset UTF-8

5、# service httpd restart

6、找一台同网段的pc启动浏览器,输入192.168.15.98,(ip地址是radius服务器的ip 地址),如果出现apache的页面,说明apache配置成功。

六、安装配置三友网络认证计费系统管理程序

2、# cd /var/www

3、# mysql -u root -p radius<< bdsfid="416"

p="">

4、# cd conf

5、# vi

将以下代码:

# The directory where dialupadmin is installed

#

#general_base_dir: /www

general_base_dir: /www

修改为:

# The directory where dialupadmin is installed

#

#general_base_dir: /www

general_base_dir: /var/www

将以下代码:

sql_type: mysql

sql_server: localhost

sql_port:

sql_username: root

sql_password:

sql_database: radius

sql_accounting_table: radacct

修改为:

sql_type: mysql

sql_server: localhost

sql_port:

sql_username: root

sql_password: 336699,**.

sql_database: radius

sql_accounting_table: radacct

将以下代码:

#

sql_debug: true

#sql_debug: false

修改为:

#

#sql_debug: true

sql_debug: false

七、配置系统自动扣费程序

1、先修改/var/www/的文件。修改里面的用户密码。2、chmod 777 /var/www/ 前提是在根目录下。3、crontab -u root -e 增加:

*/20 * * * * /var/www/

八、配置数据库自动备份程序

1、cd /root

2、vi mysqlautoback

3、添加:

mysqldump --all-databases -uroot -p336699

/root/mysqlbackup/mysql$(date

+%y%m%d).sql

>

4、wq

5、chmod 777 /root/mysqlautoback

6、mkdir mysqlbackup

7、cd /etc

8、vi crontab

9、增加:

01 5 * * * root /mysqlautoback

10、wq

11、/etc/rc.d/init.d/crond restart

九、增加radius的属性值

输入命令:Cd var/www/conf/ 目录下

1、修改文件

Framed-IP-Netmask: 255.255.255.255

增加限速的值:

Ascend-Data-Rate:512000

Ascend-Xmit-Rate:1024000

2、[root@syrad conf]# vi p

增加限速的条目:

replyItem Ascend-Data-Rate Ascend-Data-Rate

replyItem Ascend-Xmit-Rate Ascend-Xmit-Rate

3、修改user_ 文件

增加以下两行:

Ascend-Data-Rate Ascend-Data-Rate

Ascend-Xmit-Rate Ascend-Xmit-Rate

十、增加mac地址锁定功能

为mysql的数据库radius中的表radcheck增加一个mac字段,varchar(50)类型null 空gb2312

在上面的中加多一个步骤

post-auth {

sql #去掉原来的注释语句

}

# See "Authentication Logging Queries" in

sql (去掉了前面的#号)

将中的authorize_check_query:

authorize_check_query = "SELECT id, UserName, Attribute,

Value, op

FROM ${authcheck_table}

WHERE Username = '%{SQL-User-Name}'

ORDER BY id"

修改为:

authorize_check_query = "SELECT id, UserName, Attribute,

Value, op

FROM ${authcheck_table}

WHERE Username = '%{SQL-User-Name}'

and (MAC='%{Calling-Station-Id}' or isnull(MAC) or MAC='')

ORDER BY id"

将postauth_query语句:(此处一般不用修改的)

postauth_query = "INSERT into ${postauth_table} (id, user,

pass, reply, date) values ('', '%{User-Name}', '%{User-Password:-Chap-Password}', '%{reply:Packet-Type}', NOW())"

修改为记录mac地址的过程了:

postauth_query = 'UPDATE ${authcheck_table} set

mac='%{Calling-Station-I

d}' WHERE Username = '%{SQL-User-Name}' and (mac='' or

isnull(mac))'

十一、修改mysql的密码

1、# /etc/init.d/mysqld stop

2、# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

3、# mysql -u root mysql

4、mysql> UPDATE user SET

Password=PASSWORD('newpassword') where USER='root';

5、mysql> FLUSH PRIVILEGES;

6、mysql> quit

7、# /etc/init.d/mysqld restart

8、# mysql -uroot -p

9、Enter password: <输入新设的密码newpassword>

10、# mysqladmin -u root -p password mypasswd

输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。

把命令里的root改为你的用户名,你就可以改你自己的密码了。

当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,

那么这种方法就是无效的。

而且mysqladmin无法把密码清空。

十二、linux修改系统时间

两步

(1)date

(2)hwclock -w

第一步的意思是设置时间,设置完了可以用date命令查看对不对...注意是月日时分年

第二步的意思是写入主板的rtc芯片..

=======================================

su -c 'date -s 月/日/年'

su -c 'date -s 时:分:秒'

=======================================

了解Linux的时钟

由于Linux时钟和Windows时钟从概念的分类、使用到设置都有很大的不同,所以,搞清楚Linux时钟的工作方式与设置操作,不仅对于Linux初学者有着重大意义,而且对于使用Linux 服务器的用户来说尤为重要。

Linux时钟的分类

Windows时钟大家可能十分熟悉了,Linux时钟在概念上类似Windows时钟显示当前系统时间,但在时钟分类和设置上却和Windows大相径庭。和Windows不同的是,Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的“Standard

BIOS Feture”项中进行设置。

既然Linux有两个时钟系统,那么大家所使用的Linux默认使用哪种时钟系统呢?会不回出现两种系统时钟冲突的情况呢?这些疑问和担心不无道理。首先,Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。

从Linux启动过程来看,系统时钟和硬件时钟不会发生冲突,但Linux中的所有命令(包括函数)都是采用的系统时钟设置。不仅如此,系统时钟和硬件时钟还可以采用异步方式,见图1所示,即系统时间和硬件时间可以不同。这样做的好处对于普通用户意义不大,但对于Linux 网络管理员却有很大的用处。例如,要将一个很大的网络中(跨越若干时区)的服务器同步,假如位于美国纽约的Linux服务器和北京的Linux服务器,其中一台服务器无须改变硬件时钟而只需临时设置一个系统时间,如要将北京服务器上的时间设置为纽约时间,两台服务器完成文件的同步后,再与原来的时钟同步一下即可。这样系统和硬件时钟就提供了更为灵活的操作。

设置Linux的时钟

在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和hwclock 用法相近,只不过clock命令除了

支持x86硬件体系外,还支持Alpha硬件体系。由于目前

绝大多数用户使用x86硬件体系,所以可以视这两个命令为一个命令来学习。

1.在虚拟终端中使用date命令来查看和设置系统时间

查看系统时钟的操作:

# date

设置系统时钟的操作:

# date 0917********.30

通用的设置格式:

# date 月日时分年.秒

2.使用hwclock或clock命令查看和设置硬件时钟

查看硬件时钟的操作:

# hwclock --show 或

# clock --show

2003年09月17日星期三13时24分11秒-0.482735 seconds

设置硬件时钟的操作:

# hwclock --set --date="09/17/2003 13:26:00"

或者

# clock --set --date="09/17/2003 13:26:00"

通用的设置格式:hwclock/clock --set --date=“月/日/年时:分:秒”。

3.同步系统时钟和硬件时钟

Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock命令来同步系统时钟和硬件时钟。

硬件时钟与系统时钟同步:

# hwclock --hctosys

或者

# clock --hctosys

上面命令中,--hctosys表示Hardware Clock to SYStem clock。

系统时钟和硬件时钟同步:

# hwclock --systohc

或者

# clock --systohc

使用图形化系统设置工具设置时间

对于初学者来,笔者推荐使用图形化的时钟设置工具,如Red

Hat 8.0中的日期与时间设置工具,可以在虚拟终端中键“redhat-config-time”命令,或者选择“K选单/系统设置/日期与时间”来启动日期时间设置工具。使用该工具不必考虑系统时间和硬件时间,只需从该对话框中设置日期时间,可同时设置、修改系统时钟和硬件时钟。

Internet同步时钟设置

在Windows XP日期与时间设置中有一项与Internet同步的功能,有了这项功能只要上网便可得到十分准确的时间。Red Hat 8.0也提供了这样的功能,在日期与时间设置工具对话框中的下部,有一个“启用网络时间协议”的选项,将该项选中就可以使用网络时间协议来同步Linux 系统时钟。选中该项后,其下面的服务器下拉列表框就变为可用状态,可从中选择一个时间服务器作为远程时间服务器。然后单击确定按钮,便可连接所设定的时间服务器,并与之同步时间。

df命令详细用法

a:显示全部的档案系统和各分割区的磁盘使用情形

i:显示i -nodes的使用量

k:大小用k来表示(默认值)

t:显示某一个档案系统的所有分割区磁盘使用量

x:显示不是某一个档案系统的所有分割区磁盘使用量

T:显示每个分割区所属的档案系统名称

常用命令:df -hi

操作详解

引用

指令df 可以显示目前所有档案系统的最大可用空间及使用情形,请看下列这个例子:

# df -h

Filesystem Size Used Avail Capacity Mounted on

/dev/ad0s1a 1.9G 389M 1.4G 21% /

devfs 1.0K 1.0K 0B 100% /dev

/dev/ad0s1d 989M 54K 910M 0% /tmp

/dev/ad0s1f 4.8G 3.8G 657M 86% /usr

/dev/ad0s1e 1.9G 149M 1.6G 8% /var

/dev/ad0s1g 26G 890K 24G 0% /volume2

/dev/da0s1d 325G 261G 38G 87% /volume1

我们加了参数-h 表示使用「Human-readable」的输出,也就是在档案系统大小使用GB、MB 等易读的格式。

上面的指令输出的第一个字段及最后一个字段分别是档案系统及其挂入点。我们可以看到/dev/ad0s1a 这个分割区被挂在根目录下。我们在上一小节提到过ad 所代表的是IDE 的硬盘,而s1 表示第一个主要扇区。我另外有一个SCSI 硬盘,它的代号是da,它的容量很大,主要用来存放数据。devfs 是一个特别的档案系统,该档案系统并非真的磁盘,而是FreeBSD 用来管理系统硬件装置的虚拟档案系统。

接下来的四个字段Size、Used、Avail、及Capacity 分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比。当硬盘容量已满时,您可能会看到已使用的百分比超过100%,因为FreeBSD 会留一些空间给root,让root 在档案系统满时,还是可以写东西到该档案系统中,以进行管理。

另外,我们还可以使用参数-i 来查看目前档案系统inode 的使用情形。有的时候虽然档案系统还有空间,但若没有足够的inode 来存放档案的信息,一样会不能增加新的档案。

# df -ih

Filesystem Size Used Avail Capacity iused ifree %iused

Mounted on

/dev/ad0s1a 1.9G 389M 1.4G 21% 20495 262127 7% /

devfs 1.0K 1.0K 0B 100% 0 0 100% /dev

/dev/ad0s1d 989M 62K 910M 0% 24 141286 0% /tmp

/dev/ad0s1f 4.8G 3.8G 657M 86% 311439 348015 47% /usr

/dev/ad0s1e1.9G149M1.6G8%175****8641%/var/dev/ad0s1g 26G 890K 24G 0% 12 3532786 0% /volume2

/dev/da0s1d 325G 261G 38G 87% 707277 43311409 2%

/volume1

我们可以看到根目录的已经用掉的inode 数量为20495,还有262127 的可用inode。

小提示

还记得什么是inode 吗?所谓的inode 是用来存放档案及目录的基本信息(metadata),包含时间、档名、使用者及群组等。在分割扇区时,系统会先做出一堆inode 以供以后使用,inode 的数量关系着系统中可以建立的档案及目录总数。如果要存的档案大部分都很小,则同样大小的硬盘中会有较多的档案,也就是说需要较多的inode 来挂档案及目录。

du:查询档案或目录的磁盘使用空间

a:显示全部目录和其次目录下的每个档案所占的磁盘空间

b:大小用bytes来表示(默认值为k bytes)

c:最后再加上总计(默认值)

s:只显示各档案大小的总合

x:只计算同属同一个档案系统的档案

L:计算所有的档案大小

常用命令:du -a

操作详解

引用

指令du 能以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小。例如:

# du -h /etc

104K /etc/defaults

6.0K /etc/X11

8.0K /etc/bluetooth

4.0K /etc/gnats

52K /etc/isdn

388K /etc/mail

68K /etc/mtree

2.0K /etc/ntp

38K /etc/pam.d

44K /etc/periodic/daily

6.0K /etc/periodic/monthly

42K /etc/periodic/security

16K /etc/periodic/weekly

110K /etc/periodic

6.0K /etc/ppp

318K /etc/rc.d

2.0K /etc/skel

130K /etc/ssh

10K /etc/ssl

1.7M /etc

我们目样使用-h 参数来显示human-readable 的格式。在应用时,我们可以使用du 这个指令来查看哪个目录占用最多的空间。不过,du 的输出结果通常很长,我们可以加上-s 参数来省略指定目录下的子目录,而只显示该目录的总合即可:

# du -sh /etc

1.7M /etc

在查看目录的使用情形时,我们可以将输出结果导到sort 指令进行排序,以了解哪个档案用了最多的空间:

# du /etc | sort -nr | more

1746 /etc

388 /etc/mail

318 /etc/rc.d

130 /etc/ssh

110 /etc/periodic

104 /etc/defaults

68 /etc/mtree

52 /etc/isdn

44 /etc/periodic/daily

42 /etc/periodic/security

38 /etc/pam.d

16 /etc/periodic/weekly

10 /etc/ssl

8 /etc/bluetooth

6 /etc/ppp

6 /etc/periodic/monthly

6 /etc/X11

4 /etc/gnats

2 /etc/skel

2 /etc/ntp

sort 的参数-nr 表示要以数字排序法进行反向排序,因为我们要对目录大小做排序,所以不可以使用human-readable 的大小输出,不然目录大小中会有K、M 等字样,会造成排序不正确。


本文标签: 系统 时钟 设置 使用 时间