UNIX本身是一个多人多任务的操作系统,也就是说UNIX可以在同一时间提供很多人使用;而且每一个用户同时又可以执行多项工作。为了避免不合法的用户滥用UNIX的系统资源,UNIX一开始就实施账号机制,以便让UNIX系统能够辨识用户的身份,以及决定用户在UNIX系统上的权限。
众所周知,RHEL是一个与UNIX兼容的操作系统,因此RHEL也会提供账号机制。
1 .用户账号的管理
用户在系统中是分角色的,在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;
root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
虚拟用户(系统用户):这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
普通真实用户:是为了让使用者能够使用Linux系统资源而建立的;每个用户都有一个数值,称为UID;root用户的UID为0,系统用户的UID一般为1~499,普通用户的UID为500~60000之间的值
在Linux系统中,每个用户对于一个账号,为了方便管理系统中的用户账号,将多个具有类似特征的用户放在一个集合中,那就是组群。通过修改配置文件实现更改账户,主要的配置文件有:“/etc/passwd”,”etc/shadow”,”/etc/groups”,’/etc/gshadow’,目录”/etc/skel”;+
账号系统文件passwd(2)
1.1用户配置文件
/etc/passwd
/etc/passwd的格式是:
账号名称:用户登录Linux系统时使用的名称
密码:这里的密码是经过加密后的密码,而不是真正的密码,若为“x”,说明密码经过了shadow的保护
UID:用户的标识,是一个数值,Linux系统内部使用它来区分不同的用户
GID:用户所在组的标识,是一个数值,Linux系统内部使用它来区分不同的组,相同的组具有相同的GID
用户执行“cd~”命令时当前目录会切换到个人主目录
Shell:定义用户登录后使用的Shell,默认是bash
/etc/shadow 文件时用户账号的加密文件。任何用户对passwd文件都有读的权限,为了安全,Linux系统对密码提供了更多一层的保护,即把加密后的密码重定向到另一个文件/etc/shadow。密码如果经过shadow保护,在/etc/passwd文件中,每一记录行的密码字段会变成“x”,并且在/etc目录下存在文件shadow;只有超级用户能够读取shadow的内容
每行由9个字段组成,格式如下:
用户名:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志字段
用户名和passwd中的名字一样,联系在一起,次字段是非空的;
密码字段为“*”表示用户被禁止登录,为“!!”表示密码未设置,为“!”表示用户被锁定 ,密码设置后显示加密后的密码,密文;
第4字段:两次修改口令的最少天数;
第6字段:提前多少他警告用户口令将过期。
第7字段:口令过期多少天后禁用此用户
8字段,如果为空则永久可用,9字段保留;
(4、 口令在多少天内不能被用户修改
5、 口令在多少天后必须被修改
6、 口令过期多少天后用户帐号被禁止
7、 口令在到期多少天内给用户发出警告
8、 口令自1970年1月1日被禁止的天数
9、 保留域 )
1.2用户组群配置文件
Linux系统下用户组分为两种:用户私用组群和公用组群;
私用组群: 只包含一个用户,创建用户时自动创建的一个和用户同名的组。
公用组群:可以包含多个用户。
注:当一个用户属于多个用户组群时,某个用户的权限只能是当前所属组群的权限而不能是多个组群权限的累加;并且不要随便把普通用户加入到“root”组中。
/etc/group 中每行是一个组群记录,一个记录包括4个字段,:隔开4个字段依次是:组名:组群口令:GID和组群中用户列表。
/etc/gshadow 是用户组账号的加密文件,只有root才能读取。包括4个字段,依次是:用户组器群名:用户组群口令:用户组群的管理者和组群成员列表。
GID和UID类似,是一个正整数或0,是用户组群的ID值。GID是从0开始,0被赋予跟用户组。系统会预留一些比较靠前的GID给系统虚拟用户组之用。多数预留了500,也就是说新用户组群的GID是从500开始的。
RHEL的/etc/skel/就是用户主目录模板。直接将/etc/skel复制成为该用户的主目录。不过,用户的主目录必须符合下例的规定。
⑴主目录的拥有者必须是用户本人。
⑵主目录的拥有组必须是用户的主要组。
⑶主目录的权限最好为0700,也就是rwx------。
1.3 添加用户账号
useradd命令使用的启动过程分析
命令”useradd”添加用户时,先读取文件”/etc/login.defs”和文件”/etc/default/useradd” 中所定义的规则,然后向文件”/etc/passwd” 和文件”/etc/groups”文件中添加用户和用户组群记录。再次过程中,文件”/etc/passwd” 和文件”/etc/groups”文件的加密文件也同步更新,同时系统会自动在文件”/etc/add/default”中所约定的目录中建立用户主目录,并复制文件夹”/etc/skel”下的文件(包括隐藏文件)到新用户的主目录中。
当使用useradd建立用户账号时,若没有指定参数,useradd则根据/etc/login.defs与/etc/defaults/useradd中的定义作为新建账号的默认值。目前RHEL默认的这两个文件的定义如下:
⑴用户的邮件邮箱目录为/var/spool/mail/目录
⑵新建用户的UID范围是500~60000,默认使用最后一个可用的UID。
添加用户
命令:useradd(或adduser)
命令格式:useradd [选项] 用户名
说明:只有超级用户root才有权使用此命令,使用useradd命令创建新的用户账号后,应利用passwd命令为新用户设置口令
每个新增的用户账号都将会保存在/etc/passwd文件中
useradd命令的参数
-c comment 指定一段注释性描述
-d home_dir 指定用户主目录,如果此目录不存在,则同时使用-m选项来创建
主目录
-e expire_date 指定用户帐号使用的截止日期,日期格式为MM/DD/YY。
-f inactice_days 指定用户帐号在过期几日后永久停权。值为0时立即停权, 为-1时关闭此功能,默认值为-1。
-g 用户组 指定用户所属的用户组。(主组)
-G 用户组 指定用户所属的附加组,用户组之间用,号隔开,不可以夹杂空格
-m 使用者目录若不存在则自动建立。 如使用-k选项,则目录skeleton_diror内的文件将复制至用户主目录下。
-M 不建立用户目录,即使/etc/login.defs系统档设定要建立用户目录。
-n 预设值用户群组与用户名称会相同。此选项将取消此预设值。
-r 用来建立系统帐号。系统帐号的UID会比定义在系统档上/etc/login.defs.的UID_MIN来的小。注意useradd此用法所建立的帐号不会建立使用者目录,也不会在乎/etc/login.defs.上的定义值。如果你想要有使用者目录须额外指定-m参数来建立系统帐号。这是REDHAT额外增设的选项。
-s Shell 指定用户的登录Shell
-u UID 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
passwd [用户名] 修改用户的密码;
其中用户名为需要修改口令的用户名。只有超级用户可以使用“passwd 用户名”修改其他用户的口令,普通用户只能用不带参数的passwd命令修改自己的口令。
另外,passwd命令还可以使用一些参数选项,这些参数选项可对账号的口令进行不同的操作,但这些带参数的passwd命令只有root用户可以使用。这些参数选择包括:
-S:用于查询指定用户账号的状态。
-l:用于锁定账号的口令。
-u:解除锁定账号的口令。
-d:删除指定账号的口令。
删除用户——userdel
userdel命令用于删除指定的用户账号。
使用的语法格式为:
userdel [-r][用户账号]
需要补充说明的是userdel命令可删除用户账号与相关的文件。若不加参数,则仅删除用户账号,而不删除相关文件。
其中参数“-f”是用来删除用户登入目录以及目录中所有文件。
下面举例说明该命令的使用方法:
# grep hsm /etc/passwd //查询用户账号hsm是否存在
# userdel hsm //删除hsm账号
# grep hsm /etc/passwd //再次查询用户账号hsm是否存在
# ll –d /home //查询用户hsm的主目录是否还存在
# userdel –r hsm //删除用户的同时删除其工作主目录
修改用户账号——usermod
usermod命令可用来修改用户帐号的各种属性,包括用户主目录、私有组、登录、shell等内容。Usermod的命令格式如下:
usermod [-u uid [-o]] [-c <备注>] [-d <登入目录>] [-e <有效期限>] [-f <缓冲天数>] [-g <群组>]
[-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号]
该命令的各个参数说明如下:
-c<备注> : 修改用户帐号的备注文字。
-d<登入目录>: 修改用户登入时的目录,如果给定 –m 选项,则用户的旧目录会迁移到新目录。
-e<有效期限> : 修改帐号的有效期限。
-f<缓冲天数> :修改在密码过期后多少天即关闭该帐号。永久停权,当值为0时账号被立刻停权,而当值为-1时则关闭此功能,默认值为-1。
-g<群组>: 修改用户所属的默认登录用户组群。用户组群必须存在
-G group,[…]: 定义用户为多个组群的成员,用,号隔开
-l <帐号名次> :修改用户帐号的名称
-s shell 指定用户默认使用的shell,如果此栏为空,使用系统默认shell
-u uid 用户UID,UID值必须唯一。
下面举例说明该命令的使用方法:
( 1)修改用户名,把用户名“z”改名为“hsm”,使用的命令是:
# usermod –l hsm z
(2)锁定“hsm”用户,使其不能登录。命令如下:
# usermod –L hsm
(3)解锁“hsm”用户账号,使其可以登录。命令如下:
# usermod –U hsm
注:不能使用命令usermod 修改在线用户的信息。用此命令时必须保证这名用户没在计算机上执行任何程序,最好不要使用此命令修改用户的口令。
1.4 添加组群
groupadd命令可指定群组名称来建立新的群组账号。该组账号的ID值必须是惟一的,且数值不可为负。预设的最小值不得小于500,且每增加一个组账号ID值逐次增加。ID值0~499是保留给系统账号使用。
增加一个新的用户组使用命令:groupadd
语法如下:
groupadd option groupname
可用的option如下:
-g GID 指定新用户组的标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
-r 此参数是用来建立系统账号的组群ID(GID)。
实例:
groupadd group1
groupadd -g 100 group2
删除组账号——groupdel
groupdel命令用于删除指定的组账号,若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。该命令的语法格式为:
groupdel [群组名称] 添加、改变组密码
组中用户成员的维护 gpasswd
格式:gpasswd[参数][用户名]组名
gpasswd 后直接跟组群名称,即为组群设置口令;
参数选项:
-a 将用户加入到组中
-d 将用户从组中删除
-r 取消一个用户组群的组群口令
将用户user1加入到组group1中
# gpasswd -a user1 group1
将用户user1从组group1中删除
# gpasswd -d user1 group1
. 组账号修改——groupmod
groupmod命令用来更改群组识别码或名称。该命令的语法格式为:
groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
命令中所使用的参数说明如下:
-g <群组识别码> 设置欲使用的群组GID
-o 重复使用群组识别码。
-n <新群组名称> 设置欲使用的群组名称。
下面举例说明该命令的使用方法:
# grep dba /etc/group //查询group文件中dba组属性
# groupmod –g 503 dba //改变dba组的GID为503
# grep dba /etc/group //查询操作结果是否正确
# groupmod –n sba dba //改变dba组名为sba
# grep 503 /etc/group //查询操作结果是否正确
1. 增加用户帐号——useradd / adduser
在命令行下使用 useradd 命令:
useradd 用户名
该命令做了下面几件事:
1)在 /etc/passwd 文件中增添了一行记录;
2)在 /home 目录下创建新用户的主目录,并将 /etc/skel 目录(skeleton:.bashrc, .bash_history, etc.)中的文件拷贝到该目录中去;但是使用了该命令后,新建的用户暂时还无法登录,因为还没有为该用户设置口令,需要再用 passwd 命令为其设置口令后,才能登录。用户的 UID 和 GID 是 useradd 自动选取的,它是将 /etc/passwd 文件中的 UID 加 1,将 etc/group 文件中的 GID 加 1。
增加新用户时,系统将为用户创建一个与用户名相同的组,称为私有组。这一方法是为了能让新用户与其他用户隔离,确保安全性的措施。
下面通过增加一个用户“z”,以及查看其相关信息,来帮助用户理解该命令所执行的操作。
# useradd z //建立用户账号
# tail -l /etc/passwd //查看password文件中添加的用户 账号信息
# tail -l /etc/shadow //加密后的用户账号及密码信息
# ls /home //查看所建立账号的主目录
增加用户及相关操作
选项 功能描述
-g [initial_grp] 用于添加用户账号时指定该用户的私有组。如不指定“-g”参数,useradd命令将自动建立与用户账号同名的组作为该账号的私有组。
-G [grp...] 用于添加进附属组
在“-g”选项时,其语法格式如下:
useradd –g 组名 用户名
-D 用于显示或设置useradd命令所使用的默认值
在“-D”选项中,如果是用来修改useradd命令所使用的默认值,那么该命令使用的语法格式如下:
useradd –D [-g group][-b base][-s shell][-f inactive][-e expire]
2. 修改用户账号——usermod
usermod命令可用来修改用户帐号的各种属性,包括用户主目录、私有组、登录、shell等内容。Usermod的命令格式如下:
在命令行下使用 usermod 命令:
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>]
[-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号]
该命令的各个参数说明如下:
-c<备注> : 修改用户帐号的备注文字。
-d<登入目录>: 修改用户登入时的目录。
-e<有效期限> : 修改帐号的有效期限。
-f<缓冲天数> :修改在密码过期后多少天即关闭该帐号。
-g<群组>: 修改用户所属的群组。
-l <帐号名次> :修改用户帐号的名称
下面举例说明该命令的使用方法:
( 1)修改用户名,把用户名“z”改名为“hsm”,使用的命令是:
# usermod –l hsm z
(2)锁定“hsm”用户,使其不能登录。命令如下:
# usermod –L hsm
(3)解锁“hsm”用户账号,使其可以登录。命令如下:
# usermod –U hsm
3. 删除用户——userdel
userdel命令用于删除指定的用户账号。
使用的语法格式为:
userdel [-r][用户账号]
需要补充说明的是userdel命令可删除用户账号与相关的文件。若不加参数,则仅删除用户账号,而不删除相关文件。
其中参数“-f”是用来删除用户登入目录以及目录中所有文件。
下面举例说明该命令的使用方法:
# grep hsm /etc/passwd //查询用户账号hsm是否存在
# userdel hsm //删除hsm账号
# grep hsm /etc/passwd //再次查询用户账号hsm是否存在
# ll –d /home //查询用户hsm的主目录是否还存在
# userdel –r hsm //删除用户的同时删除其工作主目录
4. 组增加命令——groupadd / addgroup
groupadd命令可指定群组名称来建立新的群组账号。该组账号的ID值必须是惟一的,且数值不可为负。预设的最小值不得小于500,且每增加一个组账号ID值逐次增加。ID值0~499是保留给系统账号使用。该指令使用的语法格式为:
groupadd [-r] group
其中“-r”参数是用来建立系统账号。系统账号的ID值不能大于500。下面举例说明该命令的使用方法:
# groupadd dba //建立组账号dba
# grep dba /etc/group //查询group文件中dba组是否建立
# groupadd –r sysgroup //建立系统组账号
# grep sysgroup /etc/group //查询group文件中sysgroup组是否建立
5. 组账号修改——groupmod
groupmod命令用来更改群组识别码或名称。该命令的语法格式为:
groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
命令中所使用的参数说明如下:
-g <群组识别码> 设置欲使用的群组识别码。
-o 重复使用群组识别码。
-n <新群组名称> 设置欲使用的群组名称。
下面举例说明该命令的使用方法:
# grep dba /etc/group //查询group文件中dba组属性
# groupmod –g 503 dba //改变dba组的GID为503
# grep dba /etc/group //查询操作结果是否正确
# groupmod –n sba dba //改变dba组名为sba
# grep 503 /etc/group //查询操作结果是否正确
6. 删除组账号——groupdel
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 组管理员用户列表 用户组
1.5其他相关命令:
1. id命令
id命令用于显示用户当前的UID,gid以及所属群组的组列表该指令的语法格式为:
id [选项] [用户名称]
该命令所使用的选项参数说明如下:
-g:显示用户所属群组的ID。
-G:显示用户所属附加群组的ID。
-n:显示用户,所属群组或附加群组的名称。
-r:显示实际ID。
-u:显示用户ID。
Id命令侧重与用户、用户所归属的用户组群,UID,GID;命令 finger 侧重查看用户名电话等信息;
finger –l 用户名
2. whoami命令
whoami命令用于显示登录者自身的用户名称,本指令相当于执行“id –un”指令。这一系列相关的还有w, who, who am i。
查看用户的操作 w 命令
系统管理员在任一时刻都可查看用户的行为, 在终端的提示符下输入w命令即可
命令响应中所示的信息分别说明如下:
第一行显示系统的汇总信息,字段分别表示系统当前时间、系统运行时间、登录用户总数及系统平均负载信息。对于该行显示的几个数据意义是:
4:50pm 表示执行w的时间是在下午4:50。
0days,11:18 表示系统运行0天11小时18分。
4users 表示当前系统登录用户总数为4
load average 与后面的数字一起表示系统在过去1、5、10分钟内的负载程度,数值越小,系统负载越轻.
从第2行开始构成一个表格,共有8个栏目,分别显示各个用户正在做的事情及该用户所占用的系统资源:
USER:显示登录用户名。用户重复登录,该账号也会重复出 现。
TTY:用户登录所使用的终端。
FORM: 显示用户从什么地方登录到系统。如果是从本地登录,此字段为“-”;如果从远程登录便会显示主机的IP地 址或主机名。
LOGIN@:是LOGIN AT的意思,表示登录进入系统的时间。
IDLE:用户空闲时间,从用户上一次任务结束后开始计时。
JCPU:以终端代号来区分,表示在某段时间内,所有与该终端相关的进程任务所耗费的CPU时间。
PCPU:指WHAT域的任务执行后所耗费的CPU时间。
WHAT:表示当前执行的任务
查看登录用户
系统管理员若想知道某一时刻有哪些用户登录到系统,可以使用系统提供的who命令,该命令可以查看当前登录系统的用户及其他相关系统信息。
查看登录用户历史
系统管理员可以随时查看用户登录的历史行为,还可查看某一用户曾经登录到的系统,这些功能使用last/lastlog命令即可实现
3.chage 命令,用于修改用户口令的有效期限,
用chage -l 用户明
4 chfn 命令,此命令用来修改用户的全名,办公地址,电话等。。
5,chsh 命令,改变用户使用是shell类型
chsh [ -s shell] [--list-shells] [username]
:::图片不知怎么的吗,没传上去,抽空补上。。。。。。