在Linux系统上,用户管理是基于用户名和密码的方式进行资源的分配,Linux上的用户分为以下类别:
管理员:root UID 0
普通用户:1-65535
系统用户:1-999 对守护进程获取资源进行权限分配
登录用户:1000+ 通过交互式方式登录
组group
管理员组;root GID 0
普通组:1-65535,普通组又分为:
系统组:1-999
一般组:1000+,而一般组分为:
基本组:也叫私有组,创建用户时,如果没有指定其所属的组,系统自动为期创建一个与用户同名的组,用户必须属于一个且只有一个基本组,组名同用户名,且仅包含一个用户
附加组:也叫额外组,默认组以外的其他组,一个用户可以属于零个或多个附加组
安全上下文
运行中的程序:进程(process),以进程发起者的身份运行:
root: /bin/cat
hadoop:/bin/cat
进程所能够防伪资源的权限取决于进程的运行者的身份
passwd文件格式
可以通过man 5 passwd来查看对应的配置文件的帮助信息,经过查询可以得知passwd的文件格式,它是由冒号分隔的七个段组成的,分别是:
account:登录用户名
passwd:密码
UID:用户的身份编号
GID:默认所在组编号
comment:注释信息
Homedir:用户家目录
shell:用户默认shell
group文件格式
经过man帮助可以查询到文件格式,格式如下:
groupname:组名
gpasswd:组密码
GID:组的身份编号
附加组:
gshadow文件格式
群组名
群组密码
组管理员列表:组管理员列表,更改组密码和成员
以当前组为附加组的用户列表,多个用户之间用逗号分隔
shadow文件格式
同样也可以使用man帮助来查询shadow文件的格式,格式如下:
account:登录名
encrypte passwd:加密后的密码
从1970年1月1日起到密码最近一次被更改的时间
密码不可更改的时间,两次密码修改的时间间隔,0表示可以立即可以改
密码保持最大有效天数,到了这个时间就必须要改密码
密码过期的警告时间,密码过期前几天系统会提醒用户更改密码(默认是一周)
密码过期账号锁定的天数
从1970年1月1日起,多少天后账号失效
保留项
密码加密机制
加密:明文—>密文
解密:密文—>明文
对称加密:加密和解密使用同一个密钥
公钥加密:每个密码都成对出现,一个为公钥,一个为私钥
单项加密散列加密:提取数据特征码长用户数据完整性校验
单项加密有如下的特点:
雪崩效应
定长输出
算法通常有:
MD5 128位定长输出
SHA1:secure hash algorithm 160位定长输出
sha224:224位
sha256
sha384
sha512
更改加密算法 authconfig --passalgo=sha256 --update
密码的复杂性策略
使用数字、大小写字母、以及特殊字符中至少3种
足够长
使用随机密码
定期更换,不要使用最近曾经使用过的密码
密码期限
用户和组管理命令
用户管理命令
useradd:添加用户
useradd [options] username
-u:指定uid
useradd -u 1050 user1
-g GID(基本组) 指定用户基本组 ,可以写组名也可以写GID
useradd -g hadoop user2
-G:GID(附加组)指定用户附加组
useradd -G dockr user3
-c:"comment"注释信息
useradd -c “the user is datebase user” mysql
-d:HOME_dir 指定用户家目录
useradd -d /tmp/user4 user4
-s:指定用户所使用的shell
useradd -s /bin/csh user5
-N:不创建私有组做主组,用users组做主组
useradd -N user6
-m:新建用户时创建家目录
-M:创建用户时不创建家目录
useradd -M user7
-r:添加一个系统用户
useradd -r mail
新建用户的相关文件
/etc/default/useradd
/etc/skel/* 创建用户时会在家目录下创建的一些文件包括用户的环境变量文件,.bashrc记录命令别名和本地环境变量
创建用户时有个默认的设定存放在/etc/default/useradd文件中
显示或更改默认值
useradd -D
useradd -D -s /bin/csh username
/etc/login.defs 用户账号限制的文件包括最大过期天数,密码的最大长度约束等内容。
id:查看用户的账号属性信息
-u:显示用户的UID
-g:显示用户的GID
-G:显示用户的GID
-n:显示用户的用户名一般要配合-u选项
userdel:删除用户
userdel [option] username
-r:删除用户家目录
用户属性修改
usermod
usermod [ options] username
-u UID:修改用户的uid
usermod -u 1500 username
-g UID:修改用户的基本组
usermod -g hadoop username
-G -a:添加新的附加组,要配合-a选项使用,如果不使用-a选项会覆盖此前的附加组
usermod -aG amind username
-c:更改注释信息
usermod -c "my user" username
-d -m:更改用户家目录且移动用户文件
usermod -c /tmp/123 username
-s:更改用户的shell
usermod -s /bin/bash username
-l:更改用户名
usermod -l oldname newname
-L:锁定账号
usermod -L username
-U:解锁账号
usermod -U username
su切换用户
su [OPTION]... [-] [USER [ARG]...]
su username:非登录式切换,不会读取目标用户的配置文件,不改变当前工作目录
su - username:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
su -l username =su - username
注意:root切换至非root用户时不需要输入密码的,非管理员用户切换需要输入密码
passwd设置密码
passwd [OPTION...] <accountName>
passwd 不接用户默认修改当前登录用户的密码
-l:锁定账号
-u:解锁账号
-d:删除账户密码
-e:强制用户下次登录修改密码
-n mindays:指定密码最短使用期限
-x maxdays:指定密码最大使用期限
-i :非活动期限,密码过期账号锁定时间
--stdin:从标准输入接受用户密码
echo “redhat”|passwd --stdin username
chage修改用户密码策略
chage [options] LOGIN
-d:最近一次修改密码的时间
-E:设置过期时间
-I:设置非活动时间,密码过期后账户锁定时间
-m:设置密码最短使用期限
-M:设置密码最长使用期限
-W:设置密码过期前的警告天数
chfn修改用户个人信息
chfn username
chsh更改用的shell
chsh username
finger查看用户用户属性
finger username
组管理
groupadd
groupadd [options] groupname
-g GID: 以指定的GID创建组
-r:添加系统组其GID小于1000
groupdel删除组
groupdel [options] groupname
groupdel test2
gpasswd组密码
gpasswd [option] group
-a user:将user添加至指定组中
-d user:将user从组中移除
-A user1,user2,...设置有管理权限的用户列表
newgrp:临时切换基本组,如果用户本不属于词组,则需要密码
newgrp groupname
groupmems更改和查看组成员
groupmems -a user_name | -d user_name | [-g group_name] | -l | -p
-g,--group groupname 更改为指定组
-a,--add username:用户加入组
-d,--delete username:从组中删除用户
-p,--purge:从组中清除所有成员
-l,--list:显示组成员列表
grops查看用户所属组
groups groupname
1、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
2、创建下面的用户、组和组成员关系名字为admins 的组用户natasha,使用admins 作为附属组用户harry,也使用admins 作为附属组用户sarah,不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos