第一章:Linux‘’用户和组的管理‘’
@一、Linux用户身份概述
@1.1 Linux用户介绍
@1.2 三个重要passwd,shadow,group文件的介绍
- @1.2.1 passwd文件
- @1.2.2 shadow文件
- @1.2.3 group文件
@二、创建Linux用户
- @2.1 添加Linux用户——useradd
- @2.2 设置Linux用户密码——passwd
@三、管理Linux用户
- @3.1 设置Linux用户账号——usermod
- @3.2 删除Linux用户账号——userdel
@四、创建与管理Linux用户组
@4.1 创建Linux用户组——groupadd
@4.2 管理Linux用户组——groupdel groupmod
- @4.2.1 删除用户组
- @4.2.2 修改用户组
@五、查看用户UID、GID、groups
- 学习目标:
- 描述Linux系统上用户和组的用途
- 配置sudo权限
- 创建、修改、删除本地用户
- 创建、修改、删除本地组
- 创建、修改、删除本地组
一、Linux用户身份概述
用户账户是为在不同的人员和不同的程序间提供隔离,对外,用户使用用户名供人们使用。对内,系统分配唯一标识号(UID)来区分不同的账户。操作系统内部,每一个程序都作为特定用户执行。每一个文件,都属于特定的用户。
1.1 Linux用户介绍
用户账户有三种主要类型:超级用户、系统用户和普通用户
- 超级用户账号用于管理系统,超级用户的名称为root,其账户UID为0.超级用户对系统具有完全访问权限。
- 系统用户账号供系统服务进程使用,用户无法使用系统用户账户以交互方式登陆。
- 普通用户账号用于处理日常工作的普通用户账号。
Linux用户有以下三类,每一个用户都有一个数值,称为UID
。
超级 用户root | 系统用户 | 普通用户 | |
---|---|---|---|
权限 | 具有一切权限 | 为了满足相应的系统进程对文件属主的要求而建立的系统用户不能用来登录 | 由管理员赋予的一般权限 |
功能 | 管理系统的各项功能,如添加/删除用户、启动/关闭服务进程、开启/禁用硬件设备 | 功能:Linux系统正常工作所必需的内建的用户,例如:bin、daemon、adm、lp等 | 由管理员创建的用于日常工作的用户 |
UID | 0 | 1~999 | 从1000开始 |
- Linux不像Windows那样有专门的数据库用来存放用户的信息,LinuxLinux系统采用纯文本文件来保存账号的各种信息,其中最重要的文件有
/etc/passwd
、/etc/shadow
、/etc/group
这几个。 - 账号的管理实际上就是对这几个文件的内容进行添加、修改和删除
记录行的操作。 - Linux系统为了自己的安全,默认情况下只允许超级用户更改它们。
/etc/passwd | 用户帐号信息保存在passwd文件中(重要) |
---|---|
/etc/shadow | 用户的加密口令保存在shadow文件中(重要) |
/home/teacher | 用户的宿主目录是home目录中与用户名称相同的目录 |
/etc/group | 用户的初始配置文件来在skel目录(配置模版) |
/etc/skel | 用户的初始配置文件来在skel目录(配置模版) |
1.2 三个重要passwd,shadow,group文件的介绍
1.2.1 passwd文件
(1)/etc/passwd
文件每一行都表示的是一个用户信息,一行有7个字段;每个段位用:
分割。
[root@VM-16-3-centos ~]# cat -n /etc/passwd1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologin3 daemon:x:2:2:daemon:/sbin:/sbin/nologin4 adm:x:3:4:adm:/var/adm:/sbin/nologin
(2)每一段的解释:
账号名称 :密码 : UID : GID : 个人资料 : 主目录 : Shell
root: x: 0: 0: root: /root: /bin/bash
第一 第二 第三 第四 第五 第六 第七
- 第一字段:用户名(也被称为登录名)
- 第二字段:密码;在例子中我们看到的是一个
x
,其实密码已被映射到/etc/shadow 文件中 - 第三字段:UID ;用户ID
- 第四字段:GID;用户组的ID
- 第五字段:用户名全称,这是可选的 注释性的说明
- 第六字段:用户的家目录所在位置;root 这个用户的家目录是/root
- 第七字段:用户所用SHELL 的类型,root用的是 bash;所以设置为/bin/bash
1.2.2 shadow文件
(1)在/etc/passwd文件中,有一个字段是用来存放经过加密的密码。我们先来看以下passwd文件的权限。
[root@VM-16-3-centos ~]# ll -d /etc/passwd
-rw-r--r-- 1 root root 1255 Feb 28 14:45 /etc/passwd
(2)可以看到任何用户对它都有读的权限。为了保证系统的正常运行和安全,Linux系统对密码提供了更多一层的保护,即把加密后的密码重定向到另一个文件/etc/shadow。
[root@VM-16-3-centos ~]# ll -d /etc/shadow
---------- 1 root root 717 Feb 28 14:45 /etc/shadow
(3)shadow文件一共有9个字段来表示跟密码有关的部分,每个字段用‘:
’来分隔。
[root@VM-16-3-centos ~]# cat /etc/shadow
root:$1$jsCNhEKR$yxMUZ8ZcIhGOpkn06irDB/:19051:0:99999:7:::
(4)每一段的解释
root:$1$jsCNhEKR$yxMUZ8ZcIhGOpkn06irDB/:19051:0:99999:7:::root :$1$jsCNhEKR$y/ :19051 :0 :99999 :7 : : :
用户名 密码 最后一次修改时间 最小时间间隔 最大时间间隔 警告时间 不活动时间 失效时间 标志
- 用户名:和/etc/passwd文件中相对应的用户名。
- 密码:存放加密后的口令(密码)。密码字段为“*”表示用户被禁止登录,为“!!”表示密码未设置,为“!”表示用户被锁定。
- 最后一次修改时间:用户最后一次修改口令的时间(从1970-1-1起计的天数)。
- 最小时间间隔:两次修改口令允许的最小天数。
- 最大时间间隔:口令保持有效的最多天数,即多少天后必须修改口令。
- 警告时间:从系统提前警告到口令正式失效的天数。
- 不活动时间:口令过期多少天后,该账号被禁用。
- 失效时间:指示口令失效的绝对天数(从1970-1-1开始计算)。
- 标志:未使用。
1.2.3 group文件
(1)Linux的组:私有组、系统组、标准组之分。
- 私有组:建立账户时,若没有指定账户所属的组,系统会建立一个组名和用户名相同的组,这个组就是私有组,这个组只容纳了一个用户。
- 标准组:可以容纳多个用户,组中的用户都具有组所拥有的权利。
- 系统组: Linux系统正常运行所必需的,安装Linux系统或添加新的软件包会自动建立系统组。
(2)组的名称:组的密码 gid:组成员
[root@VM-16-3-centos ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys: x: 3:
组名 组密码 gid 组成员
二、创建Linux用户
2.1 添加Linux用户——useradd
- 使用
adduser
/useradd
命令创建账户时,默认的用户家目录会被存放在/home
目录中,默认的Shell
解释器为/bin/bash
,而且默认会创建一个与该用户的基本用户组。 - 语法格式:useradd【选项】用户名 表示创建一个用户 默认该用户的家目录在/home/用户名 登陆该用户会默认切换到该用户的家目录下
- 常用选项
注意区分大小写
命令 | 所执行的操作 |
---|---|
-e | 账户的到期时间,格式为YYYY-MM-DD |
-u | 指定该用户的默认UID |
-d | 指定用户的家目录(默认为/home/username),使用语法 useradd -d /home/username username 表示创建一个用户叫username 并把它的家目录在home username下 |
-g | 指定一个初始的已存在用户基本组 |
-G | 指定一个或多个扩展用户组 |
-N | 不创建与用户同名的基本用户组 |
-s | 指定该用户的默认Shell解释器 |
- 实例
(1)在系统中添加Linux用户test,观察添加用户后系统有什么变化?
[root@VM-16-3-centos ~]# useradd test
(2)在/etc/passwd
文件中会看到增加了一行:
[root@VM-16-3-centos ~]# tail -l /etc/passwd
test:x:1001:1001::/home/test:/bin/bas
(3)在home目录下出现test同名宿主目录,test对/home/test
目录有所有权限,其他用户无任何权限。
[root@VM-16-3-centos ~]# cd /home/
[root@VM-16-3-centos home]# ll
drwx------ 2 test test 4096 Apr 27 17:33 test
(4)在/etc/group
文件中也会增加一行
[root@VM-16-3-centos home]# tail -l /etc/group
test:x:1001:
(5)在/etc/shadow
文件中也会增加一行:
[root@VM-16-3-centos ~]# tail -l /etc/shadow
test:!!:19109:0:99999:7:::
-
Linux的权限
pwd
命令可以显示当前在哪个目录下
2.2 设置Linux用户密码——passwd
- passwd命令用于修改用户密码、过期时间、认证信息等
- 普通用户只能使用passwd命令修改自身系统密码,而root管理员则有权限修改其他所有人飞密码。并且root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码。
- 语法格式:passwd【选项】【用户名】
- 常用选项:注意大小写
命令 | 所执行的操作 |
---|---|
-d | 使改账户可以用空密码登录 |
-l | 锁定用户,禁止其登录 |
-u | 解除锁定,允许用户登录 |
-S | 显示用户的密码是否被锁定,以及密码所采用的加密方式 |
-e | 强制用户在下次登录时修改密码 |
三、管理Linux用户
3.1 设置Linux用户账号——usermod
usermod
命令用于修改用户的属性。用户的信息保存在/etc/passwd
文件中,可以用文本编辑器来修改其中的用户参数项目,也可以用usermod
命令修改已经创建的用户信息,例如用户的UID、基本扩展用户组、默认终端等。- 语法格式:usermod【选项】用户名
- 常用选项:注意大小写
选项 | 所执行的操作 |
---|---|
-c | comment 改变用户的注释(备注),如:全名、地址、办公室电话、家庭电话等 |
-d -m | dir 改变用户的主目录 参数-m与参数-d可以连用,可重新指定用户的家目录并把旧的文件转移过去 |
-e | 修改用户的有效日期 格式 YYYY-MM-DD |
-L | 锁定用户密码,使密码无效。锁定用户禁止其登录系统 |
-U | 解除密码锁定,解锁用户,允许其登录系统 |
-f days | 在密码到期的days天后停止使用账户 |
-g GID或组名 | 修改用户的所属基本组 |
-G | 变更扩展用户组 |
-l | name 更改账户的名称,必须在该用户未登录的情况下才能使用 |
-p | 修改用户的密码 |
-u UID | 改变用户的UID为新的值,改变用户的UID时主目录下所有该 用户所拥有的文件或子目录将自动更改UID,但对于主目录之 外的文件和目录只能用chown命令手工进行设置 |
-s Shell | 修改用户的登录shell |
3.2 删除Linux用户账号——userdel
- 语法格式:userdel【选项】用户名
- 常用选项:
选项 | 所执行的操作 |
---|---|
-f | 强制删除用户 |
-r | 删除用户时将用户主(家)目录下的所有内容一并删除,同时删除用户本地邮件存储的目录或文件,对于用户在别的目录下所拥有的文件只能手动删除 |
- 如果我们确认某位用户后续不会再登陆到系统中,则可以通过userdel命令删除该用户的所有信息。在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r参数将其删除 。
四、创建与管理Linux用户组
4.1 创建Linux用户组——groupadd
- 为了能够更加高效地指派系统中各个用户的权限,在工作中常常会把几个用户加入到同一个组里面,这样便可以针对一类用户统一安排权限。
- 语法格式:groupadd【选项】群组名
- 常用选项:
选项 | 所执行的操作 |
---|---|
- g GID | 指定新组的GID,默认值是已有的最大的GID加1 |
-r | 建立一个系统专用组,与-g不同时使用时,则分配一个1~999的GID |
4.实例
[root@VM-16-3-centos ~]# groupadd -g 2000 test1
/*表示添加一个新组,组ID为2000,组名为test1*/
- 注意:上面已经介绍了普通用户
UID
是从1000开始的
4.2 管理Linux用户组——groupdel groupmod
4.2.1 删除用户组
- groupdel命令: 删除指定名称的用户组帐号
- 语法格式:groupdel 群组名
- 注意! :需要从系统上删除群组时,可用groupdel指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后(删除用户上面说明了),才能删除群组。
4.2.2 修改用户组
- groupmod命令:修改用户组的相关信息
五、查看用户UID、GID、groups
- 此命令可以查看用户的相应信息。
- 语法格式:id 【要查找的用户名称】
命令 | 所执行的操作 |
---|---|
id | 使用ID命令显示当前已登录的用户信息 |
id username | 使用id username显示其他用户的信息 |
/*1.使用id命令显示当前已登录的用户信息*/
[root@VM-16-3-centos ~]# id
uid=0(root) gid=0(root) groups=0(root)