第 3章 Linux系统管理
本章学习目标
在 Linux系统中, 虽然有很多应用都使用图形界面, 但是
大多数使用和管理 Linux的实用程序和技巧还是通过键入
命令来运行的 。 在本章中, 将介绍一些基本的 Linux命令,
并通过一些实际的例子使读者边学边用, 让读者尽快熟
悉 Linux系统 。。 通过对本章的学习, 读者应该掌握以下
主要内容:
了解对系统管理的具体工作 。
? 理解对用户和工作组管理的基本概念及相
关的管理方法 。
理解文件系统管理的基本概念及相关的管
理方法 。
3.1 系统管理概述
3.2 用户和工作组管理
1,用户账号文件 ——passwd
Passwd 是一个文本文件,用于定义系统的用户账号,该
文件位于, /etc”目录下。它包含了一个系统账户列表,给
出每个账户一些有用的信息,例如,用户 ID、组 ID、主
目录,shell等等。由于所有用户都对 passwd有读权限,所
以该文件中只定义用户账号,而不保存口令。
passwd文件中每行定义一个用户账号,一行中又划分为多
个字段定义用户的账号的不同属性,各字段用,,, 隔开。
图 3-1中显示了 passwd文件的前 10行内容。在图中显示出
了文件显示各用户的每一个字段,各字段的说明如表 3-1
所示。
图 3-1 passwd文件的属性及部分内容
表 3-1 passwd文件各字段说明
字 段 说 明
Account 使用者在系统中的名字,它不能包含大写字母。
Password 用户口令,出于安全考虑,现在不使用该字段
保存口令,而用字母,x”来填充该字段,真正的密码保存
在 shadow文件。
UID 用户 ID 号,惟一表示某用户的数字。
GID 用户所属的私有组号,该数字对应 group文件中的 GID。
GECOS 这字段是可选的,通常用于保存用户命名的信息。
Directory 用户的主目录,用户成功登录后的默认目录。
shell 用户所使用的 shell,如该字段为空则使用,/bin/sh”。
2,用户口令文件 ——shadow
在 shadow文件中, 每行定义了一个用户信息, 行中各字
段各字段用,,, 隔开 。 为进一步提高安全性, shadow
文件中保存的是已加密的口令 。 图 3-2中显示了 shadow
文件的前 10行内容 。
从图 3-2中可以看出,, /etc/shadow”文件中的每个记
录用,,, 隔开为 9个域, 每个域的含义分别为:
? 登录名
? 加密口令
? 口令上次更改时距 1970年 1月 1日的天数
? 口令更改后不可以更改的天数
? 口令更改后必须再更改的天数 (有效期 )
? 口令失效前警告用户的天数
? 口令失效后距账号被查封的天数
? 账号被封时距 1970年 1月 1日的天数
? 保留未用
3,用户组账号文件 ——group
用户组是逻辑地组织用户账号集合的方便途径, 它允许用
户在组内共享文件 。 系统上的每一个文件都有一个用户和
一个组的属主 。 使用, ls –l”命令可以看到每一个文件的
属主和组 。
于系统上的每个组, 在 /etc/passwd文件中有一行记录, 记
录的格式为:
groupname, passwd, GID, userlist
表 3-2 group文件字段说明
字 段 说 明
Groupname 是组的名字
Passwd 是组的加密口令
GID 是系统区分不同组的 ID,在 /etc/passwd域
中的 GID域是用这个数来指定用户的缺省
组。
Userlist 是用,,, 分开的用户名,列出的是这个
组 的成员。
图 3-3中显示了 shadow文件的前 10行内容 。
4,用户口令文件 ——gshadow
gshadow文件用于定义用户组口令, 组管理员等信息, 该文
件只有 root用户可以读取 。 Gshadow文件中每行定义一个用
户组信息, 行中各字段间用,,, 分隔, 每行记录的格式
为:
groupname, Encrypted password,Group administrators,Group members
各字段的的含义如表 3-3所示 。 在图 3-4中给出了该文件的
属性及文件的部分内容 。
表 3-3 group文件字段说明
字 段 说 明
Groupname 用户组名称,该字段与 group文件中的组名称
对应。
Encrypted password 用户组口令,该字段用于保存已加密的口令
Group administrators 组的管理员账号,管理员有权对该组添加删除
账号。
Group members 属于该组的用户成员列表,列表中多个用户间
用,,, 分隔。
图 3-4 group文件的属性及部分内容
3.2.2 用户和组账户的维护命令
1,增加用户帐号
在命令行下使用 useradd 命令:
useradd 用户名
该命令做了下面几件事:
1) 在 /etc/passwd 文件中增添了一行记录;
2) 在 /home 目录下创建新用户的主目录, 并
将 /etc/skel 目录中的文件拷贝到该目录中
去; 但是使用了该命令后, 新建的用户暂时还
无法登录, 因为还没有为该用户设置口令, 需
要再用 passwd 命令为其设置口令后, 才能登
录 。 用户的 UID 和 GID 是 useradd 自动选
取的, 它是将 /etc/passwd 文件中的 UID 加
1,将 etc/group 文件中的 GID 加 1。
增加新用户时,系统将为用户创建一个与用户名相
同的组,称为私有组。这一方法是为了能让新用户与其他
用户隔离,确保安全性的措施
下面通过增加一个用户, liuyidan”,以及查看其相关
信息, 来帮助用户理解该命令所执行的操作 。 其在终端上
的操作命令及响应如图 3 -5所示 。
#useradd liuyidan //建立用户账号
#tail -l /etc/passwd //查看 password文件中添加的用户
账号信息
#tail -l /etc/shadow
# ls /home //查看所建立账号的主目录
图 3-5 增加用户及相关操作
选项 功能描述
-g 用于添加用户账号时指定该用户的私
有组 。 如不指定, -g”参数, useradd命
令将自动建立与用户账号同名的组作
为该账号的私有组 。
-D 用于显示或设置 useradd命令所使用的
默认值
?在, -g”选项时, 其语法格式如下:
useradd –g 组名 用户名
?在, -D”选项中, 如果是用来修改 useradd命令所使用的默认
值, 那么该命令使用的语法格式如下:
useradd –D [-g group][-b base][-s shell][-f inactive][-e expire]
2,修改用户账号 ——usermod
usermod命令可用来修改用户帐号的各种属性, 包括用户主目
录, 私有组, 登录, shell等内容 。 Usermod的命令格式如下:
usermod [-LU][-c <备注 >][-d <登入目录 >][-e <有效期限
>][-f <缓冲天数 >][-g <群组 >]
[-G <群组 >][-l <帐号名称 >][-s ][-u ][用户帐号 ]
该命令的各个参数说明如下:
-c<备注 >, 修改用户帐号的备注文字 。
-d<登入目录 >,修改用户登入时的目录 。
-e<有效期限 >, 修改帐号的有效期限 。
-f<缓冲天数 >,修改在密码过期后多少天即关闭该帐号 。
-g<群组 >,修改用户所属的群组 。
-l <帐号名次 >,修改用户帐号的名称
下面举例说明该命令的使用方法:
( 1) 修改用户名, 把用户名, liuyidan”改名为
,lyd”,使用的命令是:
# usermod –l lyd liuyidan
(2) 锁定, lyd”用户, 使其不能登录 。 命令如下:
# usermod –L lyd
( 3) 解锁, lyd”用户账号, 使其可以登录 。 命令如下:
# usermod –U lyd
3,删除用户 ——userdel
userdel命令用于删除指定的用户账号 。 其使用的
语法格式为:
userdel [-r][用户账号 ]
需要补充说明的是 userdel命令可删除用户账号与
相关的文件 。 若不加参数, 则仅删除用户账号, 而
不删除相关文件 。
其中参数, -f”是用来删除用户登入目录以及目录中所有文
件 。
下面举例说明该命令的使用方法:
#grep lyd /etc/passwd //查询用户账号 lyd
是否存在
#userdel lyd //删除 lyd账号
#grep lyd /etc/passwd //再次查询用户账
号 lyd是否存在
#ll –d /home //查询用户 lyd的主
目录是否还存在
#userdel –r lyd //删除用户的同时
删除其工作主目录
4,组增加命令 ——groupadd
groupadd命令可指定群组名称来建立新的群组账号 。
该组账号的 ID值必须是惟一的, 且数值不可为负 。 预
设的最小值不得小于 500,且每增加一个组账号 ID值逐
次增加 。 ID值 0~499是保留给系统账号使用 。 该指令使
用的语法格式为:
groupadd [-r] group
其中, -r”参数是用来建立系统账号 。 系统账号的 ID值
不能大于 500。 下面举例说明该命令的使用方法:
# groupadd lbgroup //建立组账
号 lbgroup
# grep lbgroup /etc/group //查询 group文件中
lbgroup组是否建立
#groupadd –r syslbgroup //建立系统组账号
# grep lbgroup /etc/group //查询 group文件中
syslbgroup组是否
建立
5,组账号修改
groupmod命令用来更改群组识别码或名称 。 该命令
的语法格式为:
groupmod [-g <群组识别码 > <-o>][-n <新
群组名称 >][群组名称 ]
命令中所使用的参数说明如下:
? -g <群组识别码 > 设置欲使用的群组识别码 。
? -o 重复使用群组识别码 。
? -n <新群组名称 > 设置欲使用的群组名称 。
下面举例说明该命令的使用方法:
# grep lbgroup /etc/group //查询 group文件
中 lbgroup组属性
#groupmod –g 503 lbgroup //改变 lbgroup组
的 GID为 503
# grep lbgroup /etc/group //查询操作结果是
否正确
#groupmod –n ydgroup lbgroup //改变 lbgroup组
名为 ydgroup
# grep 503 /etc/group //查询操作结果是
否正确
6,删除组账号
groupdel命令用于删除指定的组账号, 若该群组中仍
包括某些用户, 则必须先删除这些用户后, 方能删除群组 。
该命令的语法格式为:
groupdel [群组名称 ]
7.口令维护命令
出于系统安全考虑, Linux系统中的每一个用户除了有其用
户名外, 还有其对应的用户口令 。 因此使用 useradd命令增
加时, 还需使用 passwd命令为每一位新增加的用户设置口
令;用户以后还可以随时用 passwd命令改变自己的口令 。
该命令的一般格式为:
passwd [用户名 ]
其中用户名为需要修改口令的用户名 。 只有超级用户可以使
用, passwd 用户名, 修改其他用户的口令, 普通用户只能
用不带参数的 passwd命令修改自己的口令 。
另外, passwd命令还可以使用一些参数选项, 这些
参数选项可对账号的口令进行不同的操作, 但这些带参数
的 passwd命令只有 root用户可以使用 。 这些参数选择包括:
? -S:用于查询指定用户账号的状态 。
? -l:用于锁定账号的口令 。
? -u:解除锁定账号的口令 。
? -d:删除指定账号的口令 。
8.组中用户成员的维护
gpasswd命令可用于把一个账户添加到组, 把一个账户从组
中删除, 把一个账户设为组管理员 。
( 1) 添加用户到使用的命令格式为:
gpasswd –a 用户账号名 组账号名
( 2) 从组中删除用户的命令格式为:
gpasswd – d 用户账号名 组账号名
( 3) 设置用户为组管理员的命令格式为:
gpasswd -A 组管理员用户列表 用户组
3.2.3 用户和组的状态命令
1,id命令
id命令用于显示用户当前的 UID,gid以及所
属群组的组列表该指令的语法格式为:
id [选项 ] [用户名称 ]
该命令所使用的选项参数说明如下:
? -g:显示用户所属群组的 ID。
? -G:显示用户所属附加群组的 ID。
? -n:显示用户, 所属群组或附加群组的名称 。
? -r:显示实际 ID。
? -u:显示用户 ID。
2,whoami命令
whoami命令用于显示登录者自身的用户名称,本指令相当
于执行, id –un”指令。
3,su命令
su命令是用来将当前用户转换为其他用户身份 。 其命令
的语法格式为:
su [-flmp] [-][-c <指令 >][-s ][用户帐号 ]
需要指出的是 su命令可让用户暂时变更登入的身份。变更
时须输入所要变更的用户账号与密码。该命令中的选项参
数说明如下:
? -c<指令 >:执行完指定的指令后, 即恢复原来的身份 。
? -f:适用于 csh与 tsch,使 shell不用去读取启动文件 。
? -:改变身份时, 也同时变更工作目录, 以及 HOME,
SHELL,USER,LOGNAME。 此外, 也会变更 PATH变量 。
? -m,-p:变更身份时, 不要变更环境变量 。
? -s:指定要执行的 shell。
[用户帐号 ]:指定要变更的用户。若不指定此参数,则预设变
更为 root。
4,groups命令
groups命令用于显示指定用户所属的组, 如未指定用户则显
示当前用户所属的组 。 该命令的语法格式为:
groups 用户名
3.3 进程管理
3.3.1 进程的定义
Linux是一个多用户多任务的操作系统 。 多用户是指
多个用户可以在同一时间使用计算机系统;多任务是指
Linux可以同时执行几个任务, 它可以在还未执行完一个任
务时又执行另一项任务 。
那到底什么叫进程? Linux系统上所有运行的程序都
可以称之为一个进程 。 Linux用分时管理方法使所有的任务
共同分享系统资源 。 进程的一个比较正式的定义是 ∶ 在自
身的虚拟地址空间运行的一个单独的程序 。 进程与程序是
有区别的, 进程不是程序, 虽然它由程序产生 。 程序只是
一个静态的指令集合, 不占系统的运行资源;而进程是一
个随时都可能发生变化的, 动态的, 使用系统运行资源的
程序 。 而且一个程序可以启动多个进程 。
3.3.2 报告进程状态
要对进程进行监测和控制,首先必须要了解
当前进程的情况,也就是需要查看当前进程,而 ps
命令就是最基本同时也是非常强大的进程查看命令。
使用该命令可以确定有哪些进程正在运行、运行的
状态、进程是否结束、哪些进程占用了过多的资源
等等。
ps命令最常用的还是用于监控后台进程的工作情况,
因为后台进程是不和屏幕键盘这些标准输入 /输出设
备进行通信的, 所以如果需要检测其情况, 便可以
使用 ps命令 。 其命令语法格式如下:
ps [选项 ]
命令中的选项说明如下:
? -e:显示所有进程 。
? -f:全格式 。
? -h:不显示标题 。
? -l:给出长列表 。
? -a:显示终端上的所有进程, 包括其他用户的进程 。
? -r:只显示正在运行的进程 。
? -x显示没有控制终端的进程 。
? -txx:只显示受 tty.xx控制的进程 。
? -u:打印用户格式, 显示用户名和起始时间 。
? -j:按作业格式输出 。
? -v:按虚拟存储器格式显示输出 。
? -m:显示存储器信息 。
? -S:增加子 CPU时间和页面出错 。
? -w:用宽格式显示, 不截取命令行, 使它成为一行 。
? -r:只显示正在运行的进程 。
表 2-14 ps命令输出字段的含义
字 段 含 义
USER 进程所有者的用户名
PID 进程号
%CPU 进程自最近一次刷新以来所占用的 CPU时间和总时间的百分比
%MEM 进程使用内存的百分比
VSZ 进程使用的虚拟内存大小,以 K为单位
RSS 驻留空间的大小。显示当前常驻内存的程序的 K字节数。
TTY 进程相关的终端
STAT 进程状态,用下面的代码中的一个给出:
R:可执行的。 S:睡眠状态。 D:不间断睡眠。 T:停止或跟踪。
Z:僵尸。 W:进程没有驻留页。 I:空闲。
TIME 进程使用的总 CPU时间
COMMAND 被执行的命令行
NI 进程的优先级值,较小的数字意味着占用较少的 CPU时间
PRI 进程优先级。
PPID 父进程 ID
WCHAN 进程等待的内核事件名
3.3.3 结束进程
当需要中断一个前台进程的时候, 通常是使用 <Ctrl+c>组合键;
但是对于一个后台进程这个组合键是不能达到目的的 。 这时就必须使
用 kill命令, 该命令可以终止后台进程 。 至于终止后台进程的原因很多,
或许是该进程占用的 CPU时间过多;或许是该进程已经挂死 。
kill命令的语法格式很简单, 大致有以下两种方 式,
kill [-s 信号 | -p ] [ -a ] 进程号
kill -l [信号 ]
命令中的参数说明如下:
? -s:指定需要送出的信号 。 既可以是信号名也可以对应数字 。
? -p:指定 kill命令只是显示进程的 pid,并不真正送出结束信号 。
-l:显示信号名称列表, 这也可以在 /usr/include/linux/signal.h
文件中找到 。
3.3.4 进程睡眠
sleep命令可使当前正在执行的进
程在规定的时间内处于睡眠 。 其使用的
语法格式为:
sleep time
说明,time为进程将睡眠的时间,
以秒为单位 。 例如,
$ sleep time
3.4.1 识别 Linux中的用户
1,查看用户的操作
系统管理员在任一时刻都可查看用户的行为,在终
端的提示符下输入 w命令即可
命令响应中所示的信息分别说明如下:
第一行显示系统的汇总信息, 字段分别表示系统当前时间,
系统运行时间, 登录用户总数及系统平均负载信息 。 对于该
行显示的几个数据意义是:
?4:50pm 表示执行 w的时间是在下午 4:50。
?0days,11:18 表示系统运行 0天 11小时 18分 。
?4users 表示当前系统登录用户总数为 4
?load average 与后面的数字一起表示系统在过去 1,5、
10分钟内的负载程度, 数值越小, 系统负
载越轻 。
3.4 查看登录用户及日志文件信息
从第 2行开始构成一个表格,共有 8个栏目,分别显示各个用
户正在做的事情及该用户所占用的系统资源:
?USER:显示登录用户名 。 用户重复登录, 该账号也会重复
出 现 。
?TTY:用户登录所使用的终端 。
?FORM,显示用户从什么地方登录到系统 。 如果是从本地登
录, 此字段为, -”;如果从远程登录便会显示主机的 IP地
址或主机名 。
?LOGIN@:是 LOGIN AT的意思, 表示登录进入系统的时间 。
?IDLE:用户空闲时间, 从用户上一次任务结束后开始计时 。
?JCPU:以终端代号来区分, 表示在某段时间内, 所有与该
终 端相关的进程任务所耗费的 CPU时间 。
?PCPU:指 WHAT域的任务执行后所耗费的 CPU时间 。
?WHAT:表示当前执行的任务 。
另外,使用 W命令还可在有很多用户登录时,查看某一个
具体的用户名,使用的命令形式如下:
# w root
2.查看登录用户
系统管理员若想知道某一时刻有哪些用户登录到系
统, 可以使用系统提供的 who命令, 该命令可以查看当
前登录系统的用户及其他相关系统信息 。
3,查看登录用户历史
系统管理员可以随时查看用户登录的历史行为,还
可查看某一用户曾经登录到的系统,这些功能使用 last命
令即可实现。
3.4.2 查看日志文件系统
日志文件( Log files)是包含关于系统消息的文件,
包括内核、服务、在系统上运行的应用程序等。不
同的日志文件记载不同的信息。
1,定位日志文件
多数日志文件位于 /var/log 目录中 。 某些程序如
httpd 和 samba 在 /var/log 中有单独的存放日
志文件的目录 。
2.放日志文件的目录 。
注意, 日志文件目录中会有多个后面带有数字的文
件 。 这些文件是在日志文件被循环时创建的 。 日志
文 件被 循环 使用, 因 此文 件不 会变 得太大 。
logrotate 软 件 包 中 包 含 一 个 能 够 自 动 根 据
/etc/logrotate.conf 配 置 文 件 和
/etc/logrotate.d 目录中的配置文件来循环日志
文件的 cron 任务 。 按照默认配置, 日志每周都被
循环, 并被保留四周之久 。
2,查看日志文件
要在互动的, 真实时间的应用程序中查看系统日志文件, 可使
用日志查看器 。 要启动日志查看器应用程序, 可使用如下两种
方法打开:
( 11) 依次选择, 主菜单 → 系统工具 → 系统日志,
( 22) 在 shell终端提示下键入 redhat-logviewer 命令 。
打开图 3- 4- 5所示的日志查看器对话框 。
按照默认设置, 当前可查看的日志文件每隔 30 秒被刷新
一次 。 要改变刷新率, 可从图 3- 4- 5的下拉菜单中选择
,编辑 → 首选项, 。 如图 3- 4- 6所示的窗口会出现 。 在
,日志文件, 标签中, 点击刷新率旁边的上下箭头来改变
它 。 可单击, 关闭, 按钮来返回到主窗口 。 刷新率会被立
即改变 。 要手工刷新当前可以查看的文件, 可从图 3- 4-
5中选择, 文件即刻刷新, 或按, Ctrl+ R”键 。
3,检查日志文件
日志查看器可以被配置在包含警告关键字的行旁边来显
示警告图标 。 要添加警告词, 从图 3-4-5中的下拉菜单
中选择, 编辑 → 首选项,, 然后选中, 警告, 标签, 打
开图 3- 4- 6所示的对话框 。 单击, 添加, 按钮来添加
警告词 。 要删除一个警告词, 可从列表中选择它, 然后
单击, 删除, 。
3.5 控制面板和设置管理工具
3.5.1 Red Hat的控制面板
3.5.2 setup配置工具
3.5 基本系统恢复
3.5.1 常见问题
3.5.2 引导入救援模式
3.5.3 引导入单用户模式
3.5.4 引导入紧急模式
本章小结