目录
一、导入
1、基础
2、切换用户
二、用户与用户组基本信息
1、用户基本信息: /etc/passwd
2、用户密码信息: /etc/shadow
3、用户组配置信息: /etc/group
4、用户组密码信息: /etc/gshadow
三、管理用户
1、添加用户-useradd命令
(1)useradd基本操作:
(2)useradd特殊操作
2、passwd使用
3、修改用户信息-usermod命令
4、删除用户-userdel命令
四、管理用户组
1、添加用户组-groupadd命令
2、修改用户组信息-groupmod命令
3、删除用户组信息-groupdel命令
六、其他命令
1、id与group命令
2、groupmems命令
3、修改用户有效组-newgrp命令
4、chage命令
Linux 是一个多用户操作系统,支持多个用户同时登录操作系统(window某些版本支持) 用户组是用户的逻辑组合,自动继承用户组的权限 用户和用户组既有名称,也有数字形式的 ID root 用户是系统超级管理员,拥有最高的权限,所有对象都可以操作 查看当前登录账户:命令为 whoami
su命令:实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。【只切换用户,不切换当前目录】
su - 命令:切换到用户的主目录。
su - -c "command" 命令:以root用户身份执行一条特权命令,执行之后立刻恢复为普通用户,注意两个“-”之间有空格
- 记录用户的基本信息,每行代表一个用户
- 每一行包含 7 个字段,用“:”分隔,各字段的含义如下
①用户名:一串代表用户身份的字符串。
②密码:"x" 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中
③UID,用户 ID,每个用户都有唯一的一个 UID,当UID为0时,表示超级用户,系统用户UID范围为:1~999,普通用户UID为1000~65535.【在 Linux 中,如何把普通用户升级成管理员呢?只需把其他用户的 UID 修改为 0 就可以了,此时用户名也变为root,因为一个id对应一个用户名,当id为0时,用户名也变为root】
④GID 简称“组ID”,表示用户初始组的组 ID 号。
初始组,指用户登陆时就拥有这个用户组的相关权限。每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组。比如说,我们手工添加用户 lamp,在建立用户 lamp 的同时,就会建立 lamp 组作为 lamp 用户的初始组。
附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。附加组的身份是可以修改的,但是我们在工作中不修改初始组,只修改附加组,因为修改了初始组有时会让管理员逻辑混乱。
⑤用户描述信息:用来解释这个用户的意义
⑥主目录:用户登录后有操作权限的访问目录,通常称为用户的主目录。
root 超级管理员账户的主目录为 /root,普通用户的主目录为 /home/yourIDname
⑦默认Shell:可以理解为用户登录之后所拥有的权限。如果这里使用的是 bash 命令解释器,就代表这个用户拥有权限范围内的所有权限。例如:
[root@localhost ~]# vi /etc/passwd
lamp:x:502:502::/home/lamp:/bin/bash
如果我把 lamp 用户的 Shell 命令解释器修改为 /sbin/nologin,那么,这个用户就不能登录了,例如:
[root@localhost ~]# vi /etc/passwd
lamp:x:502:502::/home/lamp:/sbin/nologin
[root@localhost ~]#vi /etc/passwd
lamp:x:502:502::/home/lamp:/usr/bin/passwd
那么这个用户可以登录,但登录之后就只能修改自己的密码。但是,这里不能随便写入和登陆没有关系的命令(如 ls),系统不会识别这些命令,同时也就意味着这个用户不能登录。
- 记录用户密码相关信息,每行代表一个用户
- 只有 root 用户可以查看
- 每一行包含 9 个字段,用“:”分隔,各字段含义为:
①用户名:一串代表用户身份的字符串。
②密码:"x" 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中
③最近一次密码修改日期:此字段表示最后一次修改密码的时间,Linux 计算日期的时间是以 1970 年 1 月 1 日作为 1 不断累加得到的时间,到 1971 年 1 月 1 日,则为 366 天。这里显示 15775 天,也就是说,此 www 账号在 1970 年 1 月 1 日之后的第 19103 天修改的www用户密码。
④最小修改时间间隔:该字段规定了从第 3 字段(最后一次修改密码的日期)起,多长时间之内不能修改密码。如果是 0,则密码可以随时修改;如果是 10,则代表密码修改后 10 天之内不能再次修改密码。
⑤密码有效期:这个字段可以指定距离第 3 字段(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段。
⑥密码到期前的警告天数:与第 5 字段相比较,当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户 "再过 n 天你的密码就要过期了,请尽快重新设置你的密码!"。该字段的默认值是 7,也就是说,距离密码有效期的第 7 天开始,每次登录系统都会向该账户发出 "修改密码" 的警告信息。
⑦密码到期后的宽限天数:也称为“口令失效日”,简单理解就是,在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。比如说,此字段规定的宽限天数是 10,则代表密码过期 10 天后失效;如果是 0,则代表密码过期后立即失效;如果是 -1,则代表密码永远不会失效。
⑧账号失效日期:同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!该字段通常被使用在具有收费服务的系统中。
⑨保留使用:这个字段目前没有使用,等待新功能的加入。
- 记录用户组信息,每行代表一个用户组
- 每一行包含 4 个字段,用“:”分隔,各字段的含义如下
①组名:用户组的名称,有字母或数字构成。也不能重复。
②组密码:这里的 "x" 仅仅是密码标识,真正加密后的组密码默认保存在 /etc/gshadow 文件中。
③GID:群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的
这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。
④组内用户:此字段列出每个群组包含的所有用户。如果该用户组是这个用户的初始组,则该用户不会写入这个字段,可以这么理解,该字段显示的用户都是这个用户组的附加用户。
1、记录用户组密码相关信息,每行代表一个用户组
2、只有root可以访问
3、每一行包含4 个字段,用“:”分隔,各字段含义为:
①组名:同 /etc/group 文件中的组名相对应。
②加密密码:对于大多数用户来说,通常不设置组密码,因此该字段常为空,但有时为 "!",指的是该群组没有组密码,也不设有群组管理员。
③组管理员:考虑到 Linux 系统中账号太多,而超级管理员 root 可能比较忙碌,因此当有用户想要加入某群组时,root 或许不能及时作出回应。这种情况下,如果有群组管理员,那么他就能将用户加入自己管理的群组中,也就免去麻烦 root 了。不过,由于目前有 sudo 之类的工具,因此群组管理员的这个功能已经很少使用了。
④组附加用户列表:该字段显示这个用户组中有哪些附加用户,和 /etc/group 文件中附加组显示内容相同。
使用 useradd 命令新建用户,此命令的基本格式如下:
useradd [选项] 用户名
选项
功能说明
-d homedir
指定用户的主目录,必须是绝对路径
-u uid
指定用户的 UID
-g gid | gname
指定用户主组的 GID 或组名,必须是已经存在的组
-G groups
指定用户的附加组,如果有多个附加组就用“,”分隔
-m
强制建立用户的主目录,这是普通用户的默认值
-M
不要建立用户的主目录,这是系统用户的默认值
-s shell
指定用户的默认 Shell
-c comment
关于用户的简短描述,也就是 /etc/passwd 第 5 列的内容
-r
创建一个系统用户(UID 在 1000 以内)
-e expiredate
指定账号失效日期,即 /etc/shadow 的第 8 列,格式为YYYY-MM-DD
-f inactive
用户密码到期后的宽限天数,即 /etc/shadow 的第 7 列。
0 表示立即失效,-1 为永远不失效
(1)useradd基本操作:
系统已经帮我们规定了非常多的默认值,在没有特殊要求下,无需使用任何选项即可成功创建用户。例如:
useradd tester2
此条命令完成以下操作:
① 在 /etc/passwd 文件中新增一行与新用户相关的数据
② 在 /etc/shadow 文件中写入一行与新用户相关的密码数据
③ 在 /etc/group 文件中新增一行与新用户同名的用户组
④ 在 /home 目录下创建与新用户同名的目录作为新用户的主目录
例:
(2)useradd特殊操作
例:添加新用户,用户名为 tong,手动指定其UID和主组
例:创建一个具有root权限的用户
功能:修改用户密码,命令格式为:
passwd [选项] 用户名
选项
功能说明
-l
锁定用户,即“lock”。在 /etc/shadow 的第一列前加“!”使密码无效,只有 root 用户可以使用这个选项
-u
解锁用户,即“unlock”,作用与-l选项相反,只有 root 用户能够使用
-S
查询用户密码的相关信息,也就是 /etc/shadow 文件的内容
-n mindays
密码修改后多长时间内不能再修改密码,即 /etc/shadow 第 4 列的内容
-x maxdays
密码有效期,即 /etc/shadow 第 5 列的内容
-w warndays
密码过期前的警告天数,即 /etc/shadow 第 6 列的内容
-i inactivedays
密码失效日期,即 /etc/shadow 第 7 列的内容
-c comment
关于用户的简短描述,也就是 /etc/passwd 第 5 列的内容
root用户修改普通用户的密码(root 用户可以修改普通用户的密码!)
普通用户修改自己密码(要求1,普通用户只能修改自己的密码、要求2,普通用户修改密码前必须输入原密码、要求3,普通用户设置的密码必须满足密码复杂性要求)
例:用户密码 10 天内不允许修改、但 30 天内必须修改、密码到期前 5 天会有提示
如果不小心添错用户信息,后期如何修改呢?使用usermod命令。
基本命令格式:
usermod [选项] 用户名
选项和useradd类似。这里不再做赘述。
注:
useradd 命令用于添加用户,当然,添加用户时可以对用户信息进行定制;
usermod 命令针对与已存在的用户,使用该命令可以修改它们的信息。
如果指定的用户目录不存在呢?
答:命令执行成功,但不会创建不存在的文件夹。
功能:userdel 命令的作用就是从下面文件中,删除与指定用户有关的数据信息。
- 用户基本信息:存储在 /etc/passwd 文件中;
- 用户密码信息:存储在 /etc/shadow 文件中;
- 用户群组基本信息:存储在 /etc/group 文件中;
- 用户群组信息信息:存储在 /etc/gshadow 文件中;
- 用户个人文件:主目录默认位于 /home/用户名,邮箱位于 /var/spool/mail/用户名。
基本格式如下:
userdel -r 用户名
-r 选项表示在删除用户的同时删除用户的家目录。
注意,在删除用户的同时如果不删除用户的根目录,那么根目录就会变成没有属主和属组的目录,也就是垃圾文件。
命令格式如下:
groupadd [选项] 组名
- -g GID:指定组 ID;
- -r:创建系统群组。
命令格式如下:
groupmod [选现] 组名
- -g GID:修改组 ID;
- -n 新组名:修改组名;
功能:删除用户组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。
groupdel 组名
注: 不能删除用户的主组!
id命令功能:用户的UID、GID 和附加组的信息。
命令格式:
id 用户名
group命令功能:显示用户的组信息,与 id -Gn 命令效果相同,命令格式:
group 用户名
n 功能: 把用户添加到或移出用户组,命令格式: groupmems [选项] 常用选项为:选项
功能说明
-a username
把用户添加到组中
-d username
从组中移除用户
-g grpname
目标用户组
-l
显示组成员
-p
删除组内所有用户
当然是初始用户组的组身份生效,因为初始组是用户一旦登陆就获得的组身份。也就是说,用户的有效组默认是初始组,因此所创建文件的属组是用户的初始组。那么,既然用户属于多个用户组, 能不能改变用户的初始组呢?使用命令 newgrp 就可以。 功能:可以从用户的附加组中选择一个群组,作为用户新的初始组。命令格式: newgrp 组名
功能:显示用户的密码信息,和带 -S 选项的 passwd 命令效果类似,命令格式:
chage [选项] 用户名
- -l:列出用户的详细密码状态;
- -d 日期:修改 /etc/shadow 文件中指定用户密码信息的第 3 个字段,也就是最后一次修改密码的日期,格式为 YYYY-MM-DD;
- -m 天数:修改密码最短保留的天数,也就是 /etc/shadow 文件中的第 4 个字段;
- -M 天数:修改密码的有效期,也就是 /etc/shadow 文件中的第 5 个字段;
- -W 天数:修改密码到期前的警告天数,也就是 /etc/shadow 文件中的第 6 个字段;
- -i 天数:修改密码过期后的宽限天数,也就是 /etc/shadow 文件中的第 7 个字段;
- -E 日期:修改账号失效日期,格式为 YYYY-MM-DD,也就是 /etc/shadow 文件中的第 8 个字段。