因为linux系统是一个多用户多任务的操作系统,管理好用户才能保证系统有条不紊的工作
(1)查看当前用户:whoami
(2)查看当前用户的系统信息
用户信息包含7列,分别是用户名,用户密码,用户uid,用户gid,用户说明,用户家目录,用户默认shell。
id-u | 显示当前用户的uid |
---|---|
id-g | 显示当前用户的gid |
id-G | 显示当前用户所在的所有组的id |
id-n | 显示名字不显示id |
(1)新建用户:useradd
useradd | 新建一个用户 |
---|---|
useradd -u 888 用户名 | 指定用户的uid为888,并新建用户 |
useradd -g 888 用户名 | 指定用户的初始组的id为888 ,该组必须存在 |
useradd -G 888 用户名 | 指定用户附加组的id为888,改组必须存在 |
useradd -c XXX 用户名 | 制定用户的用户名 |
useradd -d /home/westos 用户名 | 指定用名的家目录 |
useradd -s /bin/sh用户名 | 指定用户的默认shell |
在指定过程中已经新建用户
首先使用监控命令来监控用户的建立过程:watch - n 时间间隔
watch -n 1 "tail -n 3 /etc/passwd /etc/group; ls -l /home"
userdel 用户名 | 删除用户,但不删除用户的配置文件 |
---|---|
userdel -r用户名 | 删除用户同时删除用户的配置文件 |
注:上图中,使用userdel wes 命令虽然删除用户wes ,但没有删除wes的配置文件
(3)指定用户的id (uid)与初始组的id(gid)
useradd -u 1003 westos
useradd -g 1004 westos1
(4)给用户增加一个附加组(附加组的id必须存在)
(5)指定用户的说明
useradd -c “hello westos” westos
useradd -d /home/westos westos
useradd -s /bin/sh westos1
(1)组的建立
groupadd | 建立组 |
---|---|
groupadd 组名 | 新建组 |
groupadd -g 666 组名 | 新建组并指定组的uid |
注:当建立一个用户组的时候,若显示已经存在,则直接删除再建立(这就是为什么每次实验前需要清空实验环境);
在建立一个用户组的同时它的gid会被同时给定,具体的范围可以查看一个文件预先知道;
如果想要自己指定uid,则先删除刚才建立的用户组,在建立的同时指定uid ### groupadd -g uid 用户组名字;
(2)组的删除:groupdel
注:建立用户组的同时也会建立它的家目录,同样删除用户组的同时也会删除它的家目录(这一点与用户的管理不一样);
用 户组不能重复建立,一定要先删除才可以建立;
usermod -l 新名称 用户名 | 更改用户的名称 |
---|---|
usermod -u uid 用户名 | 更改用户uid |
usermod -g gid 用户名 | 更改用户的初始组id |
usermod -G gid 用户名(id号) | 更改用户的附加组,可以接组名,也可以接id |
usermod -c “XXX” 用户名 | 指定用户说明文字 |
usermod -d /home/lee 用户名 | 更改用户家目录的指向(真实目录未必存在) |
usermod -md /home/lee 用户名 | |
usermod -s /bin/sh 用户名 | 更改用户的shell |
usermod -aG id 用户名 | 添加用户的附加组 |
usermod -G “” 用户名 | 删除用户所有附加组的身份 |
(1)修改用户的用户名
usermod -l wes westos
usermod -u 888 wes
usermod -g 1002 wes ##该组一定要存在
usermod -G 组名(或id) 用户名
附加组的作用:加到一个组才有资格,有权利。加入附加组是为了共享权力 ,与初始组不一样附加组的作用:加到一个组才有资格,有权利。加入附加组是为了共享权力 ,与初始组不一样
(5)增加附加组
usermod -aG 组名(id) 用户名
usermod -G “” wes
usermod -c “westos” wes
usermod -d /home/hehe wes
usermod -md /home/lala wes
usermod -s /bin/sh wes
su -student
注:su student 也可以切换用户,但是这种方式不加载系统环境配置
(1)用户信息文件: /etc/passwd,信息文件里面存储了用户的一些基本信息
包括的内容:用户名称:用户密码:uid:gid:说明:家目录:默认shell
(2)用户组信息文件: /etc/group,信息文件里面存储了用户所属组(用户组)的一些基本信息
包括的内容:组的名字:组的密码:组的id:组的成员
(3)认证信息文件: /etc/shadows,文件里面包括了一些认证信息,比如每个用户登陆时的密码
包括的内容:用户名称:密码(sha512非对称加密)
(4)默认开启shell的配置,用户的骨文件:/etc/skel/.*,骨文件里面存储了默认用户和系统对话工具的相关信息
(5)用户的家目录: /home/username,家目录指的是该用户建立的所属目录
监控 watch -n 1 tail -n 3 /etc/shadow
该用户信息包含9项,
第一列 用户名称
第二列 用户密码的加密字符串,默认用的加密方式为sha512对称加密,如果加密字符串前出现“!”,则该用户的帐号被冻结
第三列 用户密码最后一次被修改的时间,此时间的计算是从1970-1-1日起累计的总时间天数
第四列 用户密码最短有效期限(用户在这个数字天数之内不能修改密码)如果此位有设定数字,那么在此数字范围内的天数内是不能更改用户的密码的
第五列 用户密码最长有效期限,用户必须在此有效期内更新密码,如果超时会被冻结
第六列 密码警告期限,在过期前指定天数内会发送警告信息给用户
第七列 用户的非活跃天数(加的期限),此位默认为空,如果设定数值,那么在密码最长有效期过后仍然可以使用的天数
第八列 用户到期日,默认为空,表示帐号一定会被冻结的时间点,此时间计算是从1970-1-1开始计算的累计天数
第九列 用户自定义列,目前没有启用
用户密码的相关操作:
passwd 用户名 | 更改用户的密码 |
---|---|
passwd -l 用户名 | 在用户密码前加入“!!” |
passwd -u 用户名 | 解开已经上锁的用户 |
usermod -L 用户名 | 在用户密码前加入“!” |
usermod -U 用户名 在密码不为空的时候使用 | |
passwd -d 用户名 | 清空用户的密码 |
passwd -e 用户名(chage -d 0 用户名 ) ##两个命令功能类似 | 改变用户最后一次更改密码时间为0,用户在登陆时会被强制更改密码 |
passwd -n 1 用户名 (hage -m 1 用户名) ###两个命令的效果一样 | 用户在一天之内不能修改密码 |
passwd -x 30 用户名(chage -M 40 用户名 ) ###两个命令的效果一样 | 设定用户在30天之内必须修改密码 |
passwd -w 2 用户名 (chage -W 2 用户名) | 密码过期前两天有警告输出 |
passwd -i 1 用户名 (chage -I 1 用户名) | 密码过期后仍可登陆系统的天数 |
chage -E 2019-6-6 用户名 | 用户在这一天会被冻结 注意:此时间是从1970-1-1开始计算的累计天数 |
(1)更改用户密码
passwd wes
passwd -l wes
usermod -L wes
passwd -u wes
usermod -U wes
passwd -d wes
passwd -e wes
passwd -n 1 wes
chage -m 1 wes
passwd -x 30 wes
change -M 30 wes
passwd -w 2 wes
chage -W 2 wes
passwd -i 1 wes
chage -I 1 wes
chage -E 2019-6-6 用户名
为了使某些普通用户具有超级用户的权力,此时需要超级用户对普通用户进行授权。
(1)先验证普通用户是否能够新建用户。
步骤一:先建立一个普通用户 useradd 用户名
步骤二:切换到新用户 su - 用户名 (查看是否为普通用户),在普通用户下敬爱能力新用户
若需要在普通用户下可以建立新的用户,此时需要超级用户对普通用户进行授权。
步骤一:打开一个文件 visudo (/etc/sudoers)
步骤二:在改文件的任意一行可以写要操作的东西(一般为了规范 在100行作用写)
步骤三:建立普通用户,在普通用户下测试,一定要用sudo