目录
一、分类
1、用户
2、组
二、配置文件
1)/etc/passwd
2)/etc/shadow
3)/etc/group
三、用户管理
1、添加新用户 useradd
2、修改用户信息 usermod
3、删除用户信息 userdel
4、提升用户对系统命令的使用权限 sudo
5、为用户账户设置密码 passwd
6、用户切换 su
四、用户组的管理
1、创建用户组 groupadd
2、修改用户组属性 groupmod
3、添加/删除组成员 gpasswd
4、删除组账户 groupdel
5、查询用户和组信息
root(超级用户)——具有一切权限
伪用户(系统用户)——Linux系统正常工作所必需的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的;系统用户不能用来登录
普通用户
基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这 个组就是基本组。
附加组(公有组):可以容纳多个用户,组中的用户都具有组所拥有的权利。
在Linux中,用户账号、密码、用户组信息和用户组密码均是存放在不同的配置文件中的。
用户账号文件 /etc/passwd
用户密码文件 /etc/shadow
用户组账号文件 /etc/group
用户组密码文件 /etc/gshadow
passwd 是一个文本文件,用于定义系统的用户账号,由于所有用户都对passwd有读权限,所以该文件中只定义用户账号,而不保存口令
例如:root:x:0:0:root:/root:/bin/bash
分段解析:
root: 用户名
x:密码占位符
0:uid
0:gid
root:个人资料
/root:家目录(主目录)
/bin/bash:默认使用的shell
UID:用户的标识,是一个数值,用它来区分不同的用户,每个用户都有一个UID数值:
超级用户的UID——0
系统用户的UID——1~999
普通用户的UID——≥1000
GID:用户所在基本组的标识,是一个数值,用它来区分不同的组,相同的组具有相同的GID。
主目录:类似Windows 的个人目录,通常是/home/username,这里username是用户名,用户 执行“cd~”命令时当前目录会切换到个人主目录。
Shell:定义用户登录后激活的Shell,默认是Bash Shell
[root@localhost Documents]# ll /etc/shadow
----------. 1 root root 1134 Sep 10 21:56 /etc/shadow
[root@localhost Documents]# head -1 /etc/shadow
root:$6$BDpMyn6U8IREItqZ$Awo1gVsRwSuloBaggb5rAklWLLFJ88euOlHp7bwmBfEVAPYT6aEy.77EozELMexVrA3sArJLH7xv/CQFNWNho.::0:99999:7:::
root 用户名
$6 sha512算法(哈希算法--加密算法)【使用SHA-512/SHA-256/MD5算法加密后的密码($id$,id为1表示md5,5表示sha256,6为sha512),若为空,表示该用户无需密码即可登录,若为“*”表示该账号不
能用于登录系统,若为“!!”表示该账号密码已被锁定】
$BDpMyn6U8IREItqZ salt盐值(混淆原密码)
$Awo1gVsRwSuloBaggb5rAklWLLFJ88euOlHp7bwmBfEVAPYT6aEy.77EozELMexVrA3sArJLH7xv/CQFNWNho.::0:99999:7:::
::最后一次修改密码的时间(此时代表没有修改过密码)
0:密码修改间隔
99999:密码过期时间
7:密码过期后几天警告
:密码失效日期
:保留字段供日后使用
系统中的每个组在/etc/group文件中有一行记录,任何用户均可以读取用户组账户信息配置文件。
[root@localhost Documents]# ll /etc/group
-rw-r--r--. 1 root root 811 Sep 10 21:56 /etc/group
[root@localhost Documents]# head -1 /etc/group
root:x:0:
root: 表示组名称
x: 组密码占位符合
0: 组id
caixukun,root:用户组成员(用“,"分开的用户名,列出的成员以该组为附加组)
格式:useradd [选项] 用户名
选项:
-c 添加个人的注释信息
-u 设置用户id(若同时有-o选项,则可重复使用其他用户的标识号)
-g 为用户指定所属的基本组(该组再指定时必须已存在)
-G 为用户指定所属的附加组(该组再指定时必须已存在,可有多个,组之间用","分隔)
-p 设置密码(密码非原始密码,而是经过哈希后的密码)
-d 目录——设定用户的家目录(默认为/home/用户名)。
-M 不创建用户家目录
-N 不创建与用户名同名的基本组
-f 天数——指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即禁用;若指定为-1,则表示账号过期后不被禁用(即密码永不过期)。
格式:usermod [选项] 用户
选项:
-l 修改用户名,必须在该用户未登录的情况下才能使用
-L 锁定(暂停)用户账户(Lock)
-U 解锁用户账户(unlock)
格式:userdel [选项] 用户
选项:
-r 删除用户时连着家目录一起删(如果服务器资源还阔以时,尽量不删)
sudo——提取命令,普通用户可以该命令临时提升权限,权限范围在 /etc/sudoers/文件中,可以是直接通过vim修改,也可以通过visudo命令修改
例:
sudo -l :列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
sudo -u 用户名 命令 :以指定用户的身份执行命令。后面的用户是除root以外的,可以是用
户名,也可以是UID。
sudo -k :清除存活期时间,下次再使用sudo时要再输入密码。
sudo -b 命令 :在后台执行指定的命令。
sudo -p 提示语 <操作选项> :可以更改询问密码的提示语,其中%u会代换为使用者账号名
称,%h会显示主机名称。
redhat ALL=(ALL) /usr/sbin/reboot
redhat #需要提权的用户名
ALL #指定哪些平台可以提权
=(ALL) #以什么执行命令
/usr/sbin/reboot #可以执行的命令
ALL是关键字,代表任何身份、主机或命令
格式:passwd [选项] 用户名
选项:
-d 清空密码
-l 锁定(停用)用户账户
-u 解锁用户账户
[root@localhost ~]#echo 密码 | passwd --stdin 用户名 使用该方式也可修改用户密码
——substitute user
格式:su [用户名]
从root用户切换到任何用户不需要密码验证,而从普通用户到root或其他普通用户均需要输入目标 用户的密码且验证成功后才可切换。
su和su - 命令区别就是加载的配置文件不一样:
su 切换方式加载的文件: ~/.bashrc,/etc/bashrc
su - 切换方式加载的文件: /etc/bashrc,/etc/profile,~/.bashrc,~/.bash_profile
格式:groupadd [选项] 组名称
选项:
-r 创建系统账户(伪账户),默认id 1-999,可通过-g设置
-g GID 设置用户组的id
#当添加完组以后,可以通过查看 /etc/group文件来确认是否添加成功
[root@localhost Documents]# groupadd root1 -g 1111
[root@localhost Documents]# cat /etc/group
...
root1:x:1111:
格式:groupmod [选项] 用户组
选项:
-g GID 修改当前的组id
-n 新用户组 修改当前组的名称
[root@localhost Documents]# groupmod -n 1root root1
[root@localhost Documents]# cat /etc/group
修改前:
...
root1:x:1111:
修改后:
...
1root:x:1111:
——只有root用户和组管理员才能使用该命令
格式:gpasswd [选项] [用户] [组]
选项:
-r 删除组密码
-a 把用户加入组
-d 把用户从组中删除
-M 可同时添加多个用户到组中
-A 给组指派管理员
格式:grouopdel 用户组名
被删除的组若是基本组,则必须先删除引用该基本组的用户,然后再删除该基本组。
id命令: 可以查看用户的详细信息
users: 查看当前系统中登录的用户
group: 查看出用户所属组的信息
w: 展示当前用户的详情
who: 类似w
last : 查看系统中登录信息
[root@localhost Documents]# id zx
uid=1000(zx) gid=1000(zx) groups=1000(zx),10(wheel)
[root@localhost Documents]# groups zx
zx : zx wheel
# users,查看当前登录系统的用户
[root@localhost Documents]# users
root root root zx
# last:列出目前与过去登入系统的用户相关信息,该命令默认会去读取/var/log/wtmp文件,并把该
文件记录的登入系统的用户名单全部显示出来。
[root@localhost Documents]# last -2
root tty3 tty3 Sat Sep 23 14:16 gone - no logout
root seat0 login screen Sat Sep 23 14:16 gone - no logout
wtmp begins Sun Sep 10 21:54:13 2023
[root@localhost Documents]# last -f /var/log/wtmp -n 3
root tty3 tty3 Sat Sep 23 14:16 gone - no logout
root seat0 login screen Sat Sep 23 14:16 gone - no logout
zx tty2 tty2 Sat Sep 23 13:44 gone - no logout
wtmp begins Sun Sep 10 21:54:13 2023
# 每个账号的最近登录时间,则可使用lastlog查看,该命令会读取/var/log/lastlog文件。
# w:显示登录到系统的用户信息。
[root@localhost Documents]# w
21:44:26 up 7:23, 4 users, load average: 0.00, 0.22, 0.17
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 13:44 1.00s 0.25s 0.01s w
root seat0 14:16 0.00s 0.00s 0.01s /usr/libexec/gdm-wayland-session --register-session gnome-se
zx tty2 13:44 8:02m 0.41s 0.33s /usr/libexec/gnome-session-binary
root tty3 14:16 8:02m 0.06s 0.05s /usr/libexec/gnome-session-binary
第一行显示当前的系统时间、开机多久、登录到系统中的用户数和系统平均负载。平均负载是指在1分钟、5分
钟、15分钟内系统负载情况;
第二行只是各个项目的说明;
USER:表示登录系统的用户
TTY:表示用户使用的TTY名称
FROM:表示用户从哪里登录进来
LOGIN@:用户登录的日期和时间
idle:表示空闲时间
JCPU:在某段时间内所有与该终端相关的进程任务所耗费的cpu时间
PCPU:当前活动进程使用的系统时间
WHAT:表示当前用户执行的进程名称和选项
第三行以后,每行代表一个用户登录的信息。
# who:显示目前登录到系统的用户,who通常通过/var/run/utmp文件来获取信息 。
who
who -s
sho -a
who -b 列出系统最近启动的日期
who -m 列出关于当前终端的信息
who am i
who -q 列出在本地系统上的用户和用户数的清单
who -r 显示当前系统的运行级别
who -u 显示当前每个用户的用户名、登录终端、登录时间、终端活动、进程和主机名
who -T 显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所有者可写,“?”表示遇到终端故障
who -w 和-T一样