用户和组
一、Linux的安全模型
1、用户
管理员:root,0
普通用户:1-60000自动分配
系统用户:1-499(centos 6之前)、1-999(centos 7以后),对守护进程获取资源分配权限。
登录用户:500+(centos 6之前)、1000+(centos 7以后),给用户进行交互式登录使用。
2、用户组
管理员组:root,0
普通组:
系统组:1-499(CentOS 6以前), 1-999(CentOS7以后), 对守护进程获取资源进行权限分配 。
普通组:500+(CentOS 6以前), 1000+(CentOS7以后), 给用户使用
3、用户和组的关系
用户的主要组(primary group):用户必须属于且只属于一个组,默认创建用户时会自动创建一个和用户同名的组作为用户的主要组,又叫私有组。
用户的附加组(supplementary):一个用户可以属于0个或多个辅助组,附属组。
4、安全上下文
Linux安全上下文Context:运行中的程序,即进程(process),以进程发起者的身份运行,进程所能够访问资源的权限取决于就进程的运行者的身份。
例:通过root和普通用户运行/etc/shadow,可以得到资源能否被访问室友运行者身份决定的,非程序本身
[14:45:00 root@zhang ~]#cat /etc/shadow
root:$6$2pesF.BWD8hL1Oho$VsFCIFF98OJRq/3lLMu3XDrbWwOxFjXKZwglimRV3Q1AatemwxOOTFx0pZ6bPmdLlHNtfvNy8Rzo0hr/hcm.L.::0:99999:7:::
zhang:$6$AL8zvDL3$liu4gHAlA.jWu1CumQ/bZgev9ABh.vLUYk8CkfBxEU7BV.AO5/uObIel876Hlfk1x7eP2otrPynLJfFK9DlYU0:1:0:99999:7:::
rpc:!!:18564:0:99999:7:::
[14:45:07 root@zhang ~]#su zhang
[14:45:27 zhang@zhang root]$cat /etc/shadow
二、用户和组的配置文件
1、用户和组的主要配置文件路径
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/shadow:用户密码及其相关属性
/etc/group:组及其属性信息
/etc/gshadow:组密码及其相关属性
2、passwd文件格式
[09:27:07 root@zhang ~]#head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
ogin name:登录用名
passwd:密码
UID:用户身份编号
GID:登录默认所在组编码
GECOS:用户全名或注释
home directory:用户主目录
shell:用户默认使用shell
3、shadow文件格式
[09:27:20 root@zhang ~]#head -1 /etc/shadow
root:$6$2pesF.BWD8hL1Oho$VsFCIFF98OJRq/3lLMu3XDrbWwOxFjXKZwglimRV3Q1AatemwxOOTFx0pZ6bPmdLlHNtfvNy8Rzo0hr/hcm.L.::0:99999:7:::
登录用名
用户密码:一般用sha512加密
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效
更改密码加密算法:
[08:45:37 root@zhang ~]#authconfig --passalgo=sha256 --update
4、group文件格式
[09:27:27 root@zhang ~]#head -1 /etc/group
root:x:0:gentoo
群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在 /etc/gshadow
GID:就是群组的 ID
以当前组为附加组的用户列表(分隔符为逗号)
5、gshdow文件格式
[09:27:33 root@zhang ~]#head -1 /etc/gshadow
root:::gentoo
群组名称:就是群的名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:多个用户间用逗号分隔
三、用户和组的管理命令
用户管理命令:useradd、usermod、userdel
组帐号维护命令:groupadd、groupmod、groupdel
1、用户管理
1.1 用户创建
useradd 创建新的用户
格式及选项
useradd [选项] LOGIN
-g:UID
-o:配合-u选项,不检查UID的唯一性
-g:GID 指明用户的所属基本组,可为组名也可GID
-c:"COMMENT" 用户的注释信息
-d:HOME_DIR 指定路径不存在的家目录
-s:SHELL 指明用户默认shell
-G:GROUP 为用户指明附属组
-N:不创建私用组做主组,使用users组做主组
-r:创建系统用户 CentOS 6之前: ID<500,CentOS 7以后: ID<1000
-m:创建家目录,用于系统用户
-M:不创建家目录,用于非系统用户
例:
[09:42:40 root@zhang ~]#useradd -r -u 321 -g wang -s /sbin/nologin -d /home/wang
gsir -c "wangsir" wang
[09:43:41 root@zhang ~]#id wang
uid=321(wang) gid=1116(wang) groups=1116(wang)
[09:43:44 root@zhang ~]#tail -1 /etc/passwd
wang:x:321:1116:wangsir:/home/wangsir:/sbin/nologin
新建用户的相关文件路径
/etc/default/useradd
/etc/skel/*
/etc/login.defs
1.2 用户属性修改
usermod 修改用户属性
格式及选项
usermod [选项] login
-u:UID 新UID
-g:GID 新主组
-G:GROUP 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使
用-a选项
-s:SHELL 新的默认SHELL
-c:'COMMENT' 新的注释信息
-d:HOME 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l:login_name: 新的名字
-L:lock指定用户,在/etc/shadow 密码栏的增加 !
-U:unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD:指明用户账号过期日期
-f INACTIVE:设定非活动期限,即宽限期
1.3 删除用户
userdel删除用户
格式及选项
userdel [选项] login
-f --force 强制
-r --remove 删除家目录及邮箱
1.4 查看用户相关的ID信息
id 可以查看用的的UID和GID信息
格式及选项
id [选项] login
-u:显示UID
-g:显示GID
-G:显示用户所属组的ID
-n:显示名称,配合ugG使用
1.5 用户身份切换
su:switch user,可以切换用户之间的身份,并以指定用户的身份执行命令
格式及选项
su [options] [-] [user [args]]
-l --login su -l username 相当于su - username
-c --command <command> pass a single command to the shell with -c
切换用户方式:
su - username:完全切换,会读取目标用户的配置文件,切换至自已的家目录。
su UserName:不完全切换,非登录式切换,不会读取目标用户的配置文件,不改变当前工作目录。
说明:root su至其他用户无须密码;非root用户切换时需要密码
**注意:su 切换新用户后,使用 exit 退回至旧的用户,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱 **
例:
[10:04:11 root@zhang ~]#su - zhang
Last login: Tue Dec 1 10:03:48 CST 2020 on pts/0
[10:04:14 zhang@zhang ~]$echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/zhang/.local/bin:/home/zhang/bin
[10:04:30 root@zhang ~]#su zhang
[10:04:33 zhang@zhang root]$echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#不切换用户创建文件
[10:10:43 root@zhang ~]#su - zhang -c 'touch zhang.txt'
[10:11:27 root@zhang ~]#ll ~zhang/
-rw-rw-r-- 1 zhang zhang 0 Dec 1 10:11 zhang.txt
1.6 设置密码
passwd修改用户密码
格式及选项
passwd [OPTIONS] UserName
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码,Ubuntu无此选项
例:
Ubuntu:
[10:28:58 root@ubuntu ~]#echo -e '123321\n123321' | passwd zhang
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
CentOS:
[10:31:24 root@zhang ~]#echo -e '123321' |passwd zhang
Changing password for user zhang.
New password: BAD PASSWORD: The password is a palindrome
Retype new password: Password change aborted.
New password: Password change aborted.
New password: Password change aborted.
passwd: Have exhausted maximum number of retries for service
#创建陈用户设置下次登录强制修改密码
[10:54:39 root@zhang ~]#useradd chen
[10:54:54 root@zhang ~]#echo 123456 | passwd --stdin chen
Changing password for user chen.
passwd: all authentication tokens updated successfully.
[10:55:14 root@zhang ~]#getent shadow chen
chen:$5$NbAH4dAa$daIBU5ndp887AXg0Iod5HXajmdpacKBQuQ9zcE7qRz8:18597:0:99999:7:::
[10:55:33 root@zhang ~]#passwd -e chen #设置下次登录修改密码
Expiring password for user chen.
passwd: Success
[10:55:39 root@zhang ~]#getent shadow chen
chen:$5$NbAH4dAa$daIBU5ndp887AXg0Iod5HXajmdpacKBQuQ9zcE7qRz8:0:0:99999:7:::
[10:56:12 root@zhang ~]#su - zhang
Password:
Last login: Tue Dec 1 10:11:27 CST 2020 on pts/0
[10:56:55 zhang@zhang ~]$su - chen
Password:
You are required to change your password immediately (root enforced)
Changing password for chen.
(current) UNIX password:
New password:
BAD PASSWORD: The password is shorter than 8 characters
1.7 修改用户密码策略
chage 修改瀛湖密码策略
格式及选项
chage [选项] login
-d LAST_DAY #更改密码的时间
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-I --inactive INACTIVE #密码过期后的宽限期
-E --expiredate EXPIRE_DATE #用户的有效期
-l 显示密码策略
例:
[11:02:36 root@zhang ~]#chage -m 2 -M 42 -W 14 -I 7 -E 2020-12-1 chen
[11:02:47 root@zhang ~]#chage -l chen
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : Dec 01, 2020
Minimum number of days between password change : 2
Maximum number of days between password change : 42
Number of days of warning before password expires : 14
[11:02:55 root@zhang ~]#getent shadow chen
chen:$5$NbAH4dAa$daIBU5ndp887AXg0Iod5HXajmdpacKBQuQ9zcE7qRz8:0:2:42:14:7:18597
#设置下一次登录强制设置密码
[11:07:59 root@zhang ~]#chage -d 0 chen
[11:08:04 root@zhang ~]#getent shadow chen
chen:$5$NbAH4dAa$daIBU5ndp887AXg0Iod5HXajmdpacKBQuQ9zcE7qRz8:0:2:42:14:7:18597:
[11:08:15 root@zhang ~]#chage -l chen
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : Dec 01, 2020
Minimum number of days between password change : 2
Maximum number of days between password change : 42
Number of days of warning before password expires : 14
2、用户组管理
2.1 创建组
groupadd实现创建组
格式及选项
groupadd [选项] group_name
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000
例:
[11:23:25 root@zhang ~]#groupadd -g 51 -r apache
[11:24:16 root@zhang ~]#tail -1 /etc/group
apache:x:51:
2.2 修改组
groupmod 修改组属性
格式及选项
groupmod [选项] group
-n group_name:新名字
-g GID:新的GID
例:
[14:09:27 root@zhang ~]#getent group admins
admins:x:1118:
[14:10:49 root@zhang ~]#groupmod -n admin123 -g 1111 admins
[14:11:29 root@zhang ~]#tail -1 /etc/group
admin123:x:1111:
[14:11:53 root@zhang ~]#getent group admin123
admin123:x:1111:
2.3 组删除
groupdel 删除组
格式及选项
groupdel [选项] GROUP
-f,--force:强制删除,用户的主组也会被强制删除
例:
[14:08:35 root@zhang ~]#groupdel -f admins
2.4 更改组密码
gpasswd 修改组密码和修改附加组成员关系
格式及选项
gpasswd [选项] GROUP
-a user:将user添加至指定组中
-d user:从指定附加组中移除用户user
-A user1,user2,...:设置有管理权限的用户列表
例:
#怎加组成员
[13:43:19 root@zhang ~]#groupadd admins
[13:43:50 root@zhang ~]#id wang
uid=321(wang) gid=1116(wang) groups=1116(wang)
[13:43:53 root@zhang ~]#gpasswd -a wang admins
Adding user wang to group admins
[13:44:23 root@zhang ~]#id wang
uid=321(wang) gid=1116(wang) groups=1116(wang),1118(admins)
[13:44:54 root@zhang ~]#groups wang
wang : wang admins
[13:45:56 root@zhang ~]#getent group wang
wang:x:1116:
#删除组成员
[13:47:01 root@zhang ~]#gpasswd -d wang admins
Removing user wang from group admins
[13:47:13 root@zhang ~]#id wang
uid=321(wang) gid=1116(wang) groups=1116(wang)
[13:47:23 root@zhang ~]#groups wang
wang : wang
[13:47:28 root@zhang ~]#getent group wang
wang:x:1116:
[13:47:52 root@zhang ~]#getent group admins
admins:x:1118:
2.5 临时切换主组
newgrp 临时切换主组,如果用户不属于该组在,则需要组密码
格式
newgrp [-] [group]
例:
[13:51:30 root@zhang ~]#su zhang
[13:51:33 zhang@zhang ~]$newgrp root
Password:
[13:51:53 zhang@zhang ~]$id
uid=1000(zhang) gid=0(root) groups=0(root),1000(zhang)
[13:52:51 zhang@zhang ~]$id zhang
uid=1000(zhang) gid=1000(zhang) groups=1000(zhang)
[13:53:05 zhang@zhang ~]$id
uid=1000(zhang) gid=0(root) groups=0(root),1000(zhang)
[13:53:16 zhang@zhang ~]$getent passwd zhang
zhang:x:1000:1000::/home/zhang:/bin/bash
[13:54:05 zhang@zhang ~]$touch zhang1.txt
[13:54:13 zhang@zhang ~]$ll
-rw-r--r-- 1 zhang root 0 Dec 1 13:54 zhang1.txt
[13:54:16 zhang@zhang ~]$exit
exit
[13:54:55 zhang@zhang ~]$id
uid=1000(zhang) gid=1000(zhang) groups=1000(zhang)
[13:55:11 zhang@zhang ~]$touch zhang2.txt
[13:55:17 zhang@zhang ~]$ll
-rw-r--r-- 1 zhang root 0 Dec 1 13:54 zhang1.txt
-rw-rw-r-- 1 zhang zhang 0 Dec 1 13:55 zhang2.txt
2.6 更改和查看组成员
groupmems 管理和附加组成员
格式及选项
groupmems [选项] [action]
-g, --group groupname #更改为指定组 (只有root)
-a, --add username #指定用户加入组
-d, --delete username #从组中删除用户
-p, --purge #从组中清除所有成员
-l, --list #显示组成员列表
groups 查看用户组关系
格式
groups [选项] [USERNAME]
例:
[14:02:54 root@zhang ~]#groupmems -l -g admins
[14:03:13 root@zhang ~]#groupmems -a zhang -g admins
[14:03:31 root@zhang ~]#id zhang
uid=1000(zhang) gid=1000(zhang) groups=1000(zhang),1002(zhangsan),1112(lisi),1118(admins)
[14:03:34 root@zhang ~]#groupmems -l -g admins
zhang
[14:04:02 root@zhang ~]#groupmems -a wang -g admins
[14:04:08 root@zhang ~]#groupmems -l -g admins
zhang wang
[14:04:14 root@zhang ~]#groups wang
wang : wang admins
[14:04:39 root@zhang ~]#groups zhang
zhang : zhang zhangsan lisi admins
[14:05:06 root@zhang ~]#groupmems -p -g admins #清除所有成员
[14:05:07 root@zhang ~]#groupmems -l -g admins

浙公网安备 33010602011771号