一、linux用户和组管理
1.用户、组和权限管理
每个使用者:用户
每个使用者:
用户标识、密码
认证Authentication:身份识别
授权Authority:对应相应的权限
审计Account/Audition:是否符合条例
3A
Linux授权比较薄弱:还有级{管理员和普通用户}
日志主要用于审计,可以借助于其他软件实现审计功能
组:用户组//用户的容器,把多个用户合并在一起,成为一个逻辑组件
用于实现集体授权等。
用户类别:
管理员:0
普通用户:1-65535
系统用户:1-4999(centos6),1-9999(centos7)
登录用户:500-60000(Centos6),1000-60000(Centos7)
默认是到60000
用户标识:UserID,UID //使用
16bits二进制数字:0-65535
名称解析:
登录时的用户名到UID//计算机更容易识别数字
Username 《---》 UID
根据名称解析库进行:/etc/passwd
2.组类别
管理员组
普通用户组
系统组
登录组
组标识:GroupID,GID
管理员组:0
普通用户组:1-65535
系统用户组:1-499(Centos6),1-999(Centos7)
等咯用户组:500-60000(Centos6),1000-60000(Centos7)
名称解析:groupname 《--》 gid
解析库:/etc/gpasswd
组类别2:
一个用户可以有多个组
主组:primary group
附加组:attached group
组类别3:
私有组:组名通用户名相同,且只包含一个用户
公共组:组内可以包含多个用户
3.认证信息:
通过比对,事先存储的,与登录时提供的信息是否一致
passwd
/etc/shadow
/etc/gshadow
密码的使用策略:
1.使用随机密码
2.最短长度不要低于8位
3.应该使用大写字母,小写字母,数字和标点符号四类字符至少三类
4.定期更换密码
注意:
密码不能明文存放
最好是加密的
加密机制最好是不可逆的
加密算法:
对称加密:加密和解密使用同一个密码
非对称加密:加密和解密使用的一对儿密钥
密钥对儿:
公钥:public key
私钥:private key
单项加密:只能加密,不能解密;提取数据特征码
从人获取指纹,但是不能用指纹还原人
定长输出:
雪崩效应:echo “how are you” | md5sum
算法:
1:md5:message digest ,128bits
2:sha:secure hash algorithm,160bits
3:sha224:
4:sha256:
5:sha384:
6:sha512:
4.添加随机数salt
在计算之时加salt,添加随机数 //不需要用户输入
xiao123456
在用户登录的时候输入xiao,会自动添加salt 123456
5.passwd和shadow文件
/etc/passwd :用户的信息库
whatis passwd
man 5 passwd //查看passwd文件的说明
name:
password :可以是加密的密码,也可以是
UID
GID 用户所属的主组的ID号
GECOS 用户的注释信息
directory 用户的家目录
shell 用户的默认shell,登录时默认打开的shell
/etc/shadow
man 5 shadow,
登录名
加密了的密码 //三段落,使用分隔符分割
6是sha512算法
salt
加密后的密码
最后一次更改密码的日期 //从1970年1.1日开始的天数
0 标识用户下次登录系统时更改密码
空字符表示密码年龄功能被禁用
密码的最小年龄//最短使用多长时间
空字段或者0,不做限制
最大密码年龄
密码警告时间 //快到期了
密码禁用期 //到了之后,还可以为你保留多长时间,到了最长之后
账户过期日期 //账户禁用
保留字段 //
警告时间:提示修改密码,但是可以不修改
失效时间:登录就会强制修改密码
name:secret:latest:min:max:war:inactive:out:reserve
用户名:加密的密码:最近一次修改密码的时间:最短使用时间:最长使用时间:密码警告日期:密码失效时间:过期时间
1970.1.1 [---------min--------]
|---------------|------|-------------|----------------------|
latest now
|------------max----------------------------|--inactively--|--out--|
|--war--|
/etc/group
组名字
组密码
GID
用户列表:该组的用户成员,以此组为附加组的用户的用户列表
示例:创建用户:定义过期时间,和警告时间,以及强制修改密码
附件一:
pwconv:将用户密码转换成影子密码
就是将/etc/passwd里的密码用x代替,并将真实密码(当然是加密后的)转移到/etc/shadow里面。
pwconv依赖于passwd中的密码区’x’来同步/etc/passwd与/etc/shadow这两个文件;以/etc/passwd为主来控制/etc/shadow中的各项:
A:若/etc/shadow不存在,则pwconv将用/etc/passwd来建立
B:若/etc/shadow已存在,则:
1.若条目在passwd中已存在,而不在shadow中,则在shadow中添加相关条目
2.若条目在shadow中已存在,而不在passwd中,则从shadow中删除相关条目
实验一:使用passwd文件创建用户
vim /etc/passwd
test:x:1002:1002:test:/home/test:/bin/bash
//需要 确保UID:1002没有用户使用
pwconv //同步passwd到shadow
mkdir /home/test
cp /etc/skel/.* /home/test
vim /etc/group
添加组
chmod 700 /home/test -R
chown test:test /home/test -R
ls -dl /home/test
//可以root su到该用户,但是该用户不能直接登录
6.小结
用户管理基础概念:
用户类别:
管理员类、普通用户(系统用户和登录用户)
组类别:
管理员组、普通用户组
基本组和附加组
私有组和公共组
数据库文件:
/etc/passwd
login:passwd:uid:gid:comment:home:shell
/etc/shadow
login:encrypted_passwd:修改日期:min:max:war:非活动:过期:保留
/etc/group
name:Gid:passwd:user_list
/etc/gpasswd
密码存储格式:
单项加密,并借助于salt完成
encrypted_passwd:{加密算法:salt:加密后的密码}
加密算法:
1:MD5
2:sha1
3:sha224
4:sha-256
5:SHA-384
6:SHA-512
二、用户和组相关命令
相关命令:
useradd,userdel,usermod,passwd
groupadd,groupdel,groupmod,gpasswd
change,chsh,id,su
用户和组管理命令
1.groupadd
-g gid
//默认为上一个GID加1
-r 创建一个系统组
-p 指定组密码
2.groupmod 修改
-g digid
-n 修改组名
3.groupdel 删除组
4.useradd //有一个链接命令adduser
创建一个新用户或者更新用户的默认信息
-u --uid 指定UID
-g --gid 指定基本组ID,此组得实现存在
-c --comment 注释信息
-G --groups GROUOP1[,Group2,...[,Group]]:指明用户的附加组,用,分开
在group文件中,该组会加一个用户名
-d 指定其家目录,创建家目录:
通过复制/etc/skel/.* 并重命名实现
指定的家目录如果存在,就不会为用户复制配置环境配置文件
-s 指定用户的默认SHELL,
/etc/shells 列表内的
-r 创建系统用户
-m 强制创建主目录,
-M 不创建用户家目录,
-f --inactive
密码过期后,账户被彻底禁用之前的天数,0表示立即禁用,-1表示禁用该功能
如果为指定,使用/etc/default/useradd默认为-1
-D 显示用户创建时的默认信息,
/etc/default/useradd文件的内容
useradd -D -s /bin/csh
//相当于直接修改/etc/default/useradd文件
注意:创建用户时的诸多默认设定的配置文件为/etc/login.defs
5.usermod
大多数选型和useradd类似
-a 添加到附加组,和-G选项一起使用
-c 注释信息
-d 修改用户家目录,用户原有的文件不会被转移到新位置
-m --move-home 只能与-d选项一同使用,用于移动家目录
-g --gid Groug 修改用户所属的基本组
-G G1,G2,G3,... 修改用户所属的附加组,原来的附加组会被覆盖
-a --append:与-G一同使用,用于为用户追加新的附加组
-l --login-name修改用户名
-s 修改用户的shell,、/etc/shells中的shell
-L/-U lock/unlock锁定和解锁用户密码,禁止用户登录
锁定 /etc/shadow中,密码字段前加一个!
usermod -G -a test test2
6.userdel
-r 删除用户时一并删除用户家目录
默认不会删除用户家目录
7.passwd
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
passwd 修改用户自己的密码
passwd USERNAME 修改指定用户的密码,仅root有此权限
-d 清除用户密码
-l,-u 锁定和解锁用户
-e:expire 到期时间,几月几号过期
-n:minnum days 最短使用期限
-x:maxnum days 最长
-i:inactive 非活动时间,过期之后可使用的天数
-w:警告时间,之前几天
-S status
--stdin echo "xaiotao" | passwd --stdin docker
8.gpasswd:用户的组管理和添加密码
-a USERNAME 向组中添加用户
-d 删除组中的用户
newgrp命令,临时切换其他组为基本组
9.chage修改passwd的过期信息
passwd -n 3 -w 2 -x 5 rusky
-n min;-x max;-w war
chage -l rusky //查看
10.id 显示用户的实际和有效的id
-u 仅显示有效的uid
-g 仅显示基本组ID
-G 显示用户所属的所有组的GID
-n 显示名字而非ID
id -n -G tmd
11.switch user切换用户
登录式切换:会重新读取用户的环境配置文件来重新初始化
su - USERNAME
su -l USERNAME
非登录式切换:不会读取目标用户的环境初始文件进行初始化
su USERNAME
注意:管理员可无密码切换至其他任何用户
-c “COMMAND” //只执行一条命令
12.其他命令
finger 查看用户信息
chfn docker 指定用户信息
chsh 修改默认shell
chsh -s /bin/bash tmd
whoami
命令总结:
groupadd,groupdel,groupmod,passwd
useradd,userdel,usermod,gpasswd
newgrp
id,su,chage,finger
pwck 检查用户的密码是否存在问题
grpck 检查组信息
附件一:/etc/login.defs
设置了默认信息,创建用户,的GID,UID,
默认的加密算法,min,max等
/etc/default/useradd //用户的
附件二:
练习1:创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001)
useradd gentoo -u 4001 -G distro,peguin
练习2:创建用户fefora,其注释信息为“Fedora core”,shell为/bin/tcsh
练习3:修改gentoo的家目录为/var/tmp/gentoo,保留原有文件
usermod -d /var/tmp/gentoo -m gentoo
练习4:为gentoo新增附加组netadmin
useradd -a -G netadmin gentoo
附件三:
/etc/group-是group的一个备份文件,用于恢复
附件四: newgrp 临时组切换
wolf 有两个组:wolf,mm
su wolf
touch aa //aa的属组为wolf
newgrp mm //切换到组mm
touch bb //bb的属组为mm
id 查看基本组已经发生改变
exit退出 基本组将发生变化
tom只有一个组tom
newgrp tom //则需要tom组的密码