用户和组管理
用户和组管理
token 只有密码,没有用户名 (令牌)
identity(username,password) 根据用户分配资源
资源分配的三种形式
Authentication:认证
Authorization:授权
Accounting:审计
Linux用户 username/UID
管理员:root 0
普通用户:除了root以外的其他用户 1-65535
系统用户: 1-499
为守护进程获取资源进行权限分配
登录用户: 500+
交互式登录使用
Linux用户组 groupname/GID
管理员组:root 0
普通组:
系统组: 1-499
普通组(登录用户组):500+
Linux安全上下文:
运行中的程序:进程(process)
Linux中的进程通常以进程发起者的身份运行。
进程能够访问的所有资源权限取决于发起者的身份。
Linux组的类别:
用户的基本组(主组):
组名同用户名,且仅包含一个用户:私有组
创建用户时如果不指定组名,通常会给用户创建私有组
用户的附加组(额外组):
Linux用户和组相关的配置文件:
/etc/passwd:用户及其属性信息(名称、UID、基本ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性(一般用于用户组切换)
man 5 passwd 查看 /etc/passwd 文件格式
account:password:UID:GID:GECOS:directory:shell
用户名:密码:UID:GID:用户完整信息:用户主目录:默认shell
man group 查看/etc/group 文件格式
group_name:passwd:GID:user_list
组名:密码:GID:以当前组为附加组的用户列表(如果有多个,使用逗号分割)
/etc/shadow 文件格式
用户名:密码密文:最近一次更改密码的日期:密码的最小使用期限:最大密码年龄:密码警告时间段:密码禁用期:账号过期日期:保留字段
加密机制:
加密:明文->密文
解密:密文->明文
单向加密:提取数据指纹
md5:message digest,128位加密
md5sum 文件
sha1:secure hash algorithm,160位加密
sha1sum sha224sum sha256sum sha384sum sha512sum 文件
雪崩效应:初始条件的微小改变,将会引起结果的巨大改变
定长输出:
root:$6$1.500R6jenhcppjX$4VDU2SHTciy6Nlb96cToGEk6Ae88rbFUbony99/YQqUxjekr7lOnXDHHvQsF..gHVXYLcVXp/qAknEVhjpuyJ1:17771:0:99999:7:::
6指代加密程序为sha512sum
1.500R6jenhcppjX指代加密杂质
密码的复杂性策略:
1、使用数字,大小写字母,特殊字符至少3中
2、足够长
3、使用随机密码
4、定期更换,不要使用最近使用过的密码
用户和组相关的管理命令
useradd user1 创建用户user1
tail -1 /etc/passwd 查看用户信息
tail -1 /etc/group 查看用户组信息
tail -l /etc/shadow 查看用户密码信息 (没有密码 !用户禁用状态)
-u 指定uid [UID_MIN,UID_MAX],定义在/etc/login.defs
-g 指定用户的基本组 (可以指定组名,也可以指定gid)
-c 指定用户全名(用户的注释信息)
-d 指定用户的家目录(不要指定已经存在的路径,否则会提示警告信息,也容易出现错误)
-s 指明用户默认shell 可用列表在/etc/shells文件中
-G 指明用户所属的附加组,可以有n个,使用逗号隔开(组必须实现存在)
-D 修改useradd的默认选项
-s 设定默认shell
id 用户名 显示指定用户的用户和组信息
-u 显示 uid
-g 显示gid
-G 显示附加组
-n 显示用户名字
su 切换用户或以其他用户身份执行命令
su 用户名 非登陆式切换 不会读取目标用户的配置文件
su - 用户名 登录式切换 会读取目标用户的配置文件
我们可以在两种切换模式后分别输出 $PATH环境变量来进行验证
-c 换个身份执行命令
例如 su root -c ls
-l 相当于- 登录式切换
groupadd 组名 创建用户组
-g 指定gid [GID_MIN,GID_MAX]
-r 创建系统组
usermod 用户属性修改
-u uid
-g gid
-G 新附加组,使用逗号分割(默认原来的附加组将会删除,如果需要保留使用-a选项追加)
例如:usermod -aG user1,user2 user0
-s 新的默认shell
-c 新的注释信息
-d 新的家目录(原有家目录中的文件默认不移动至新目录,如果需要移动,同时使用-m选项)
例如:usermod -d /home/userXXX -m user0
-l 新的名字
-L 锁定用户
-U 解锁用户
-e 失效日期 使用MM/DD/YY格式指定
-f 非活动期限
给用户添加密码
passwd 用户名 给指定用户修改密码
passwd 给自己修改密码
-l 锁定指定用户
-u 解锁指定用户
-n mindays最短使用期限
-x maxdays最大使用期限
-w warndays提前多少天开始提示用户修改密码
-i interactive非活动期限 密码过期后还有多少天允许登录后立即修改密码
-d 删除密码
--stdin 从标准输入接收用户密码
echo 123456|
Unix元年 1970年1月1日
用户创建时间使用当前时间减去Unix元年的天数
userdel 删除用户
-r 删除用于家目录
groupmod 组属性修改
-n 新名字
-g 新的GID
group 删除组
groupdel 组名
gpasswd 设置组密码
gpasswd 组名 设置组密码
-a 用户名 组名 将用户添加至组名对应的用户组
-d 用户名 组名 从组名对应的用户名删除用户组
-A 用户名 root 设置有管理员权限的用户列表
newgrp 组名 临时设置基本组
如果用户本属于这个组,不需要密码
如果用户不属于这个组,需要组密码
pwck
检查用户属性文件
其他
chage chfn chsh