第四章 用户和组管理
4.1 用户和组文件
4.2 使用命令行方式管理用户和组
4.3 使用 Red Hat用户管理器管理用户和组结束
4.1 用户和组文件返回
Linux操作系统采用了 UNIX传统的方法,把全部的用户信息保存为普通的文本文件。
4.1.1 用户账号文件 ——passwd
4.1.2 用户影子文件 ——shadow
4.1.3 用户组账号文件 ——group
4.1.4 组账号文件 ——gshadow
4.1.5 使用 pwck和 grpck命令验证用户和组文件结束
4.1.1 用户账号文件 ——Password
/etc/passwd文件是 LINUX安全的关键文件之一。该文件用于用户登录时校验用户的登录名、加密的口令数据项、用户
ID( UID),默认的用户分组 ID( GID)、
用户信息、用户登录子目录以及登录后使用的 shell。
返回如,liyang:x:500:500:liyang/home/liyang:/bin/bash
该用户的基本信息为:
登录名,liyang
加密的口令表示,x
UID,500
GID,500
用户信息,liyang
HOME目录,home/liyang
登录后执行的 shell,/bin/bash
当用户登录进入系统后,有一个属于自己的操作环境。用户可以使用 CAT命令查看
/etc/passwd文件内容,里面有完整的系统账号内容。
4.1.2 用户影子文件 ——shadow
Linux使用不可逆的加密算法如 DES来加密口令,由于加密算法是不可逆的,所以黑客从密文是得不到明文的。但 /etc/passwd文件是全局可读的,加密的算法是公开的,恶意用户取得了 /etc/passwd文件,便极有可能破解口令。而且,在计算机性能日益提高的今天,对账号文件进行字典攻击的成功率会越来越高,速度越来越快。因此,针对这种安全问题,Linux/UNIX广泛采用了,shadow( 影子)文件”机制,将加密的口令转移到 /etc/shadow文件里,该文件只为 root超级用户可读,
而同时 /etc/passwd文件的密文域显示为一个 x,从而最大限度地减少了密文泄露的机会。
返回
该文件的每行是 8个冒号分割的 9个域,格式如下:
Username,passwd,lastchg,min,max,
warn,inactive,expire,flag
其中,各个域的含义如下表所示:
使用 CAT命令可以显示 /etc/shadow文件的内容。
域名 含义
username 用户登录名
passwd 加密的用户口令
lastchg 表示从 1970年 1月 1日起到上次修改口令所经过的天数
min 表示两次修改口令之间至少经过的天数
max 表示口令还会有效的最大天数
warn 表示口令失效前多少天内系统向用户发出警告
inactive 表示禁止登录前用户名还有效的天数
expire 表示用户被禁止登录的时间
flag 保留域,未使用
4.1.3 用户组账号文件 ——group
/etc/passwd文件中包含着每个用户默认的分组
ID( GID)。 在 /etc/group文件中,这个 GID被映射到该用户分组的名称以及同一分组中的其他成员去。
/etc/group文件含有关于小组的信息,
/etc/passwd中的每个 GID在文件中应当有相应的入口项,入口项中列出了小组名和小组中的用户,这样可方便地了解每个小组的用户,否则必须根据 GID在 /etc/passwd文件中从头至尾地寻找同组用户,这提供了一个比较快捷的寻找途径。
/etc/group文件对小组的许可权限的控制并不是必要的,因为系统用来自于 /etc/passwd文件的 UID、
GID来决定文件存取权限,即使 /etc/group文件不存在于系统中,具有相同的 GID用户也可以小组的存取许可权限共享文件。小组就像登录用户一样可以有口令。如果 /etc/group文件入口项的第二个域为非空(通常用 x表示),则将被认为是加密口
使用 CAT命令可以查看 /etc/group文件的内容,其中每一行的内容表示如下:
用户分组名
加密的用户分组口令
用户分组 ID号( GID)
以逗号分隔的成员用户名单
4.1.4 组账号文件 ——gshadow
如同用户账号文件的作用一样,组账号文件也是为了加强组口令的安全性,防止黑客对其实行的暴力攻击,
而采用的一种将组口令与组的其他信息相分离的安全机制。
返回
使用 CAT命令进行查看 /etc/gshadow,其中格式为:
用户组名
加密的组口令
组成员列表
4.1.5 使用 pwck和 grpck命令验证用户和组文件
Linux提供了 pwck和 grpck两个命令分别验证用户以及组文件,以保证这两个文件的一致性和正确性。下面将分别加以介绍。
pwck用来验证用户账号文件( /etc/passwd) 和影子文件( /etc/shadow) 的一致性,其验证文件中的每一个数据项中每个域的格式以及数据的正确性。如果发现错误,该命令将会提示用户对出现错误的数据项进行删除。
返回
4.2 使用命令行方式管理用户和组返回
4.2.1 使用 useradd命令添加用户
4.2.2 使用 usermod命令修改用户信息
4.2.3 使用 userdel命令删除用户
4.2.4 使用 groupadd命令创建用户组
4.2.5 使用 groupmod命令修改用户组属性
4.2.6 使用 groupdel命令删除用户组结束
4.2.1 使用 useradd命令添加用户返回
Linux使用 useradd命令添加用户或更新新创建用户的默认信息。
格式为:
useradd 选项 用户名
例如:建立一个用户名为 jone,用户组为 jerry,
登录 shell为 /bin/sh,登录主目录为 /home/Jone的用户。
# useradd –r jone –c ―JONE‖ –g jerry –s /bin/sh -d
/home/Jone
# passwd jone 给该用户指定密码
4.2.2 使用 usermod命令修改用户信息返回
usermod命令用来修改使用者账号,具体的修改信息和 useradd命令所添加的信息一致
使用格式,usermod 选项 用户名
该命令的参数与 useradd 命令使用的参数一致。
例:将用户 jerry 的组改为 super,其用户 ID改为
5600
# usermod –g super –u 5600 jerry
将用户 jone的用户名改为 honey-jone,其登录 shell
改为 /bin/ash,用户描述改为,honey-jone”
# usermod –l honey-jone –s /bin/ash –c ―honey-jone‖。
4.2.3 使用 userdel命令删除用户返回
userdel命令用来删除系统中的用户信息。
格式为:
userdel 选项 用户名选项 –r,删除账号时,连同账号主目录一起删除。
例:删除用户 manager
# userdel manager
4.2.4 使用 groupadd命令创建用户组返回
groupadd命令可指定群组名称来建立新的组账号。需要时可从系统中取得新组值。
使用格式为:
Groupadd 选项 用户组名例:创建一个 GID为 5400,组名为 testbed的用户组
# groupadd –g 5400 testbed
创建一个 GID为 5401,组名为 testbed的用户组,由于组名不唯一,创建失败。
4.2.5 使用 groupmod命令修改用户组属性返回
groupmod命令用来修改用户组信息。
使用格式为:
groupmod 选项 用户组名例:将 testbed的名称改为 test
# groupmod –n test testbed
将组 test的 GID改为 5404
#groupmod –g 5404 test
4.2.6 使用 groupdel命令删除用户组返回
groupdel命令比较简单,用来删除系统中存在的用户组。
使用格式为:
groupdel 用户组名使用该命令时必须确认待删除的用户组存在。
首先使用 CAT命令显示系统中存在的组,再进行删除。
4.3 使用 Red Hat用户管理器管理用户和组返回相对于命令行方式来说,图形用户界面方式管理有简单、直观的优点。
4.3.1 启动 Red Hat用户管理器
4.3.2 创建用户
4.3.3 修改用户属性
4.3.4 创建用户组
4.3.5 修改用户组属性 结束
4.3.1 启动 Red Hat用户管理器在 Linux系统中,有两种方法可以启动 Red
Hat的用户管理器( Red Hat User Manager)。
第一种是通过在 shell下使用 redhat-config-
users命令来启动。
# redhat –config-users
第二种方法是通过使用图形界面来启动用户管理器:
单击【开始】 |【系统设置】 |【用户和组群】
来启动用户管理器。
4.3.2 创建用户返回启动了 Red Hat用户管理器后,就可以方便地进行添加用户的操作了。
4.3.3 修改用户属性返回通过使用 Red Hat用户管理器,不但可以创建用户,而且可以方便地修改系统已有用户的各个相关属性。
4.3.4 创建用户组返回如同创建用户一样,使用 Red Hat用户管理器后可以方便地进行添加用户组的操作。
4.3.5 修改用户组属性返回在 Reh Hat用户管理器中,修改用户组属性如同创建用户组群一样,也是一件比较简单的工作。
4.4 Linux下的 Vi文本编辑器文本编辑器是所有计算机系统中最常使用的一种工具。
4.4.1 Vi编辑器介绍
4.4.2 启动 Vi编辑器
4.4.3 显示 Vi中的行号
4.4.4 光标移动操作
4.4.5 屏幕命令
4.4.6 文本插入命令
4.4.7 附加( append) 命令
4.4.8 打开( open) 命令
4.4.9 文本修改命令
4.4.10 退出 Vi
4.4.1 Vi编辑器介绍
Vi是 Linux系统的第一个全屏幕交互式编辑程序,
从诞生至今该编辑器一直得到广大用户的青睐,
历经数十年仍然是人们主要使用的文本编辑工具,
足见其生命力之强,而强大的生命力是其强大的功能带来的。
Vi是,Visual interface‖的简称,它在 Linux上的地位就仿佛 Edit程序在 DOS上一样。其可以执行输出、删除、查找、替换、块操作等众多文本操作,
而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
4.4.2 启动 Vi编辑器
Vi不是一个排版程序,不像 Word或 WPS那样可以对字体、格式、段落等其他属性进行编排,其只是一个文本编辑程序。
Vi没有菜单,只有命令,且命令繁多。
使用 Vi进行编辑工作的第一步是进入该编辑界面,Linux提供的进入 Vi编辑器界面的命令如表所示:
命 令 说 明
vi filename 打开或新建文件,并将光标置于第一行首
vi +n filename 打开文件,并将光标置于第 n行首
vi + filename 打开文件,并将光标置于最后一行首
vi +/pattern filename 打开文件,并将光标置于第一个与
pattern匹配的串处
vi -r filename 在上次正用 vi编辑时发生系统崩溃,
恢复 filename
vi filename1...filenamen 打开多个文件,依次进行编辑
例如:打开 test.c文件,进行编辑。(该文件不存在,即新建一个文件,名为 test.c )
# vi test.c
#include<stdio.h>
#include <string.h>
int main()
{
printf(―this is a test‖);
return 0;
}
打开上述文件,并将光标置于第五行
# vi +5 test.c
打开打开上述文件,将光标置于第一个 int
匹配的串处
# vi +/int test.c
同时打开系统中的多个文件进行编辑。
Vi的基本工作模式
有 3种工作模式:命令行模式、文本输入模式和末行模式。
命令行模式:用户在 shell环境下输入启动
vi命令进入编辑器时,处于命令行模式。
在该模式下,用户可以输入任何合法的 vi
命令,但是并不在屏幕上显示。
文本输入模式:在命令模式下插入命令 i、
附加命令 a,打开命令 o,修改命令 c,取代命令 r或替换命令 s都可以进入文本输入模式。此时用户输入的所有字符都当作文本内容进入保存,并将它们显示在屏幕上。
末行模式:命令是以按回车键结束的正文行,在命令模式下,用户按“:”即可进入末行模式,此时光标显示在窗口的最后一行,“:”作为该模式的提示符,等待用户输入命令。末行命令执行完后,vi自动回到命令模式。
三种模式之间的转换:
如果从命令模式转到编辑模式,可以键入命令 a或者 i;
如果从文本模式返回,按 ESC键即可;
在命令模式下输入“:”,即可切换到末行模式,然后输入命令。
4.4.3 显示 Vi中的行号
Vi中的许多命令都要用到行号及行数等数值。若编辑的文件较大时,自己去数是非常不方便的。为此 Vi提供了给文本加行号的功能。这些行号显示在屏幕的左边,而相应行的内容则显示在行号之后。
在末行模式下,可以输入 se nu来获得当前行的行号与内容。
4.4.4 光标移动操作全屏幕文本编辑器中,光标的移动操作无疑是最经常使用的操作了。用户只有熟练地使用移动光标的这些命令,才能迅速准确地到达所期望的位置处进行编辑。
Vi中的光标移动既可以在命令模式下,也可以在文本输入模式下,但操作的方法不尽相同。
在文本模式下,可以直接使用键盘上的四个方向键移动光标。
命令模式下,除了上述方法外,还可以使用 h,j,k,l来代替方向键移动光标
4.4.5 屏幕命令屏幕命令是以屏幕为单位移动光标的,常用于文件的滚屏和分页。须要注意的是,屏幕命令不是光标移动命令,不能作为文本限定符用于删除命令中。
1、滚屏命令:
CTRL+U,将屏幕向前翻滚半屏
CTRL+D,将屏幕向后翻滚半屏
2、分页命令
CTRL+F,将屏幕向文件尾翻滚一页
CTRL+B,将屏幕向文件头翻滚一页
3、状态命令:使用 CTRL+G组合键
4、屏幕调零命令,3个
[行号 ] z[行数 ]<回车 >
[行号 ] z[行数 ].
[行号 ] z[行数 ]_
例如:
8z16<回车 >:将文件中的第八行作为屏幕显示的首行,并一共显示 16行
15z,将文件中的第 15行作为屏幕显示的中间行,显示行数为整屏
15z5_,将文件中的第 15行作为屏幕显示的最末行,显示行数为 5行。
4.4.6 文本插入命令在命令模式下用户输入的任何字符都被 Vi当作命令加以解释执行,如果用户要将输入的字符当作是文本内容时,则首先应将 Vi的工作模式从命令模式切换到文本输入模式。
Vi提供了两个插入命令,I和 i。
1,i命令
插入文本从光标所在位置前开始插入,插入过程中可以使用删除键删除错误的输入,此时 vi处于插入状态
2,I命令
将光标移动到当前行的行首,在前面进行文本的插入。
4.4.7 附加( append) 命令
Vi提供了两个附加插入命令,a和 A。
1,a命令该命令用于在光标当前所在位置后进行新文本的添加,光标后的原文向后移动。
2,A命令将光标移动到所在行的行尾,在此处插入新文本。
4.4.8 打开( open) 命令不论是 Insert命令,还是 append命令,所插入的内容都是从当前行中的某个位置开始的。若我们希望在某行之前或某行之后插入一些新行,则应使用 open命令。
1,o命令该命令将在光标所在行的下面新起一行,将光标置于行首,
等待输入文本。
2,O命令该命令将在光标所在行的上面新起一行,将光标置于行首,
等待输入文本。
4.4.9 文本修改命令在命令模式下可以使用 Vi提供的各种有关命令对文本进行修改,包括对文本内容的删除、复制、取代和替换等。
1、文本删除
1)删除单个字符:
x,删除光标处的字符。或者 ( nx)
X,删除光标前面的字符,或者是 Nx
2)删除多个字符
dd,删除光标所在的整行,或者是 ndd
D:删除从光标所在处到行尾的内容
d0,删除从光标前一个字符开始到行首的内容
dw,删除一个单词,或者是 ndw。
2、取消上一命令:复原命令
U,恢复到误操作命令前的情况,U命令只能取消前一步的操作
u,把当前行恢复成被编辑前的状态,而不管此行被编辑了多少次。
3,重复命令:该命令只能在命令模式下工作,在该模式下按,.”键即可。
4.4.10 退出 Vi
返回
当编辑完文件,准备退出 Vi返回到 shell时,可以使用以下几种方法之一:
在命令模式中,连按两次大写字母 Z,
若当前编辑的文件曾被修改过,则 Vi保存该文件后退出,返回到 shell; 若当前编辑的文件没被修改过,则 Vi直接退出,返回到
shell。
在末行模式下,输入命令,w。 Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用 w命令时,可以再给编辑文件起一个新的文件名。
在末行模式下,输入命令,q,系统退出 Vi返回到 shell。
在末行模式下,输入命令,wq。 Vi将先保存文件,然后退出 Vi返回到 shell。
在末行模式下,输入命令,x。 该命令的功能同命令模式下的 ZZ命令功能相同。