linux入门篇–用户及用户组的管理
用户组和权限管理
一、AAA认证资源分派:
Authorization认证 | 授权 Accouting | Audition审计 |
---|---|---|
令牌token | identity身份 |
二、用户组的UID,GID 定位number范围。
Linux系统用户 | username/UID | group GID |
---|---|---|
(centos7):root,0 | 0 | 0 |
(centos7):系统用户 | 1-999 | 1-999 |
(centos7):普通用户 | 1000+以上 | 1000+以上 |
(centos6):root,0 | 0 | 0 |
(centos6):系统用户 | 1-499 | 1-499 |
(centos6):普通用户 | 500+以上 | 500+以上 |
linux安全上下文
运行中的程序:进程(process)
以进程发起者的身份运行:root:/bin/cat mage:/bin/cat
进程所能够访问资源的权限取决于进程的运行者
linux组的类别
用户的主要组(primary group):用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户:
用户的附加组(supplementary group) 一个用户可以属于零个或多个辅助组
三、linux用户和组的主要配置文件
1、用户和组最重要的四个文件
/etc/passwd: 用户及其属性名称(名称、uid、主组ID等)
/etc/group: 组及其属性信息
/etc/shadow: 用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
[root@jeffary7 ~]#cat /etc/passwd 该文件存放的是用户及其属性名称
例如
root:x:0:0:root:/root:/bin/bash
root用户id:x表示密码:0账户最大权限:0组最大权限:
root表示用户述:/root家目录:/bin/bash
2、/etc/group 组及其属性信息
root:x:0: root用户:x密码:0
group文件格式
群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在/etc/gshadow
GID:就是群组的ID
以当前组为附加组的用户列表(分隔符为逗号)
3、/etc/shadow: 用户密码及其相关属性
例如:
root:$6$J2hMOTJ7$eZEJsA6ClwQu7eIfgaBg/wvYIJ7BPoUZQq3YpQB53zDbWrlmMz1NowikE1xOZaMoKxteYqkyGMlzPNJ/8KmVw/:17363:0:99999:7:5:10:
①、登录用户:
有密码sha512加密(如果为空则登录不需要密码)星号代表帐号被锁定;双叹号表示这个密码已经过期了。
②、$6$J2hMOTJ7$
用户密码:(!!表示锁定2个叹号双保险)一般用sha512加密 $表示加密类型 $salt打乱顺序 $密码 从1970年1月1日起到密码最近一次被更改的时间
③17363:
表示从(1970-1-1)开始计算到现在,用户最后一次修改密码的时间是多久
④0:
0表示随时都可以更改密码,例如7表示用户7天以后才能修改密码
⑤100:
密码最长使用100天(99999表示永不过期)
⑥7:
表示密码过期前几天系统提醒用户(默认为一周)
⑦5:
密码过期几天后帐号会被锁定
⑧10:
从1970年1月1日算起,多少天后帐号失效冻结
⑨:表示保留位
4、/etc/gshadow:组密码及其相关属性
与/etc/passwd中的登录名一样,组名不应重复
root:::root用户组名:组的口令(一般不安全):GID标识:组内用户列表
/etc/gshadow
/etc/gshadow是/etc/group的加密资讯文件,比如用户组(Group)管理密码就是存放在这个文件。
/etc/gshadow和/etc/group是互补的两个文件;对于大型服务器,针对很多用户和组,定制一些关系结构比较复杂的权限模型,设置用户组密码是极有必要的。
比如我们不想让一些非用户组成员永久拥有用户组的权限和特性,这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码。
[root@localhost ~]# cat /etc/gshadow
root:::root
bin:::root,bin,daemon
组名:口令:组管理者:组内用户列表
1) 组名: 是用户组的名称,由字母或数字构成。
2) 口令:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码
3) 组管理者:这个字段也可为空,如果有多个用户组管理者,用,号分割
4) 组内用户列表:如果有多个成员,用,号分割
加密方式:
加密:明文--> 密文
解密:密文--> 明文
单向加密:哈希算法,原文不同,密文必不同
相同算法定长输出,获得密文不可逆推出原始数据
雪崩效应:初始条件的微小改变,引起结果的巨大改变
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha256: 256bits
sha384: 384bits
sha512: 512bits
更改加密算法authconfig--passalgo=sha256 --update
备注:强烈建议使用sha512加密 较安全加密:sha256 不安全:md5加密
密码的复杂性策略
/etc/login.defs 可以进行全局密码策略修改
使用数字、大写字母、小写字母及特殊字符中至少3种
足够长
使用随机密码
定期更换,不要使用最近曾经使用过的密码
不使用与自己本身有关的密码例如身份证手机号出生年月日等
四、用户管理命令
useradd 账户资料的创建
usermod 账户资料的更改设置
userdel 账户资料删除
组帐号维护命令
groupadd 用户组的创建
groupmod 用户组的修改
groupdel 用户组的删除
4.1、用户创建:useradd
useradd[options] LOGIN
-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs
-o 配合-u 选项,不检查UID的唯一性
-g GID:指明用户所属基本组,可为组名,也可以GID
-c "COMMENT":用户的注释信息
-d HOME_DIR:以指定的路径(不存在)为家目录
-s SHELL: 指明用户的默认shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...]:为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r: 创建系统用户CentOS 6: ID<500,CentOS 7: ID<1000
默认值设定:
/etc/default/useradd文件中
显示或更改默认设置:
useradd -D
useradd –D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP
新建用户的相关文件和命令
/etc/default/useradd 此文件为用户新建账户元数据生成设置选项
/etc/skel/* 此目录里为新建用户的初始家目录的模板
/etc/login.defs 账户信息初始化选项设置
newusers passwd 格式文件批量创建用户
chpasswd 批量修改用户口令
4.2、用户属性修改
usermod [OPTION] login
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:
新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-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: 设定非活动期限
4.3、删除用户
userdel [OPTION]... login
-r: 删除用户家目录
4、4查看用户相关的ID信息
例如
[root@jeffary7 ~]#id jeff
uid=1006(jeff) gid=1010(apple) groups=1010(apple)
id [OPTION]... [USER]
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
4、5切换用户或以其他用户身份执行命令
su - jeff 表示完全切换
su jeff 表示不完全切换,用于测试
su[options...] [-] [user [args...]]
切换用户的方式:
suUserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su-UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
root su至其他用户无须密码;非root用户切换时需要密码
换个身份执行命令:
su[-] UserName-c 'COMMAND'
选项:-l --login
su-l UserName相当于su-UserName
4.6、其他方法查看加密并设置密码
1.使用pwuncover 显示cat /etc/passwd vipw 显示passwd里密码加密信息 pwconv 关闭显示加密信息
2.finger root 使用finger显示passwd账户里面的描述信息
rpm -ivh Packages/Packages/finger-0.17-52.el7.x86_64.rpm
passwd[OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
4.7、passwd: 修改自己的密码
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-iinactivedays:非活动期限
--stdin:从标准输入接收用户密码
echo "PASSWORD" | passwd--stdinUSERNAME
echo mima | passwd --stdin root &>/dev/null
4.8、修改用户密码策略
chage[OPTION]... LOGIN
-d LAST_DAY
-E --expiredateEXPIRE_DATE
-I --inactive INACTIVE
-m --mindaysMIN_DAYS
-M --maxdaysMAX_DAYS
-W --warndaysWARN_DAYS
–l 显示密码策略
示例:
chage-d 0 tom 下一次登录强制重设密码
chage-m 0 –M 42 –W 14 –I 7 tom
chage-E 2016-09-10 tom
4.9、单独修改用户描述信息
例如
[root@jeffary7 ~]#chfn
Changing finger information for root.
Name [root]: test
Office []: IT
Office Phone []: 666
Home Phone []: 777
Finger information changed.
chfn指定个人信息
chsh指定shell
vipw=/etc/passwd 编辑passwd文件
vigr=/etc/group 编辑group文件
grpck 检查组错误配置文件
pwck 检查用户配置错误文件
getent /etc/passwd ftp 只显示getent
4.10、创建用户组
例如
groupadd -g 1314 love 创建指定GID为love的用户组
groupadd[OPTION]... group_name
-g GID: 指明GID号;[GID_MIN, GID_MAX]
-r: 创建系统组
CentOS 6: ID<500
CentOS 7: ID<1000
4.11、组属性修改:groupmod
groupmod[OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
4.12、组删除:groupdel
groupdelGROUP
4.13、组密码:gpasswd
gpasswd[OPTION] GROUP
-a user: 将user添加至指定组中
-d user: 从指定组中移除用户user
-A user1,user2,...: 设置有管理权限的用户列表
newgrp命令:临时切换主组
如果用户本不属于此组,则需要组密码
4.14、其他方式修改、查看用户组信息
groupmems[options] [action]
options:
-g, --group groupname更改为指定组(只有root)
Actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
groups [OPTION].[USERNAME]... 查看当前用户所属组列表