用户管理
一、用户和组的基本概念和作用
1.用户和组的基本概念
Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。
用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。
2.用户和组信息存储文件
(1)用户基本信息文件
/etc/passwd
Head -1 /etc/passwd
其中每行的内容都是用户的基本信息构成,由冒号分割成七列字段,具体组成
用户名:密码:用户id:用户所属组idid:用户描述:家目录:shell类型
Ps:
x:这里的密码是占位符x的意思,具体密码在用户密码信息文件中。
用户id:uid,用户的身份证。新建的用户都是1000之后的id,1~499是系统用户,0是root。
组id:多个用户所属的组的id。属于组的身份证。
用户描述:创建用户的时候给用户增加的描述。
家目录:登录用户默认所在的目录。
Shell:登录shell,shell是命令解释器。Shell,中文翻译过来就是壳。命令解释器,用于定义命令,接受命令,执行命令。命令解释器的版本很多:ashell、bshell、cshell、tshell、bash、nologin
(2)用户密码信息文件
/etc/shadow
每行是用户密码信息内容,由冒号分割为9列。
登录名:加密形式的密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留
1.登录名:用户的登录名。
2.加密形式密码:密码为加密形式,如果为空则没有密码;*代表账号被锁定;爽叹号表示密码已经过期; 6 6 6开头表示使用sha-512方式加密; 1 1 1表示使用MD5加密; 2 2 2表示使用blowfish加密; 5 5 5表示使用sha-256加密。
3.最后一次修改时间:表示从某个时刻起,到用户最后一次修改口令的时间,时间七点对不同的系统可能不一样。例如在CentOS中,这个时间起点是1970年1月1日。我的密码修改时间是2022-6-9,这里的数字就是19152,单位:天。
4.最小时间间隔:两次修改口令的时间之间所需的最小天数。0代表当天可以改密码。
5.最大时间间隔:口令保持有效期的最大天数。9999无期限。
6.警告时间:从系统开始警告到用户密码正式失效之间的天数。
7.不活动时间:用户没有登录系统但账号仍然能保持有效的最大天数。(软限制)
8.失效时间:给出一个绝对的天数,使用了此字段,那么就是这个账号的生存周期,期满后,就不是一个合法账号,再也不能用来登录。(硬限制)
9.保留
(3)组信息文件
/etc/group
每行是组的信息内容,由冒号作为分割成了4列。
组名:组密码:组id:组成员
组名:组的名字。
组密码:一般不会设置,会太麻烦。
组id:组的身份证。
组成员:组里面有哪些成员。默认为空。一般创建用户的时候就会默认创建该用户的组。
二、用户和组管理
1.用户
创建用户(未指定选项)
Useradd 用户名
用户名相同的的话,则会报错。可以使用id命令查看需要创建的用户是否存在
Id 用户名
Id test1
Id user2
Id打印的是用户的uid用户id,gid组id,用户所属组id。因为我们直接useradd,没有指定密码。Passwd更改密码。
Passwd test1
密码过于简单,不符合密码创建规则的,会提示,因为我这里是root用户,所以直接再次输入简单密码即可。创建用户(指定选项)
创建用户指定uid
Useradd user02 -u 1009
此时默认同时创建的组id也变成1009了。创建用户时指定家目录
Useradd user03 -d /home/user09
删除用户
Userdel -r test1
-r表示连同家目录一起删了。
也可以id检查是否删除
用户密码
Passwd 用户名
更改其他人的密码是管理员的权限。
普通用户只能passwd即可,修改自己的密码。用户信息修改
其他选项管理
修改用户属性
usermod -s 更改的属性 用户名
Usermod -s /sbin/nologin user01
Usermod -l 更改的用户名 现在的用户名
Usermod -l user11 user03
Usermod -g 更改的基本组 用户名
Usermod -g 0 user11
Usermod -G 指定的附加组名 用户名
注:这里就是给用户新增一个额外的组,新增的组在用户信息文件中是看不到的,只有去组信息文件中才能看到。User -d /home/user1 user11
-d 修改家目录
-p 修改密码,不建议,建议使用passwd就行。usermod能修改的内容很多。可以查看命令帮助
Usermod --help中查看具体参数具体效果。
2.用户组
操作
创建用户组
Groupadd 组名
创建一个用户组
Groupadd user12
Groupaadd user13 -g 1099
创建user13用户组,指定用户组gid为1099
删除用户组
Groupdel 组名
删除一个用户组
Groupdel user14
没返回信息就是没有user12相关的内容。也可以id查看
组分类
组的类型,分为基本组和附加组。
上面的操作中,已经显示出来一部分的内容,可以注意到,有的组是随着用户的创建而创建的,组名同用户名,这就是基本组。每个用户都有且只有一个基本组。
而一个用户可以拥有多个组,除去同名的基本组以外,其他的都是附加组。也就是用户加入的其他组,都叫附加组。
所以结论而言,无论是附加组和基本组都是基于用户的角度而言,相对的。
三、提权
1.永久提权Switching users with su(su)
其实就是切换用户身份
在生产环境的时候,我们大多都使用的普通用户,所以权限不够的时候我们需要切换用户,也就是提权。
Su - user01
Su - root
注意:root切成普通用户的时候是不用输入密码的,而普通用户切换成root需要输入root的密码。
Exit
退出su
2.临时提权Running commands as root with sudo(sudo)(简)
Sudo则是部分指令的权限。
需要root指定某个用户可以使用某个命令。
使用root先授权:
Vi /etc/sudoers
#开头的都是注释,找到这里,取消注释这里的wheel就是用户组,这里的意思就是允许wheel用户组中的用户在不输入该用户密码的情况下使用所有命令。
将需要sudo权限的用户加入wheel组中。
这时候授权就已经可以了。测试
我用su切换成user01用户测试原本权限是不可以的,但是加上sudo就可以了。