用户存在的意义
Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
用户组存在的意义
用户组是具有相同特征用户的集合,有时我们需要让多个用户具有相同的权限。定义用户组,在很大程度上简化了管理工作。
用户组分为主要组和补充组。
用户的查看
1)查看当前用户
whoami ##查看当前用户
2)系统中用户的查看
id username ##查看指定用户的信息
id -u username ##查看用户的id
id -g username ##查看用户的组id
id -G username ##查看用户所在的所有组的id
id -n username ##显示名字而不显示id数字
用户切换
gnome-session-quit - -force ##注销当前用户,再用其他用户登录
su - 用户名称
su - 中“-”表示在用户身份切换时同时切换当前用户的环境,如果不加“-”则只切换用户而不切换环境。
su - 执行时高级用户切换到低级用户不需要密码,低级用户切换到高级用户需要密码,平级用户之间切换也需要密码。
下图可以看出目前用户是alice,但当前环境仍然是root。
注意:
为了防止系统混乱,每次su切换到其他用户操作之后必须退出(exit或logout),然后再次切换到其他用户。
用户在系统中的存储方式
文件 | 内容 |
---|---|
/etc/passwd | 系统信息文件 |
/etc/group | 用户组信息文件 |
/etc/shadow | 认证信息文件 |
/etc/skel/.* | 默认开启shell的配置,用户的骨架目录 |
/home/username | 用户的家目录 |
注意:
- /etc/passwd由以下几部分构成:
用户名称:密码:uid:gid:说明:用户家目录:默认的shell - /etc/group由以下几部分构成:
组名称:组密码:组id:组成员
用户管理命令
1)用户的建立与删除
监控用户信息命令:
为了方便我们查看对用户进行的操作,我们用 watch -n 1 “tail -n 3 /etc/passwd /etc/group ;ls -l /home”(1表示频率,因为中间用分号隔开,所以需要加双引号表示监视这个整体)这条命令进行监视。
建立用户的条件:
通过vim /etc/login.defs 读取/etc/login.defs ,根据文件内容确定规则。
- 建立用户
useradd -u 1234 westos ##指定用户westosuid为1234
useradd -g 156 hello ##指定用户初始组id为156,“156用户组”必须是存在的。
useradd -G 72 hey ##指定用户附加组id为72,“72用户组”必须是存在的。
useradd -c “hello” alice ##指定用户的说明
useradd -d /home/lee tom ##指定用户的家目录
useradd -s /bin/sh lily ##指定用户默认的shell
- 删除用户
userdel hello ##删除用户hello,但是不删除用户的配置文件
userdel -r lily ##删除用户并删除用户的配置文件
2)用户组的建立与删除
-
建立用户组
groupadd westos ##建立用户组westos
groupadd -g 1555 haha ##建立用户组并指定用户组id
-
删除用户组
groupdel westos ##删除用户组westos (注意:组名的删除不需要 -r)
3)更改用户信息
usermod
usermod -l linux westos ##更改用户westos的名称为linux
usermod -u 1234 linux ##更改用户linux的uid
usermod -g 1236 linux ##更改用户linux的初始组id
usermod -G 1555 alice ##更改用户alice的附加组
usermod -aG 1236 hey ##添加用户hey的附加组
usermod -G “ ” alice ##删除用户alice所有的附加组身份
usermod -c “heihei” linux ##指定用户linux的说明文字
usermod -d /home/lee linux ##更改用户linux家目录的指向
usermod -md /home/lee tom ##更改用户tom家目录
usermod -s /bin/sh tom ##更改用户tom的shell
注意:在/etc/shells文件下可以查看所有的shell类型。
用户认证信息
/etc/shadow ##记录用户认证信息
监视用户认证信息的命令:
我们用命令watch -n 1 “tail -n 3 /etc/shadow ; echo ======== ; passwd -S alice”进行监视。
alice : !! : 17985 : 0 : 99999 : 7 : : :
[1] [2] [3] [4] [5] [6] [7] [8] [9]
此文件一共有9列,分别代表以下含义:
[1] alice :用户名称
[2] !! :用户密码 ,如果显示的为加密字符串,表示默认的加密方式为sha512对称加密,如果加密字符前出现“!”表示用户被冻结
[3] 17985 :用户密码最后一次被更改的时间 ,此时间是从1970-1-1开始计算的累计天数
[4] 0 :用户密码最短有效期,如果此为有设定数字,那么在此数字范围的天数内是不能修改用户密码的。
[5]99999 :用户密码最长有效期,用户必须在此有效期内更新密码,如果超时会被冻结。
[6]7 :密码警告期限,在过期前指定天数内会发送警告信息给用户.
[7] 用户非活跃天数:此位默认为空,如果设定数值,那么在密码最长有效期过后仍然可以使用的天数。
[8]用户到期日:默认为空,表示账户一定会被冻结的时间点.
[9]用户自定义列,目前尚未启用。
- 查看linux用户密码信息
passwd -S linux
- 更改linux密码
passwd linux
- 在用户密码前加入“!!”
passwd -l linux
- 解除锁定“!!”
passwd -u linux
- 在用户密码前加入“!”
usermod -L linux
- 在密码不为空时使用
usermod -U linux - 清空westos密码
passwd -d linux
注意:
当普通用户改密码时:必须知道当前用户的原始密码,密码不能和帐号名称相似,不能是纯数字或纯字母,不能是有序的字母和数字的组合。
- 用户密码最后一次被更改的时间
passwd -e linux ##会改变用户最后一次更改密码时间为0.
##用户在登陆时会被强制更改密码
chage -d 0 linux##两个命令功能类似
- 用户密码最短有效期
passwd -n 1 linux ##westos用户在1天之内不能修改密码
chage -m 1 linux
- 用户密码最长有效期
passwd -x 30 linux ##设定westos在30天内必须改密码
chage -M 40 linux
- 密码警告期限
passwd -w 2 linux##密码过期前两天有警告输出
chage -W 2 linux
- 用户非活跃天数
passwd -i 1 linux ##密码过期后仍可登陆系统的天数
chage -I 1 linux
- 用户到期日
chage -E 2019-6-1 linux##linux用户在2019-6-1日会被冻结
框中两数之差为密码还可用的天数。
用户授权
通过上面的操作我们可以看到,除root之外的所有普通用户默认情况下没有添加用户的权力,而若是想让他们拥有某种权力,可以通过root给他们授权。
- 权力下放的文件为/etc/sudoers
此文件可以用vim直接编辑,但是不提供语法检测,我们选择用visudo编辑此文件,visudo命令是提供语法检测的。 - 权力下放方式
visudo(100行左右)
格式为:
用户名 主机名称 =(得到的用户身份) 命令
linux localhost =(root) /usr/sbin/useradd
含义为linux用户可以在localhost主机以root用户身份执行useradd命令
注意:
1.用hostname命令查看主机名称
2.测试是否能成功添加的命令为 sudo useradd even
以上执行的过程中需要输入密码,下面为免密执行的命令:
linux localhost=(root) NOPASSWD: /usr/sbin/useradd