用户管理
用户的查看
查看当前用户
whoami //查看当前用户
查看指定用户的ID
id -u user //查看user用户的uid
id -g user //查看user用户的初始组id(主组id)
id -G user //查看user用户的所有组id
id -G -n user //查看user用户的所有组的名字
所有超户的uid都为0;
systemuser一般为1-999,系统自用不能的登录;
loginuser一般为1000-2^32;
用户在系统中的存储方式
文件 | 作用 |
---|---|
/etc/passwd | 用户信息文件 |
/etc/group | 用户组信息文件 |
/etc/shadows | 认证信息文件 |
/etc/skel/.* | 默认开启shell的配置,用户的骨文件 |
/etc/username | 用户的家目录 |
用户信息文件的存储格式:
用户名称:密码:uid:gid:说明:家目录:默认shell
用户组信息文件的存储格式:
组的名字:组密码:组id:组成员
用户管理命令
监控用户建立过程
watch -n 1 "tail -n 3 /etc/passwd /etc/group;ls -n /home/"
//监视每一秒刷新一次;
//显示passwd和group文件的后三行;
//并且显示home文件的属性。
用户的建立
useradd lala //建立lala用户
useradd -u 888 lala //建立lala用户,并且指定其uid为888
useradd -g 888 lala //建立lala用户,并且指定其gid为888,前提为该组以已存在
useradd -d /home/123 //指定其家目录
useradd -s /bin/tcsh //指定其默认shell
用户的删除
userdel lala //删除lala用户
userdell -r lala //删除lala用户及其所涉及到的配置文件
用户的修改
usermod -l 新名称 lala //更改用户lala的名称
usermod -u 8888 lala //更改用户lala的uid
usermod -g 2003 lala //更改用户的初始组
usermod -G 2004 lala //更改用户的附加组(覆盖之前的附加组)
usermod -aG 2005 lala //添加用户的附加组
usermod -G "" lala //删除用户所有附加组的身份
usermod -c "hahaha" lala //指定用户说明文字
usermod -d /home/lee lala //指定用户家目录指向(该目录不一定存在,只是改变表格里的内容)
usermod -md /home/lee lala //指定用户家目录 见下图
usermod -s /bin/tcsh lala //更改用户的shell
usermod -L lala //冻结用户
usermod -U lala //解锁用户
锁定账户:
实时查看用户认证文件shadow的头三行和尾三行的内容
watch -n 1 "head -n 3 shadow;echo =======;tail -n 3 shadow"
下图有一个感叹号,lala用户冻结
解锁:
感叹号消失,当前用户解锁
用户的切换
genome-session-quit --force //注销当前用户,再用其他用户登录
su - 用户名称 //"-"表示在切换用户的同时切换当前用户的环境
//高级用户切换到低级用户时不需要密码,低级到高级需要密码,平级之间也需要密码
//注意:每次su切换到其他用户操作之后必须退出,释放系统资源,然后再次切换到其他用户,防止用户身份错乱
用户认证信息
/etc/shadow 该文件记录用户的认证信息
文件内容:
lala: !! : 18179 : 0 : 9999 : 7 : : :
[1] [2] [3] [4] [5] [6] [7] [8] [9]
// 文件内容每行共有九列
[1]
lala:用户名称
[2]
!!:用户密码,用户加密字符串,默认用的加密方式为sha512对称加密,如果加密字符串前出现"!",那么账户被冻结
[3]
18179:用户密码最后一次被修改的时间,此时间计算是从1970-1-1开始累计的天数
[4]
0
用户密码最短有效期,如果此位有设定时间,那么此范围内是不能修改用户密码的
[5]
99999
用户密码最长有效期,用户必须在此有效期更新密码,如果超时会被冻结
[6]
7
密码警告期限,在过期前指定天数内发送警告信息给用户
[7]
用户非活跃天数,此位默认为空,如果设定数值,那么在密码最长有效期过后任然可以使用的天数
[8]
用户到期日,表示帐号一定会被冻结的时间点
[9]
用户自定义列,目前未使用
用户密码
passwd lala //修改lala用户的密码
passwd -l lala //在用户密码前加入"!!"
passwd -u lala
passwd -L lala //在用户密码前加入"!"
passwd -U lala //密码不为空时使用
passwd -d lala //清空lala的密码
注意:
普通用户修改密码时
1.必须知道当前用户的原始密码
2.密码不能和帐号名称相似
3.密码不能是有序的数字或有序的纯字母
4.密码如果是纯数字或字母长度要大于8位
修改密码为world:(参数–stdin为echo的标准输入)
改变用户最后一次更改密码时间为0:
passwd -l:
passwd -u:
passwd -d:
用户密码最后一次被更改的时间
passwd -e lala //会改变用户最后一次更改密码时间为0.
//用户在登录时会被强制修改密码
chage -d 0 lala //两个命令功能类似
用户密码最短有效期
passwd -n 1 lala //用户在一天之内不能修改密码
chage -m 1 lala
用户密码最长有效期限
passwd -x 30 lala //设定lala在30天之内修改密码
chage - M 40 lala
密码警告期限
passwd -w 2 lala //密码过期前两天有警告输出
chage -W 2 lala
用户非活跃天数
passwd -i 1 lala //密码过期后仍然可以登录的天数
chage -I 1 lala
用户到期日
chage -E 2019-11-11 lala //lala用户会在2019-11-11会被冻结
用户授权
权力下放文件为/etc/sudoers
此文件可以直接用vim编辑,但是不提供语法检测
也可以使用visudo编辑此文件,visudo命令是提供语法检测的
下放方式
在该文件里添加(100行左右):
lalal localhost=(root) /usr/sbin/useradd //lala用户可以以root身份执行useradd命令
用户 主机名称=(得到的用户身份) 命令
lalal localhost=(root) NOPASSWD: /usr/sbin/useradd //lala用户可以以root身份免密执行useradd命
下放多条命令(useradd,userdel,usermod)集合:
下放多条命令到多个用户(hello,lala)集合: