linux文件系统

来源:互联网 发布:数据新闻相关的比赛 编辑:程序博客网 时间:2024/04/29 14:19

简介

前面两讲《认识Linux文件系统(二)》通过讲解文件系统的定义、逻辑组成、树状目录结构、文件五种主要类型,以及主流的Linux文件格式和高级日志文件系统等内容,揭示了Linux高效运行的关键。然而,要保障Linux文件系统的稳定还需要许多工作,本文主要介绍Linux文件系统的管理和维护。

目录:

Linux系统用户管理
Linux系统用户组管理
文件系统用户信息
三个重要文件
文件系统的维护

Linux系统用户管理

1.添加新用户(user) 在Linux命令行下以超级用户身份使用useradd或adduser命令:

#useradd newuser

设置用户口令:

#passwd newuser

此时系统会要求输入新的口令,新口令要求输入两次。出于安全考虑,输入的口令不会在屏幕上显示出来。

2.临时禁止一个用户 有时我们需要禁止一个用户账户,而不是删除它,此时可以这样做:在etc/passwd文件中关于这个用户的passwd域的第一个字符前面加上一个“*”号。

3.删除一个用户 在Linux命令行下以超级用户身份使用userfdel命令:

#userdel [-r] username

如果使用-r选项,则表示用户主目录及其内部的文件将全部删除。

Linux系统用户组管理

1.建立组(Group) 在Linux命令行下以超级用户身份使用groupadd命令:

#groupadd  <groupname>

2.在组中加入用户 要将新用户加入组中,可以用一个编辑器修改/etc/group 文件,将用户名加入用户列表中,用逗号分开。

3.删除组 在Linux命令行下以超级用户身份使用groupadd命令:

#groupdel  <groupname>

需要说明的是,组中的文件不会自动删除。

文件系统用户信息

Linux文件系统保存着每个用户的信息,这些信息以下面的方式标识。

1.用户名: 用户名是用来标识系统中每个用户的惟一标识符,例如fransk、cjh、qhua和wang。用户名中可以使用字母、数字、下划线“_”和句点“.”。通常情况下用户名限制在8个字符。

2.用户ID(UID): 用户ID或UID是系统给每个用户的惟一的数字,系统通常是通过UID而不是用户名来保存用户信息的。

3.组ID(GID): 组ID或GID是用户的缺省组ID。每个用户通过系统管理员被定义属于一个或多个组,下面将会进一步介绍。

4.口令: 系统还保存了用户加密了的口令,passwd命令可用来设置和改变用户口令。

5.全名: 用户的“真实名字”或“全名”与用户名一起存储,例如用户wang在现实世界中的名字为Wang Yang Xia。

6.个人目录: 个人目录是用户在注册时最初所处的目录,每个用户都有个人目录,通常在目录/home下。

7.用户的注册Shell是在注册时启动的Shell 例如/bin/bash和bin/tcsh。

Linux安装后会建立一些特殊用户,最主要的是超级用户,即root用户。超级用户承担了系统管理的一切任务,可以不受限制的操作。超级用户的用户(UID)ID和组(GID)ID都是0。0到499之间的值留给bin、mail这样的系统账号。普通用户有超级用户创建用户,用户ID(UID)和组ID(GID)从500开始编号。

三个重要文件

1./etc/passwd 文件/etc/passwd中包含了有关用户的这些信息,文件中的每一行包含了一个用户的信息,每行的格式如下:

用户名:加密的口令:用户ID:组ID:用户的全名:登录目录:登录shell。图1是以超级用户root为例的/etc/passwd文件快照。

图1 /etc/passwd文件快照

Linux系统把每一个用户看作一个数字,即一个ID号,/etc/passwd文件给出了系统用户ID何用户名之间的关系。/etc/passwd对于所有用户都是可读的,缺点是容易受到口令攻击。所以许多Linux发行版本将用户口令存储到另外一个文件/etc/shodow中,该文件只有超级用户可读。

2./etc/shadow 为了保证Linux文件系统的安全,系统通常对用户流量进行Shadow(影子加密)处理,把口令保存到只有超级用户才能读取的/etc/shadow文件中,其中包括所有用户和口令的信息。图2是该文件的快照。

图2 /etc/shadow文件

从图2可以看到,每个用户在文件中对应一行,用冒号分成九个域,其中包括以下内容:

(1)用户登录名。
(2)用户加密后的口令。若为空,表示该用户不需口令即可登录。
(3)口令最近一次被修改的天数。
(4)旧口令在多少天内不能被用户修改。
(5)口令在多少天后必须被修改。
(6)口令过期多少天后用户帐号被禁止。
(7)口令在到期多少天内给用户发出警告。
(8)口令自1970年1月1日被禁止的天数。
(9)保留域。

2./etc/group文件 /etc/group文件文件的格式和/etc/passwd文件格式类似,它也是一个纯文本文件,定义了每个组中的用户。在Linux中,使用组来赋予用户访问文件的不同权限。组的划分可以采用多种标难,一个用户可同时包含在多个组内/etc/group 文件,其中包含了系统中所有用户组的相关信息。每个用户组对应文件中的一行,并用冒号分成4个域,其中每行的形式如下:

用户组名:加密后的组口令:组ID:组成员列表

图3是用户组sys在etc/group中对应的一行的快照。其中第二行代表的信息包括系统中有一个称为sys的系统用户组没有设定口令,组ID为3,组中的成员有root、bin、adm三个用户。

图3 sys的用户组在/etc/group中的信息

文件系统的维护

无论Linux使用什么文件格式,它的物理基础还是建立在二进制文件上。对二进制文件的管理就显得非常重要。如果某些很重要的系统文件或用户的文件丢失了,将可能造成非常大的损失。可见维护文件系统是一件非常重要的工作,特别是对用户比较多的文件系统来说。下面就介绍如何检查文件系统、创建文件系统以确保文件系统的正确性。

1.文件系统的完整性 Linux系统每次启动时执行的一项重要工作是检查所有要安装的文件系统,以确认它们都能正常工作。有很多方式可以使文件系统遭到破坏,最常见的是不正常关机和一些硬件错误。比如,在关闭系统并且挂起CPU之前,没有执行sync将数据写入磁盘,而导致文件系统不完整。另外,硬件错误也是很致命的,特别是硬盘的物理损伤(通常是工作时的外力冲击),将导致数据丢失。这时可以使用fask命令程序检查、修复文件系统。fask的使用权限必须是超级用户。Linux也提供了针对特定文件系统类型的检查程序,如用于检查ext2类型文件系统的e2fsck。fsck程序实际上只是为检查各种不同的文件系统提供一个统一的用户界面。当fsck程序被启动时,它在/bin、/sbin、/etc/fs等目录下搜索针对要检查的文件系统的特定检查程序,然后调用它们进行实际的检查工作。这个过程对启动fsck程序的用户通常是透明的。fsck检查所有在柱面组群的数据块映像中被标识为未使用的数据块,即空闲数据块。检查fsck合计空闲数据块的数目,加上被文件节点使用的数据块的数目,这个结果是否等于文件系统中所有数据块的总和。如果fsck发现数据块分配映像有错时,它会自动重建。概要信息中和超级数据块相联系的信息包含在文件系统中所有空闲数据块的数目。fsck将它检查所得到的空闲数据块数目和上面概要信息中的空闲数据块数目进行比较,如果两者不一致,fsck就将实际检查得到的空闲数据块覆盖概要信息中的空闲数据块信息。对于空闲文件节点的检查也会做同样的处理。

fsck能完成多项任务,但它的主要工作是检查整个文件系统,以发现是否存在如下问题:

(1)多个文件共享一个块,有称为交叉链接(cross-1inked);
(2)正在使用中的锁却被标志为空闲;
(3)系统i-node表中的信息与文件系统的实际情况不符;
(4)有不正确的链接计数;
(5)系统i-node表中有非法记录;
(6)文件中出现非法数值。

检查文件系统的工作一般是十分迅速的,大多数Linux发行版本设置为启动时自动运行fsck ,因此任何错误将在系统使用前被检测到(并根据希望修正)。因此,有规律地、经常地检查文件系统对系统造成的负载并不太大。当运行的fsck程序发现文件系统故障时,应该将系统转换到用户模式(超级用户模式),然后重新运行fsck。由于有些文件系统故障是由某些用户操作失误引起的,上述的步骤能确认是否发生了这种类型的故障。

fsck使用格式: fsck  [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...]

其中,参数f11esys既可以是文件系统所在的设备的名称,也可以是它的安装点。例如,将建立在/dev/sdal上的文件系统安装在/usr目录上后,如下两条命令能等效地运行检查该文件系统的命令:

# fsck/dev/sdal# fsck/usr

fsck命令的主要选项如下:

-A 检查所有列在etc/fstab文件中的文件系统。带有这个选项的fsck命令通常出现在系统的初始文件/etc/rc中,这样可以不必针对多个文件系统使用多条fsck命令。
-R 当使用带有-A标志的fsck命令安装文件系统时,只检查根文件系统之外的文件系统。
-T 启动时不显示标题。
-N 只显示fsclL程序应该要做的动作,但并不真正去做这些事情。
-P 当使用带有-A标志的fsck命令行检查文件系统时,要求fsck程序在检查根文件系统的同时,并行地检查别的文件系统。
-V 输出程序运行过程的说明。
-s 依序一个一个地执行fsck指令来检查文件系统。
-C 显示完整的检查进度。
-t fstype 指定fsck程序检查的文件系统的类型。
-R 如果检查有错则由使用者回答是否修复。

在使用-A选项时,除非fsck命令参数中出现-P选项,fsck程序总是首先检查根文件系统。然后,fsck按照etc/fstab文件中fs-passno域规定的次序检查其它文件系统。当多个文件系统的fs-passno相同时,fsck将并行地检查那些位于不同硬盘上的文件系统。因此,在etc/fstab文件中,根文件系统的fs-passno通常缺省的设置为1,其它文件系统的fs-passno设置为2。这样将允许fsck尽量并行地工作。fsck检查文件系统的连通性,检查目录项是否都被链入文件系统,如果不是则将它们存入lost+found目录中,这种情况通常发生于硬件故障。如果想了解更多的fsck,需要深入了解文件系统的工作原理和文件系统的细节。如果使用的是ext2文件系统,还可以使用e2fsck命令检查Linux ext2档案系统的分区是否正常工作。

e2fsck格式如下:e2fsck [-pacnydfvFV] [-b superblock] [-B blocksize] [-l|-L bad_blocks_file] [-C fd] device e2fsck命令的主要选项:device :预备检查的硬盘Partition,例如/dev/sda1。-a : 对Partition做检查,若有问题便自动修复,等同-p的功能。 -b : 设定存放Superblock的位置。-B : 设定单位Block的大小。 -c : 检查该Partition是否有坏轨。 -C file : 将检查的结果存到file中以便查看。 -d : 打印e2fsck的Debug结果。 -f : 强制检查。 -F : 在开始检查前,将Device的Buffer Cache清空,避免有错误发生。 -l bad_blocks_file : 将有坏轨的Block资料加到bad_blocks_file里面。 -L bad_blocks_file : 设定坏轨的Block资料存到bad_blocks_file里面,若无该文件则自动产生。 -n : 将档案系统以[只读]方式开启。 -p : 对Partition做检查,若有问题便自动修复。 -v : 详细显示模式。  -V : 显示出目前e2fsck的版本。 -y : 预先设定所有检查时的问题均回答[是]。

2.显示文件系统的两个主要命令 Linux系统管理员经常使用的磁盘管理命令有df(Disk Filesystem)和du(Disk Usage)。通过这两个命令可以获得文件系统的统计数据,包括可用空间和已经使用的空间。

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

df使用格式:df [选项]... [FILE]...

df命令的主要选项见表2所示。

表2 df命令的主要选项

df命令还可显示所有文件系统对i-node节点和磁盘块的使用情况,这时需要一个参数-i,见图4所示。

图4 显示所有文件系统对i-node节点的使用情况

从图4可以看出,每一个文件系统中有多少可用的i-node、其中有多少己被使用、还剩余多少,以及它们所占的比例等整个硬盘的使用情况。系统管理员需要了解这些情况。有时会发现这样的情况:某些硬盘的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间由其单独支配。也就是说,超级用户见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%系统管理员还可以正常工作。df工具程序被广泛地用来生成文件系统的使用统计数据。它能显示系统中所有的文件系统的信息,包括它们的总容量、可用的空闲空间、目前的安装点等。

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

du使用格式:du [选项] [Names...]

du命令的主要选项见表3所示。

表3 du命令的主要选项

du命令以能显示关于硬盘使用情况的信息,它能显示某个目录下的所有文件和子目录的占用硬盘空间的大小。du执行命令的的例子见图5。从图5可以看到,每个命令占用的硬盘空间大小以块为单位列在每行的最全面,后面跟着目录名称。

图5 du执行命令的例子

3.清理磁盘 清理磁盘最有效的方法就是删除没用的文件,这些文件主要包括临时文件/tmp、过期的日志文件/var/log、*.error等,可以通过搜索命令找到它们然后删除。

总结

到此为止,Linux文件系统就介绍完了。通过这三部分内容的学习,我们知道Linux文件系统是非常重要和复杂的,希望读者对此应该有了一个较全面的了解,并且可以处理日常工作中常见的有关文件系统的问题。

0 0
原创粉丝点击