用户与组存在的意义
通过建立用户和用户组,或者控制新建用户和用户组,可以控制用户访问系统的权限。
用户的查看
1.查看当前用户
whoami
2.系统中用户的查看
id ##查看指定用户的id信息
id -u 用户名 ##查看该用户的uid,身份数字
id -g 用户名 ##查看该用户的gid,初始组信息
id -G 用户名 ##查看该用户所在的所有组(附加组)信息
id -n ##显示名字而不显示数字,-Gn显示用户附加组名称但不显示对应 的身份数字(用数字记录用户身份)
2**32=65534 0-65534 0是超级用户身份数字 1-999系统用户身份数字 1000-60000可以登陆系统的用户对应的身份数字
用户的切换
第一种方法:
gome-session-quit-force ##注销当前用户,在其他用户登录。
第二种方法:
su - 用户名称
其中“-”表示在用户身份切换的同时,也切换用户的系统配置和当前用户环境。
su - 执行时,只有超级用户切换到低级用户不需要密码,其他都需要(低级到高级,平级之间)
注意:每次su -切换到其他用户操作之后必须退出,然后再切换到其他用户,否则shell会发生错乱。
用户在系统中的存储方式
/etc/passwd 存储用户信息的文件
用户信息的组成:
用户名称:密码:uid:gid:说明:家目录;默认shell
查看系统文件/etc/shells,可以查看默认shell有哪些
/etc/group 存储用户组信息的文件
用户组信息的组成:
组的名字:组密码:组id:组成员
/etc/shadows 认证信息文件,存放用户信息
/etc/skel/.* 默认开启shell的配置,用户的骨文件
/home/username 用户的家目录
管理用户的命令
1.用户的添加
”监控用户信息变化的命令
watch -n 1 ' tail -n 3 /etc/paaswd /etc/group ;ls -l /home '
useradd 用户名 ##建立该用户,在建立时会读取文件/etc/login.defs 的内容,确定规则。
useradd -u 8888 westos ##建立名为westos的用户,并且指定它的uid 为 8888
useradd -g 21 westos ##建立名为wetsos的用户,并且指定它的gid 为21(21用户组时必须存在的)
useradd -G 21 westos ##建立名为wetsos的用户,并且指定它的附加组id 为21
useradd -c "hahaha" westos ##建立名为wetsos的用户,并且指定它的说明为hahaha
useradd -s /bin/sh westos ##建立名为wetsos的用户,并且指定它的默认shell 为/bin/sh
useradd -d /home/lee westos ##建立名为wetsos的用户,并且指定它的家目录为 /home/lee
建立westos用户,可以发现用户与用户组最后一行信息变为westos信息
在用户westos 存在时,再执行上述命令创建用户westos,系统会出现报错,因为westos用户已经存在,无法建立相同名字的用户。(解决方法:使用userdel删除该用户,再建立)
2.用户的删除
userdel 用户名 ##删除用户,但不删除用户的配置问价
userdel -r 用户名 ##删除用户的同时,也删除了用户的配置文件
3.用户组的添加
groupadd 用户组名称 ##建立该名称用户组
groupadd -g 888 westos ##建立一个名为wetsos的用户组,并指定它的用户组id 为888
当建立指定用户组为33的用户发生报错,因为改组不存在。解决方法:先建立用户组id为33的用户组,然后建立用户组id为33的用户。
4.用户组的删除
groupdel 用户名称 ##删除该名称用户组
5.更改用户信息
uesrmod
usermod -l 新名称 westos ##更改westos为新名称
usermod -u 6666 westos ##更改用户westos 的uid为6666
usermod -g 21 westos ##更改用户westos 的初始组id为21
usermod -G 21 westos ##更改用户westos的附加组id为21
usermod -aG 72 westos ##t添加用户westos附加组,此附加组id 为72
usermod -G "" westos ##删除用户的所有附加组身份
usermod -c "hello" westos ##更改用户westos的说明为hello
usermod -d /home/mnt westos ##更改用户westos的家目录(g指向)为/home/mnt
usermod -s /bin/sh westos ##更改用户westos 的shell(路径)为/bin/sh
usermod -L westos ##冻结用户wetsos
usermod -U westos ##解锁用户wesos
上述图片,执行上述命令可观察到
usermod -G 1001 su更改此用户的附加组为1001,该命令会覆盖用户之前的附加组
usermod -aG 72 su 更改su用户的附加组为72,该命令不会覆盖之前的附加组
添加用户说明
用户认证信息
监控用户信息的改变
watch -n 1 "tail -n3 /etc/passwd /etc/group ;ls -l "
1./etc/shadow ###记录用户认证的信息
westos : !! :17895 : 0 :99999 : 7 : : :
westos | 用户名称 |
---|---|
!! | 用户密码 (用户的加密字符串,默认用的加密方式为sha512对称加密,如果加密字符串前出现“!”,那么该用户被冻结) |
17895 | 用户密码最后一次被修改的时间(在距今17895天时被修改) |
0 | 用户密码的最短有效期 (如果此位置有设定数字,在此数字范围内的天数内是不能更改用户密码的) |
99999 | 用户密码的最长有效期 (用户必须在此有效期内更改密码,如果超时此用户会被冻结 |
7 | 密码警告期限(在密码过期前的指定天数内会发送警告信息给用户) |
用户的非活跃天数(此位默认为空,如果设定数值,那么在密码最长有效期过后仍然可以使用的天数) | |
用户的到期日(默认为空,表示账号一定会被冻结的时间点) | |
用户自定义列,目前尚未启用 |
2.用户密码设定
passwd westos ##更改westos用户密码
passwd -l westos ##在westos用户密码前加入“!!”表示账号被冻结
passwd -u westos ##可以在密码为空的时候使用,解锁两个“!!”
passwd -L westos ##在westos用户密码前加入“!”
passwd -U westos ##在密码不为空的时候使用,解锁一个“!”
passwd -l su 在用户密码前加!表示被冻结
解除用户冻结
修改用户密码(当设置的密码不满足要求系统会报错)
注意:普通用户在修改密码时
1.必须知道当前用户的原始密码
2.密码不能与账号名称相似
3.密码不能是纯数字或纯字母,不能少于8位
4.密码不能是有序的字母和数字的组合
3.用户密码最后一次被修改的时间的设定
passwd -e westos ##会改变用户最后一次修改密码的时间为0(用户在登录时会被强制更改密码)
chage -d 0 westos ##两个命令功能类似
4.用户密码最短有效期的设定
passwd -n 1 westos ##westos用户在一天之内不能修改密码
chage -m 1 westos
5.用户密码最长有效期的设定
passwd -x 30 westos ##设定westos用户在30天之内必须修改密码
chage -M 30 westos
6.用户密码警告期的设定
passwd -w 2 westos ##密码在过期的前两天有警告输出
chage -W 2 westos
7.用户非活跃天数的设定
passwd -i 1 westos ##密码过期后可登陆系统一天
chage -I 1 westos
8.用户到期日的设定
chage -E 2018-11-11 westos ##westos用户会在2019-7-13日被冻结
用户授权
1.用户权力下放文件为/etc/sudoers
此文件可以使用vim直接编辑,但是不提供语法检测
也以使用visodu编辑此文件,此命令提供语法检测
2,用户权利下放方式
visudo ##进入文件/etc/sudoers,在100行左右进行授权
用户 主机名称 =(得到的用户身份) 命令
tom localhost=(root) /usr/sbin/useradd ##tom用户在localhost主机上以root身份执行useradd命令
tom localhost=(root) NOPASSWD: /usr/sbin/useradd ##免密执行
当给su普通用户授权时,具有建立用户功能