钥匙球馆离太空针塔:linux文件管理

来源:百度文库 编辑:中财网 时间:2024/05/02 20:42:59

linux文件管理----------磁盘管理

sun3322 2008-3-22 21:33:30 1# .pcb{margin-right:0}在Liunx系统中,如何有效地对存储空间加以使用和管理是一项非常重要的技术。本节讲述如何查看系统中存储空间的使用情况、如何进行文件的转储,以及如何进行软盘的格式化。

  系统软件和应用软件,都要以文件的形式存储在电脑的磁盘空间中。因此,应该随时监控磁盘空间的使用情况。Linux系统提供了一组有关磁盘空间管理的命令。

  1.df命令

  功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间、目前还剩下多少空间等信息。

  语法:df [选项]

  说明:df命令可显示所有文件系统对i节点和磁盘扇区的使用情况。

  该命令各个选项的含义如下:

  -a 显示所有文件系统的磁盘使用情况,包括0区块(block)的文件系统,如/proc文件系统。

  -K 以KB为单位显示。

  -i 显示i节点信息,而不是磁盘扇区。

  -t 显示各指定类型的文件系统的磁盘空间使用情况。

  -x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。

  -T 显示文件系统类型。

  例:列出各文件系统的磁盘空间使用情况。

  $ df

  Filesystem  1 K-blocks  Used   Available  Use%  Mounted on

  /dev/hda2  1361587   1246406  44823   97%   /

  df命令的输出清单的第1列代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);第2列给出分区包含的磁盘扇区(1024字节)的数目;第3, 4列分别表示已用的和可用的磁盘扇区数目。用户也许会感到奇怪、第3, 4列块数之和不等于第2列中的块数。这是因为默认的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use% 列表示普通用户空间使用的百分比,即使这一数值达到100%,分区仍然留有系统管理员使用的空间。最后,Mounted on列表示文件系统的装载点。

  例:列出各文件系统的i节点使用情况。

  $ df –ia

  Filesystem Inodes IUsed IFree Iused% Mounted on

  /dev/ hda2 352256 75043 277213 21% /

  none 0 0 0 0% /proc

  localhost:(pid221) 0 0 0 0% /net

  例10-3:列出文件系统的类型。

  $ df –T

  Filesystem   Type 1K-blocks  Used   Available  use%  Mounted on

  /dev/hda2 ext2  1361587    1246405   44824   97%   /

  本例中的文件系统是ext2类型的。

2.du命令

  du的英文为disk usage,意思是显示磁盘空间的使用情况。

  功能:统计目录(或文件)所占磁盘空间的大小。

  语法:du [选项] [Names…]

  说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统(1024字节)的情况。若没有给出Names,则对当前目录进行统计。

  该命令的各个选项含义如下:

  -s 对每个Names参数只给出占用的数据块总数。

  -a 递归地显示指定目录中各文件及子目录中各文件占用的磁盘扇区数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘扇区块数。

  -b 以字节为单位列出磁盘空间使用情况(系统默认以KB为单位)。

  -k 以1024B为单位列出磁盘空间使用情况。

  -c 最后再加上一个总计(系统默认设置)。

  -l 计算所有的文件大小,对硬链接文件,则计算多次。

  -x 跳过在不同文件系统上的目录不予统计。

  下面举例说明du命令的使用。

  例10-4:查看/mnt目录占用磁盘空间的情况。

  $ cd /mnt $ ls -lFR total 10 -rwxrwxrwx 2 root root ll0 Ju1 3l 00:33 aa*

  drwxr-xr-x 2 root root l024 Ju1 20 14:16 dev/

  -rw-r--r-- 1 root root 6229 Aug 2 0l:39 s1ack

  drwxrwxrwx 2 root root 1024 Aug 2 02:09 var/

  1rwxrwxrwx 1 root root l0 Aug 2 0l:51 wei->/home/wei/

  dev:

  tota1 0

  lrwxrwxrwx 1 root root 8 Ju1 20 l4:l6 cdrom->/dev/hdb

  var:

  tata1 37

  -r-xr-xr-x l root root 36064 Aug 2 02:09 rawrite. exe*

  例10-5:列出各目录所占的磁盘空间,但不详细列出每个文件所占的空间。

  $ du

  l ./dev

  38 ./var

  48 .

  输出清单中的第一列是以区块为单位计的磁盘空间容量,第二列列出目录中使用这些空间的目录名称。

  注意,不带选项的du命令将从当前目录开始沿着目录结构向下工作,直到列出所有目录的容量为止。这可能是一个很长的清单,有时只需要一个总数。这时可在du命令中加-s选项来取得总数:

  $ du –s /mnt

  /mnt

  例10-6:列出所有文件和目录所占的空间(使用a选项),而且以字节为单位(使用b选项)来计算大小。

  $ du –ab

  8 ./dev/cdrom

  l032 ./dev

  36064 ./var/rawrite. Exe

  37088 ./var

  6229 ./s1ack

  1l0 ./aa

  l0 ./wei

  45493 .
 3.dd命令

  功能:把指定的输入文件复制到指定的输出文件中,并且在复制过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的资料写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。

  语法:dd [选项]

  if =输入文件(或设备名称)。

  of =输出文件(或设备名称)。

  ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。

  skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

  obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。

  bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

  cbs = byte 一次转换bytes字节。

  count=blocks 只复制输入的blocks块。

  conv = ASCII 把EBCDIC码转换为ASCIl码。

  conv = ebcdic 把ASCIl码转换为EBCDIC码。

  conv = ibm 把ASCIl码转换为alternate EBCDIC码。

  conv = block 把变动位转换成固定字符。

  conv = ublock 把固定位转换成变动位。

  conv = ucase 把字母由小写转换为大写。

  conv = lcase 把字母由大写转换为小写。

  conv = notrunc 不截短输出文件。

  conv = swab 交换每一对输入字节。

  conv = noerror 出错时不停止处理。

  conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。

  例10-7:要把一张软盘的内容复制到另一张软盘上,利用/tmp作为临时存储区。把源磁盘插入驱动器中,输入下述命令:

  $ dd if =/dev/fd0 of = /tmp/tmpfile

  复制完成后,将源磁盘从磁盘机中取出,把目标磁盘插入,输入命令:

  $ dd if = /tmp/tmpfile of =/dev/fd0

  复制完成后,应该将暂存文件删除:

  $ rm /tmp/tmpfile

  例10-8:把net.i文件写入软盘中,并设置读/写缓冲区的数目。(注意:软盘中的内容会被完全覆盖掉。)

  $ dd if = net.i of = /dev/fd0 bs = 16384

  例10-9:将文件sfile复制到文件dfile中。

  $ dd if=sfile of=dfile

4.fdformat命令

  软盘是用户常用的存储媒介之一。软盘在使用之前必须先进行格式化,然后可以用tar, dd, cpio等命令存储资料,也可以在软盘上创建可安装的文件系统。

  功能:低阶格式化软盘

  语法:format [-n] device

  说明:该命令的作用是对软盘进行格式化。

  -n 软盘格式化后不作检验。

  device 指定要进行格式化的设备,通常是下述设备之一:

  /dev/fd0d360

  /dev/fd0h1200

  /dev/fd0D360

  /dev/fd0H360

  /dev/fd0D720

  /dev/fd0H720

  /dev/fd0h360

  /dev/fd0h720

  /dev/fd0H1440  sun3322 2008-3-22 21:36:39 3#

文件管理-----------文件系统

文件系统指文件存在的物理空间,Linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。Linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的,总的目录层次结构。一个操作系统的运行离不开对文件的操作,因此必然要拥有并维护自己的文件系统。

  Linux文件系统使用索引节点来记录文件信息,作用像Windows的文件分配表。

  索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、许可权、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的阵列,每个文件或目录都与索引节点阵列中的惟一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在阵列中的索引号,称为索引节点号。

  Linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。

  对于一个文件来说,有惟一的索引节点号与之对应,而对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。

  可以用ln命令对一个已经存在的文件再创建一个新的连接,而不复制文件的内容。

  连接有软连接和硬连接之分,软连接又叫符号连接。它们各自的特点如下。

  硬连接:

  (1)原文件名和链接文件名都指向相同的物理位址。

  (2)目录不能有硬连接;硬连接不能跨越文件系统(不能跨越不同的分区)。

  (3)文件在磁盘中只有一个复制,以节省硬盘空间。

  (4)由于删除文件要在同一个索引节点属于惟一的连接时才能成功,因此可以防止不必要的误删除。

  符号连接:

  (1)用ln -s命令创建文件的符号连接;

  (2)符号连接是Linux特殊文件的一种,作为一个文件,它的资料是它所连接的文件的路径名。类似于Windows下的快捷方式。

  (3)可以删除原有的文件而保存链接文件,没有防止误删除功能。

  装载文件系统

  由上一节知道,Linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。Linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。这里所说的“按一定方式”就是指的装载。

  将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为装载。把该子目录称为挂接点。

  注意:挂接点必须是一个目录。

  一个分区装载在一个已存在的目录上,这个目录可以不为空,但装载后这个目录下以前的内容将不可用。

  对于其他操作系统创建的文件系统的装载也是这样。但是需要理解的是,光盘、软盘、其他操作系统使用的文件系统的格式与Linux使用的文件系统格式是不一样的。光盘是ISO9660;软盘是FAT16或ext2;Windows NT是FAT16, NTFS, Windows 98是FAT16, FAT32;Windows 2000和Windows XP是FAT16, FAT32, NTFS。装载前要了解Linux是否支持所要装载的文件系统格式。

  装载时使用mount命令。格式:mount [-参数] [设备名称] [挂接点]

  其中常用的参数有:

  -t<文件系统类型> 指定设备的文件系统类型,常见的有:

  minix Linux 最早使用的文件系统;

  ext2 Linux 目前常用的文件系统;

  msdos MS-DOS的FAT,就是FAT16;

  vfat Windows 98常用的FAT32;

  nfs 网络文件系统;

  iso9660 CD-ROM光盘标准文件系统;

  ntfs Windows NT/2000的文件系统;

  hpfs OS/2文件系统;

  auto 自动检测文件系统。

  -o<选项> 指定装载文件系统时的选项,有些也可用在/etc/fstab中。常用的有:

  codepage=XXX 内码表;

  iocharset=XXX 字符集;

  ro 以只读方式装载;

  rw 以读写方式装载;

  nouser 使一般用户无法装载;

  user 可以让一般用户装载设备。

  提醒一下,mount命令没有创建挂接点的功能,因此您应该确保执行mount命令时,挂接点已经存在。(即你要把文件系统装载到哪,首先要先建立这个目录。)

  例:Windows 98装在hda1分区,同时电脑上还有软盘和光盘需要装载。

  # mk /mnt/winc

  # mk /mnt/floppy

  # mk /mnt/cdrom

  # mount -t vfat /dev/hda1 /mnt/winc

  # mount -t msdos /dev/fd0 /mnt/floppy

  # mount -t iso9660 /dev/cdrom /mnt/cdrom

  现在就可以进入/mnt/winc等目录读写这些文件系统了。

  要保证最后两行的命令不出错,就要确保软驱和光驱里有盘。

  如果你的Windows 98目录里有中文文件名,使用上面的命令装载后,显示的是一堆乱码。这就要用到 -o 参数里的codepage iocharset选项。codepage指定文件系统的内码表,简体中文代码是936;iocharset指定字符集,简体中文一般用cp936或gb2312。

  当装载的文件系统Linux不支持时,mount一定会报错,如Windows 2000的NTFS文件系统。可以重新编译Linux内核以获得对该文件系统的支持。

 自动装载

  每次开机访问Windows分区都要运行mount命令,这显然太烦琐。为什么访问其他的Linux分区不用使用mount命令呢?

  其实,每次开机时,Linux自动将需要装载的Linux分区装载上了。那么我们是不是可以设置让Linux在启动的时候也装载我们希望装载的分区,如Windows分区,以实现文件系统的自动装载呢?

  这是完全可以的。在/etc目录下有个fstab文件,它里面列出了Linux开机时自动装载的文件系统的列表。比如 /etc/fstab文件如下:

  /dev/hda2 / ext3 defaults 1 1

  /dev/hda1 /boot ext3 defaults 1 2

  none /dev/pts devpts gid=5,mode=620 0 0

  none /proc proc defaults 0 0

  none /dev/shm tmpfs defaults 0 0

  /dev/hda3 swap swap defaults 0 0

  /dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0

  /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0

  /dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0

  /dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0

  在/etc/fstab文件里,第1列是装载的文件系统的设备名,第2列是挂接点,第3列是装载的文件系统类型,第4列是装载的选项,选项间用逗号分隔。

  最后两行是我手工添加的Windows下的C, D盘,加了codepage=936和ocharset=cp936参数以支持中文文件名。参数defaults实际上包含了一组默认参数:

  rw 以可读写模式装载;

  suid 开启用户 ID和用户组ID设置位;

  dev 可解读文件系统上的字符或块设备;

  exec 可执行二进位文件;

  auto 自动装载;

  nouser 使一般用户无法装载;

  async 以非同步方式执行文件系统的输入输出操作。

  大家可以看到,在这个列表里,光驱和软驱是不自动装载的,参数设置为noauto。(如果你非要设成自动装载,您要确保每次开机时你的光驱和软驱里都要有光盘或软盘。)

举报

  sun3322 2008-3-22 21:38:18 4#

文件管理------

磁盘与文件结构

  文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的许可权,设置文件的共用程度。

  使用Linux,用户可以设置目录和文件的许可权,以便允许或拒绝其他人对其进行访问。Linux目录采用多级树形结构,用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。

  文件结构的相互关联性使共用资料变得容易,几个用户可以访问同一个文件。 Linux 是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。

  内核、Shell和文件结构一起形成了基本的操作系统结构。它们使得用户可以运行程序、管理文件以及使用系统。此外,Linux操作系统还有许多被称为实用工具的程序,可以辅助用户完成一些特定的任务。
硬盘分区

  1.MBR(主引导记录)、启动扇区和分区表

  一个硬盘如何分区的信息存在它的第一个扇区(即第一面第一轨第一扇区)。这个第一扇区是硬盘的主引导记录(MBR);这是电脑启动时BIOS读入和启动的扇区。主引导记录包括一段小程序,读入分区表,检查哪个分区是活动分区(即启动分区),并读入活动分区的第一个扇区,即该分区的启动扇区(MBR也是启动扇区,只不过因为其特殊地位,所以使用特殊的名字)。这个启动扇区包括另一个小程序,读入这个分区(假设是可启动的)上操作系统的第一个部分,然后启动它。

  这个分区方案不是内置于硬件和BIOS的,只是许多操作系统遵循的约定。但并非所有的操作系统都遵循这个约定。有些操作系统支持分区,但它们占领硬盘上的一个分区,然后使用它们自己的内部分区方法管理这个分区。较新的操作系统可以和其他操作系统和平共处(包括Linux),而无需特殊的措施,但不支持分区的操作系统无法在同一硬盘上与其他操作系统共存。

  为安全预防,最好先在纸上写下分区表,这样在错误发生时不会丢失你的文件。(可以使用fdisk修复坏的分区表)。相关信息可用fdisk -l 命令给出:

  $ fdisk -l /dev/hda

  Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders

  Units = cylinders of 855 * 512 bytes

  Device Boot Begin Start End Blocks Id System

  /dev/hda1 1 1 24 10231+ 82 Linux swap

  /dev/hda2 25 25 48 10260 83 Linux native

  /dev/hda3 49 49 408 153900 83 Linux native

  /dev/hda4 409 409 790 163305 5 Extended

  /dev/hda5 409 409 744 143611+ 83 Linux native

  /dev/hda6 745 745 790 19636+ 83 Linux native

  $

  2.扩展和逻辑分区

  PC硬盘的最初分区方案只允许4个分区。实际使用中这太少了,比如有人想装多于4个操作系统(Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, Windows/NT等),或有时一个操作系统有多个分区更好,例如由于速度的原因,Linux的对换区最好单独使用自己的分区,而不是在主Linux分区中(下文详述)。

  为克服这个设计问题,发明了扩展分区。这个方法允许将基本分区分为若干子分区,因而被进行子分区的基本分区称为扩展分区,而子分区称为逻辑分区。它们的表现类似基本分割区,但产生方法不同。它们之间没有速度差别。

  3.分区种类

  分区表(MBR和扩展分区里都有)中,对每个分区都有一个字节指出分区种类。这试图确定使用该分区的操作系统,或用于何操作系统。其目的是避免两个操作系统使用同一分区。可实际上,操作系统并不真的注意分区种类字节,例如,Linux根本不管它是什么。较坏的情况是,有些操作系统错误地使用它,例如有些版本的DR-DOS忽略了它的最高位(MSB),而其他一些系统则不是。

  没有一个标准化组织定义分区种类字节每个值的意义,但存在一些共同接受的值。相同的列表可以通过Linux的fdisk 命令得到。
管理软驱和光驱

  1.软盘

  如同硬盘,一张软盘也分为磁道和扇区(软盘两面上的相同的磁道组成柱面),但数量要比硬盘少得多。

  软驱通常可以使用几种不同的软盘,例如,一个3.5英寸软驱可以使用720KB和1.44MB的软盘。因为软驱操作有些不同,而操作系统必须知道软盘的容量,所以软驱有许多设备文件,每个都与软驱和软盘种类有关。因此,/dev/fd0H1440 是第一个软驱(fd0),必须是3.5英寸,使用3.5英寸高密度软盘(H),容量是1440KB(1440),即普通的3.5英寸HD软盘。

  软驱的名字是复杂的,因此Linux有一个特定的软驱设备类型,能自动检测软驱中软盘的种类。它使用不同的软盘类型,试图读取新插入的软盘的第一个扇区,直到找到正确的一个。这自然要求软盘是已经格式化过的。

  Linux除了能处理所有标准的软盘,还能处理许多非标准的软盘格式。这有时需要特殊的格式化程序。我们现在先跳过这些软盘格式,同时你可以查看/etc/fdprm文件,它定义了setfdprm 识别的设置。

  2.格式化软盘

  软盘格式化使用fdformat命令。软盘设备使用给定的参数,例如下面的命令是在第一个软驱中格式化一张高密度3.5英寸软盘:

  $ fdformat /dev/fd0H1440

  Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.

  Formatting ... done

  Verifying ... done

  $

  注意,如果想使用自动检测设备(如/dev/fd0),必须先用setfdprm 设置参数。要得到与上面一样的结果,可以这样:

  $ setfdprm /dev/fd0 1440/1440

  $ fdformat /dev/fd0

  Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.

  Formatting ... done

  Verifying ... done

  $

  选择与软盘类型相符的正确的设备文件通常更方便。注意,比软盘设计格式化更多的信息容量是没有意义的。

  3.CD-ROM

  CD-ROM 驱动器使用一个光学可读的塑胶涂布的碟片。信息记录在盘表面的从中心到边沿的螺旋型小坑上。 驱动器发出一束激光来读盘。当激光射到小坑上,激光以一种方式反射;当它射到光滑表面上,它以另一种方式反射。这很容易地编码成bit,组成信息。

  CD-ROM驱动器比硬盘慢。典型的硬盘的平均寻道(seek)时间小于15ms,而快速的CD-ROM驱动器要花零点几秒。实际资料传输率则相当快,在数百KB/s。速度慢使CD-ROM驱动器不能代替硬盘使用(有些Linux distributions提供“live”CD-ROM文件系统,使之不必复制文件到硬盘,使安装简单并节约了许多硬盘空间),虽然是可能的。要安装新软件,CD-ROM很好用,因为在安装时速度并非最重要的。

  不同UNIX不能使用ISO9660文件系统,因此开发了对这个标准的一个增强,叫Rock Ridge增强。Rock Ridge允许长文件名、符号连接和许多其他优点,使CD-ROM更像UNIX文件系统。同时,Rock Ridge文件系统仍然是一个有效的ISO9660文件系统,使非UNIX用户一样可以使用。Linux同时支持ISO9660和Rock Ridge增强,增强被自动识别和使用。

  文件系统只是一部分,许多CD-ROM包含的资料需要特定的程序存取,而多数程序不能运行在Linux下(当然,可能运行在Linux的MS-DOS模拟器dosemu下)。
管理用户的磁盘空间

  1.为普通用户和用户组加入磁盘配额限制

  Linux的Quota程序允许为系统上每一用户或用户组指定所能使用的磁盘配额。目前Quota仅能工作在ext2和ext3类型的文件系统上。使用Quota需要确定以下两点:

  (1)当前的系统内核支持Quota。

  (2)系统已正确安装Quota套装程序。

  如果你当前的系统内核不支持Quota,请重新编译你的内核,当系统提示:

  Quota support(CONFIG—QUOTA)[n]

  回答y,生成新的系统内核。

  如果没有Quota套装程序,请到以下地址下载Quota的源程序并编译:

  ftp://ftp.funet.fi/pub/l inux/PEOPLE/Linus/subsystems/Quota/all.tar.gz

  一般Linux的发行版本的内核都默认包含了Quota支持,也附带了Quota 套装程序,只需安装Quota 并加以设置便可让Quota工作。

  Quota的具体设置步骤:

  (1)编辑系统初始脚本让它检查Quota并启动。

  # Check Quota and then turn Quota on.

  if [ -x /usr/sbin/Quotacheck ]

  then

  echo ″Checking Quotas. This may take some time.″

  /usr/sbin/Quotacheck -avug

  echo ″Done.″

  fi

  if [ -x /usr/sbin/Quotaon ]

  then

    echo ″Turning on Quota.″

    /usr/sbin/Quotaon -avug

  fi

  (2)编辑/etc/fstab。你的 /etc/fstab文件可能会是如下的形式:

  /dev/hda1 / ext2 defaults 1 1

  /dev/hda2 /home ext2 defaults 1 1

  选择用户所在分区的行的第4个域,为用户加入Quota支持,如下:

  /dev/hda1 / ext2 defaults 1 1

  /dev/hda2 /home ext2 defaults,usrQuota 1 1

  如为用户组加入Quota支持,可将usrQuota替换为grpQuota。

  如两者兼而有之,可将这两项一并写入,如下:

  /dev/hda1 / ext2 defaults 1 1

  /dev/hda2 /home ext2 defaults,usrQuota,grpQuota 1 1

  (3)创建Quota记录文件Quota.user和Quota.group。进入用户所在分区根目录,如在上例中输入cd /home即可,按下面命令创建文件:

  touch Quota.user

  touch Quota.group

  chmod 600 Quota.user Quota.group

  完成上面几步以后,重新启动电脑以使设置生效。

  (4)为用户或用户组设置磁盘配额限制。假设在你的系统上有一名为bob 的用户,现在想给他10MB的硬盘配额限制,他所拥有的最大文件数不得超过100个。执行edQuota -u dquo,系统将进入编辑环境(具体编辑环境视editor变量设置而定),将如下3行

  Quotas for user bob:

  /dev/hda2: blocks in use: 14, limits (soft=0, hard=0)

  inodes in use: 12, limits (soft=0, hard=0)

  改为

  Quotas for user bob:

  /dev/hda2: blocks in use: 14, limits (soft=0, hard=10240)

  inodes in use: 12, limits (soft=0, hard=100)

  其中,

  blocks in use:用户已使用块的大小,单位是KB。

  inodes in use:用户现有文件的大小。

  这两项都是系统自动给出的,不必改动。

  2.软限制(soft limits)

  通常设置软限制为一个接近硬限制的值,超越此限制时,系统将警告用户将到达最大磁盘配额限制。软限制为0 时没有软限制。结合宽限期使用时,只要用户超越了软限制,一过宽限期,任何对磁盘空间的额外需求将被立即拒绝。

  3.硬限制(hard limits)

  硬限制磁盘配额的绝对限制,设置了Quota的用户不能超越此限制。

  4.宽限期(Grace Period)

  宽限期是用户超越了软限制而没有到达硬限制时的一段放宽期,在这段时间内,用户可以在硬限制范围内自由地使用磁盘空间,超过这段时间,所有对磁盘空间的额外需求将被拒绝,即使用户还在硬限制之内。宽限期的单位可以是秒、分、时、天。执行edQuota -t命令可设置宽限期。执行该命令后,将系统提示中的两个0 days 改成你认为合适的值即可。

  有时想给一批用户加上同样的限制,比如,给系统上所有100个用户加上与bob同样的限制,可手工先给bob加上限制,然后执行下面命令:

  edQuota -p bob ′awk -F: ′$3 499 {print $1}′/etc/passwd′

  给用户组设置磁盘配额限制与普通用户类似,假设有一用户组game,执行edQuota -g game即可。

  5.控制用户的登录地点

  文件/etc/secruity/access.conf可控制用户登录地点,为了使用access.conf,必须在文件/etc/pam.d/login中加入下面的行:

  account required /lib/security/pam-access.so

  access.conf文件的格式:

  permission : users : origins

  其中,

  permission:可以是+或-,表示允许或拒绝。

  user:可以是用户名、用户组名,如果是all则表示所有用户 。

  origins:登录地点。local表示本地,all表示所有地点,console表示控制台。另外,origins也可以是某一个网络。

  后面两个域中加上 except是“除了”的意思。例如,除了用户 wheel, shutdown, sync禁止所有的控制台登录:

  -:ALL EXCEPT wheel shutdown sync:console

  root账户的登录地点不在access.conf文件中控制,而是由/etc/securetty文件控制。

  6.限制用户每次所发邮件大小

  Linux系统使用sendmail发送邮件,配置文件是/etc/sendmail.cf,默认使用TCP/IP协定。我们的Linux机器上往往会有多个用户同时工作,或者干脆就用它作为邮件服务器,在同一时刻,系统可能要收发很多邮件,因此不能让某一用户过多地占用sendmail的时间。sendmail的默认配置对每次收发邮件的大小没有限制,更改配置文件/etc/sendmail.cf,找到O MaxMessageSize,去掉行首的#号,并将其后的数值改为合适的数值,单位为字节。如:

  O MaxMessageSize = 1048576

  意思为每次收发邮件最大为1MB,任何超过这个值的邮件将被拒绝。