管理Linux服务器的用户和组
Linux是多用户多任务的网络操作系统,因此,作为该种系统的网络管理员,掌握用户和组的创建与管理至关重要。接下来将主要介绍利用命令行和图形工具对用户和组群进行创建与管理等内容。
Linux是多用户多任务的网络操作系统,因此,作为该种系统的网络管理员,掌握用户和组的创建与管理至关重要。接下来将主要介绍利用命令行和图形工具对用户和组群进行创建与管理等内容。
目录
一、实验目标
1.了解用户和组群配置文件
2.熟练掌握Linux下用户的创建与维护管理的方法
3.熟练掌握Linux下组群的创建与维护管理的方法
4.熟悉用户账户管理器的使用方法
二、理解用户账户和群组
Linux操作系统是多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源。用户账户是用户的身份标识。用户通过用户账户可以登录到系统,并且访问已经被授权的资源。系统依据帐户来区分属于每个用户的文件、进程、任务,并给每个用户提供特定的工作环境(比如:用户的工作目录、shell版本以及图形化的环境配置等),使每个用户都能各自不受干扰地独立工作。
Linux系统系啊的用户账户分为两种:
1.普通用户账户。在系统中只能进行普通工作,只能访问他们拥有的或者有权限执行的文件。
2.超级用户用户。也叫管理员账户,它的任务是对普通用户和整个系统进行管理。超级用户账户对系统具有绝对的控制权。能够对系统进行一切操作,如操作不当,很容易对系统造成损坏。
因此,即使系统只有一个用户使用,也应该在超级用户账户之外再建立一个普通用户帐户,在用户进行普通工作时以普通用户账户登录系统。
用户和组群的基本概念
概念 | 描述 |
用户名 | 用来标识用户的名称,可以是字母、数字组成的字符串,区分大小写 |
密码 | 用于验证用户身份的特殊验证码 |
用户标识(UID) | 用来表示用户的数字标识符 |
用户主目录 | 用户的私人目录,也是用户登录系统后默认所在的目录 |
登录shell | 用户登录后默认使用的shell程序,默认为/bin/bash |
组群 | 具有相同属性的用户属于同一个组群 |
组群标识(GID) | 用来表示组群的数字标识符 |
root 用户的UID为0,系统用户的 UID从1到999;普通用户的UID 可以在创建时由管理员指定,如果不指定,用户的 UID 默认从 1000 开始顺序编号。在 Linux 系统中,创建用户账户的同时也会创建一个与用户同名的组群,该组群是用户的主组群。普通组群的 GID 默认也是从1000开始编号。
三、理解用户账户文件和群组文件
用户账户信息和组群信息分别存储在用户账户文件和组群文件中。
1.理解用户账户文件
1./etc/passwd 文件
准备工作:新建用户 bobby、userl、user2,将 userl和 user2 加人 bobby 群组 (后面章节有详解)。
[root@RHEL7-1 ~]# useradd bobby
[root@RHEL7-1 ~]# useradd user1
[root@RHEL7-1~]# useradd user2[root@RHEL7-1 ~]# usermod -G bobby userl[root@RHEL7-1 ~]# usermod -G bobby user2
在 Linux 系统中,所创建的用户账户及其相关信息(密码除外)均放在/etc/passwd 配置文件中。用vim 编辑器(或者使用 cat /etc/passwd)打开 passwd 文件,内容格式如下:
root:x:0:0:root:/root:/bin/bash
bin:x:l:l:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
user1:x:1002:1002::/home/userl:/bin/bash
文件中的每一行代表一个用户账户的资料,可以看到第一个用户是 root。然后是一些标准账户,此类账户的 shell 为/sbin/nologin,代表无本地登录权限。最后一行是由系统管理员创建的普通账户:user1。
passwd 文件的每一行用“:”分隔为 7个域,各域的内容如下:
用户名:加密口令:UID:GID:用户的描述信息:主目录:命令解释器(登录 shel1)
passwd 文件中的各字段的含义如表 3-2 所示,其中少数字段的内容是可以为空的,但需使用“:”进行占位来表示该字段。
passwd文件字段说明
字段 | 说明 |
用户名 | 用户账号名称,用户登录时所使用的用户名 |
加密口令 | 用户口令,考虑系统的安全性,现在已经不使用该字段保存口令,而用字母“来填充该字段,真正的密码保存在 shadow 文件中 |
UID | 用户号,唯一表示某用户的数字标识 |
GID | 用户所属的私有组号,该数字对应 group 文件中的 GID |
用户描述信息 | 可选的关于用户全名、用户电话等描述性信息 |
主目录 | 用户的宿主目录,用户成功登录后的默认目录 |
命令解释器 | 用户所使用的 shell,默认为“/bin/bash” |
2./etc/shadow 文件
由于所有用户对/etc/passwd 文件均有读取权限,为了增强系统的安全性,用户经过加密之后的口令都存放在/etc/shadow 文件中。/etc/shadow 文件只对 root 用户可读,因而大大提高系统的安全性。shadow 文件的内容形式如下(cat /etc/shadow):
root:$6$PQxz7W3sSRa7Akw53/n7rntDgjPNWdCG66/5RZgjhoelzT2F00ouf2iDM.AVVRIYoez10hGG7KBHEaah.oH5u1t60Q12Rf,:17654:0:99999:7:::
bin:*:16925:0:99999:7:::
daemon:*:16925:0:99999:7:::
bobby:!!:17656:0:99999:7:::
userl:!!:17656:0:99999:7:::
shadow 文件保存投影加密之后的口令以及与口令相关的一系列信息,每个用户的信息在shadow 文件中占用一行,并且用“:”分隔为9个域
shadow文件字段说明
字段 | 说明 |
1 | 用户登录名 |
2 | 加密后的用户口令,*表示非登录用户,!!表示没设置密码 |
3 | 从1970 年 1月1日起,到用户最近一次口令被修改的天数 |
4 | 从1970年1月1日起,到用户可以更改密码的天数,即最短口令存活期 |
5 | 从 1970 年 1月1日起,到用户必须更改密码的天数,即最长口令存活期 |
6 | 口令过期前几天提醒用户更改口令 |
7 | 口令过期后几天账户被禁用 |
8 | 口令被禁用的具体日期(相对日期,从 1970年1月1日至禁用时的天数) |
9 | 保留域,用于功能扩展 |
3./etc/login.defs 文件
建立用户账户时会根据/etc/login.defs 文件的配置设置用户账户的某些选项。该配置文件的有效设置内容及中文注释如下所示。
MAIL_DIR /var/spool/mai //用户邮箱目录
MAIL_FILE .mail
PASS_MAX_DAYS 99999 //账户密码最长有效天数
PASS_MAX_DAYS 0 //账户密码最短有效天数
PASS_MAX_LEN 5 //账户密码的最小长度
PASS_WARN_AGE 7 //账户密码过期前提前警告的天数
UID_MIN 1000 //用useradd命令创建账户时自动产生的最小 UID值
UID_MAX 60000 //用useradd命令创建账户时自动产生的最大 UID值
GID_MIN 1000 //用groupadd命令创建组群时自动产生的最小GID值
GID_MAX 60000 //用 groupadd 命令创建组群时自动产生的最大 GID值
USERDEL_CMD /usr/sbin/userdel_local //如果定义的话,将在删除用户时执行,以删除相应用户的计划作业和打印作业等
CREATE_HOME yes //创建用户账户时是否为用户创建主目录
2.理解群组文件
组群账户的信息存放在/etc/group 文件中,而关于组群管理的信息(组群口令、组群管理员等)则存放在/etc/gshadow 文件中。
1./etc/group 文件
group 文件位于“/etc”目录,用于存放用户的组账户信息,对于该文件的内容任何用户都可以读取。每个组群账户在 group 文件中占用一行,并且用“:”分隔为 4 个域。每一行各域的内容如下(使用cat /etc/group):
组群名称:组群口令(一般为空,用x占位):GID:组群成员列表
group文件的内容形式如下:
root:x:0:
bin;x:l:
daemon:x:2:
bobby:x:1001:user1,user2
userl:x:1002:
root的GID为0,没有其他组成员。group 文件的组群成员列表中如果有多个用户账户属于同一个组群,则各成员之间以“:”分隔。在/etc/group 文件中,用户的主组群并不把该用户作为成员列出,只有用户的附属组群才会把该用户作为成员列出。例如,用户 bobby的主组群是 bobby,但/etc/group 文件中组群 bobby 的成员列表中并没有用户 bobby,只有用户 userl 和 user2。
2./etc/gshadow 文件
/etc/gshadow 文件用于存放组群的加密口令、组管理员等信息,该文件只有 root 用户可以读取。每个组群账户在 gshadow 文件中占用一行,并以“:”分隔为 4 个域。每一行中各域的内容如下:
组群名称:加密后的组群口令(没有就用!):组群的管理员:组群成员列表
gshadow文件的内容形式如下:
root:::
bin:::
daemon:::
bobby:!::user1,user2
user1:!::
四、管理用户账户
用户账户管理包括新建用户、设置用户账户口令和用户账户维护等内容。
1.新建用户
在系统新建用户可以使用 useradd 或者 adduser 命令。useradd 命令的格式是:
useradd [选项] <username>
useradd命令选项
选项 | 说明 |
-c comment | 用户的注释性信息 |
-d home_dir | 指定用户的主目录 |
-e expire_date | 禁用账号的日期,格式为YYYY-MM-DD |
-f inactive_days | 设置账户过期多少天后用户账户被禁用。如果为 0,账户过期后将立即被禁用;如果为-1,账户过期后,将不被禁用 |
-g initial_ group | 用户所属主组群的组群名称或者 GID |
-G group-list | 用户所属的附属组群列表,多个组群之间用逗号分隔 |
-m | 若用户主目录不存在则创建它 |
-M | 不要创建用户主目录 |
-n | 不要为用户创建用户私人组群 |
-p passwd | 加密的口令 |
-r | 创建UID小于1000的不带主目录的系统账号 |
-s shell | 指定用户的登录shell,默认为/bin/bash |
-u UID | 指定用户的UID,它必须是唯一的,且大于 999 |
新建用户 user3,UD 为 1010,指定其所属的私有组为 groupl (group1 组的标识符为 1010)用户的主目录为/home/user3,用户的 shel为/bin/bash,用户的密码为 123456账户永不过期。
[root@RHEL7-1 ~]# groupadd -g 1010 group1
[root@RHEL7-1~]# useradd -u1010-g1010 -d /home/user3-s /bin/bash-p123456
-f -1 user3
[root@RHEL7-1 ~]# tail -1 /etc/passwd
user3:x:1010:1000::/home/user3:/bin/bash
如果新建用户已经存在,那么在执行 useradd 命令时,系统会提示该用户已经存在:
[root@RHEL7-1 -]# useradd user3
useradd: user user3 exists
2.设置用户账户口令
1.passwd命令
指定和修改用户账户口令的命令是 passwd。超级用户可以为自己和其他用户设置口令,而普通用户只能为自己设置口令。passwd 命令的格式为:
passwd [选项] [username]
passwd命令选项
选项 | 说明 |
-l | 锁定(停用)用户账户 |
-u | 口令解锁 |
-d | 将用户口令设置为空,这与未设置口令的账户不同。未设置口令的账户无法登录系统,而口令为空的账户可以 |
-f | 强迫用户下次登录时必须修改口令 |
-n | 指定口令的最短存活期 |
-x | 指定口令的最长存活期 |
-w | 口令要到期前提前警告的天数 |
-i | 口令过期后多少天停用账户 |
-S | 显示账户口令的简短状态信息 |
假设当前用户为 root,则下面的两个命令分别为 root 用户修改自己的口令和root用户修改user1用户的口令。
//root 用户修改自己的口令,直接用passwd命令回车即可
[root@RHEL7-1 ~]# passwd
//root 用户修改 user1 用户的口令
[root@RHEL7-1 ~]# passwd user1
需要注意的是,普通用户修改口令时,passwd 命令会首先询问原来的口令,只有验证通过才可以修改。而 root 用户为用户指定口令时,不需要知道原来的口令。为了系统安全,用户应选择包含字母、数字和特殊符号组合的复杂口令,且口令长度应至少为 8 个字符。
如果密码复杂度不够,系统会提示“无效的密码:“ 密码未通过字典检查 -它基于字典单词”。这时有两种处理方法,一是再次输人刚才输人的简单密码,系统也会接受;另一种方法是更改为符合要求的密码。例如,P@ssw02d 包含大小写字母、数字、特殊符号等 8 位或以上的字符组合。
2.chage命令
要修改用户账户口令,也可以用 chage 命令实现。
chage命令选项
选项 | 说明 |
-l | 列出账户口令属性的各个数值 |
-m | 指定口令最短存活期 |
-M | 指定口令最长存活期 |
-W | 口令要到期前提前警告的天数 |
-I | 口令过期后多少天停用账户 |
-E | 用户账户到期作废的日期 |
-d | 设置口令上一次修改的日期 |
设置 userl用户的最短口令存活期为6天,最长口令存活期为 60 天,口令到期前 5 天提醒用户修改口令。设置完成后查看各属性值。
[root@RHEL7-1 ~]# chage -m 6 -M 60-w 5user1
[root@RHEL7-1 ~]# chage -l user1
最近一次密码修改时间 :5月04,2018
密码过期时间 :7月03,2018
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :6
两次改变密码之间相距的最打天数 :60
在密码过期之前警告的天数 :5
3.维护用户账户
1.修改用户账户
usermod命令用于修改用户的属性,格式为“usermod[选项]用户名”。
前文曾反复强调,Linux 系统中的一切都是文件,因此在系统中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd 文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用 usermod 命令修改已经创建的用户信息,诸如用户的 UID、基本/扩展用户组、默认终端等。
usermod命令中的参数及作用
参数 | 作用 |
-c | 填写用户账户的备注信息 |
-d -m | 参数-m 与参数-d 连用,可重新指定用户的家目录并自动把旧的数据转移过去 |
-e | 账户的到期时间,格式为YYYY-MM-DD |
-g | 变更所属用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户禁止其登录系统 |
-U | 解锁用户,允许其登录系统 |
-s | 变更默认终端 |
-u | 修改用户的 UID |
大家不要被这么多参数难倒。我们先来看一下账户用户 user1 的默认信息:
{root@RHEL7-1 ~]# id user1
uid=1002(user1) gid=1002(user1) 组=1002(user1),1001(bobby)
将用户 user1 加人 root 用户组中,这样扩展组列表中会出现 root 用户组的字样,而基本组不会受到影响:
[root@RHEL7-1 ~]# usermod -G root user1
[root@RHEL7-1 ~]# id userl
uid=1002(userl) gid=1002(userl) 组=1002(user1),0(root)
再来试试用-u 参数修改 userl 用户的 UID 号码值。除此之外,我们还可以用-g 参数修改用户的基本组 ID,用-G 参数修改用户扩展组 ID。
[root@RHEL7-1 ~]# usermod -u 8888 user1
[root@RHEL7-1 ~]# id user1uid=8888(user1) gid=1002(user1) 组=1002(user1),0(root)
修改用户user1的主目录为/var/userl,把启动 shell 修改为/bin/tcsh,完成后恢复到初始状态。可以用如下操作:
[root@RHEL7-1 ~]# usermod -d /var/userl -s /bin/tcsh user1
[root@RHEL7-1 ~]# tail -3 /etc/passwd
duser1:x:8888:1002::/var/user1:/bin/tcsh
user2:x:1003:1003::/home/user2:/bin/bash
user3:x:1010:1000::/home/user3:/bin/bash
[root@RHEL7-1 ~]# usermod -d /var/userl -s /bin/bash user1
2.禁用和恢复用户账户
有时需要临时禁用一个账户而不删除它。禁用用户账户可以用 passwd 或 usermod 命令实现,也可以直接修改/etc/passwd 或/etc/shadow 文件。例如,暂时禁用和恢复 userI 账户,可以使用以下3 种方法实现
(1)使用 passwd命令
//使用 passwd命令禁用 user1 账户,利用 tail 命令可以看到被锁定的账户密码栏前面会加上!!
[root@RHEL7-1 -]# passwd -1 user1
锁定用户 user1的密码
passwd;操作成功[root@RHEL7-1 ~]# tail -1 /etc/shadow
userl:!!$6$7bRDvyc7$2bzzImfxzlwxoluRlno.U2qoBkXJP2INI2nFk1NiJ12dZuazcjFx8
Dt/ng5KaPtXRfCC7198sX5oraxk10bGB1:18124:0:99999;7:::
//利用passwd 命令的-u 选项解除账户锁定,重新启用user1 账户
[root@RHEL7-1 -]# passwd -u user1
(2)使用usermod 命令
//禁用userl账户
root@RHEL7-l ~]# usermod -L user1
//解除user1账户的锁定
[root@RHEL7-l ~]# usermod -u user1
(3)直接修改用户账户配置文件
可将/ete/shadow 文件中关于 userl 账户的 passwd 域的第一个字符前面加上一个“!”,达到禁用账户的目的,在需要恢复的时候只要删除字符“!”即可。
如果只是禁止用户账户登录系统,可以将其启动 shell 设置为/bin/false 或者/dev/null。
3.删除用户账户
要删除一个账户,可以直接删除/etc/passwd 和/etc/shadow 文件中要删除的用户所对应的行,或者用userdel 命令删除。userdel命令的格式为
userdel [-r] 用户名
如果不加-r 选项,userdel 命令会在系统中所有与账户有关的文件中(例如/etc/passwd,/etc/shadow,/etc/group)将用户的信息全部删除。
如果加-r 选项,则在删除用户账户的同时,还将用户主目录以及其下的所有文件和目录全部删除掉。另外,如果用户使用 E-mail 的话,同时也将/var/spool/mail 目录下的用户文件删掉。
五、管理组群
组群管理包括新建组群、维护组群账户和为组群添加用户等内容。
1.维护群组账户
创建组群和删除组群的命令与创建、维护账户的命令相似。创建组群可以使用命令groupadd或者addgroup。
例如,创建一个新的组群,组群的名称为 testgroup,可用以下命令:
[root@RHEL7-1~]# groupadd testgroup
要删除一个组可以用 groupdel 命令,例如删除刚创建的 testgroup 组时可用以下命令:
[root@RHEL7-1 ~]# groupdel testgroup
需要注意的是,如果要删除的组群是某个用户的主组群,则该组群不能被删除修改组群的命令是groupmod,其命令格式为
groupmod [选项] 组名
groupmod命令选项
选项 | 说明 |
-g gid | 把组群的GID改成gid |
-n group-name | 把组群的名称改为group-name |
-o | 强制接受更改的组的GID 为重复的号码 |
2.为组群添加用户
在 Red Hat Linux 中使用不带任何参数的 useradd命令创建用户时,会同时创建一个和用户账户同名的组群,称为主组群。当一个组群中必须包含多个用户时,则需要使用附属组群.在附属组中增加、删除用户都用gpasswd 命令。gpasswd命令的格式为
gpasswd [选项] [用户] [组]
只有root用户和组管理员才能够使用这个命令,命令选项如下表。
选项 | 说明 |
-a | 把用户加人组 |
-d | 把用户从组中删除 |
-r | 取消组的密码 |
-A | 给组指派管理员 |
例如,要把user1 用户加入 testgroup 组,并指派 user1 为管理员,可以执行下列命令:
[root@RHEL7-1 ~]# groupadd testgroup
[root@RHEL7-1 ~]# gpasswd -a userl testgroup
[root@RHEL7-1 ~]# gpasswd -A userl testgroup
更多推荐
所有评论(0)