Linux帐号管理
用户标识符:UID与GID
我们知道有两种身份元素,一种是用户UID userId,一种是用户组GID group id。对于linux系统来说,或者说是对机器来说识别的都是id数字,那么uid和gid是依据/etc/passwd和/etc/group来设定的。
如图所示,我们到了passwd文件中看到了mind的对应的存储用户信息,ll命令作用相当于ls -al,我们对1000的那个值进行修改,回来后再次查看发现只有对应的用户id数值并未显示名字。所以系统是以uid作为标定信息的,再到对应的文件中去寻找相应的信息。
用户帐号
系统登录的时候进行帐号密码验证的流程如下
- 首先定位到/etc/passwd,判断是否有对应的账户,有则将相关的信息如uid和gid(/etc/group)等读出来,包括帐号的主文件夹和shell设置
- 核对密码表,与/etc/shadow中的密码进行验证对比
- 如果正确,进入shell管控阶段
/etc/passwd文件结构
该指令只是展示了前5行的内容,理论上该文件下有多少行就代表着有多少个账户信息,其中0编号代表的是系统管理员,所以如果将uid设为0就是拥有root权限了,1-499是系统用户编号用于不同的系统服务所使用,其中1-99是系统自己创建的系统帐号所用的编号,100-499是我们自己增加的系统帐号的编号,500起步是一般用户帐号
如图所示,所有的内容按照 : 这个符号进行划分,按root来细说
root | x | 0 | 0 | root | /root | /bin/bash |
用户名称 | 密码 | UID标识符 | GID标识符 | 用户信息说明 | 用户主文件夹位置 | Shel指定 |
/etc/shadow文件结构
如图所示,所有的内容按照 : 这个符号进行划分,按root来细说
root | $6$SwcB.. | 17651 | 0 | 99999 | 7 | 空 | 空 | 空 |
用户名称 | 密码 | 最近更改密码日期(以1970/1/1起步的天数) | 密码不可更改天数的距离字段三) | 密码需要重新更改的天数(距离字段三) | 密码需要重新更改期限前的警告天数(距离字段三) | 密码过期后期限天数 | 帐号时效日期 | 保留字段 |
/etc/group文件结构
如图所示,所有的内容按照 : 这个符号进行划分,按root来细说
root | x | 0 | 空 |
组名称 | 组的密码(这个是给用户组管理员使用的) | GID | 组内成员 |
对于组存在着初始用户组和有效用户组,初始用户组就是以某帐号登录的时候它所在的组,一般当我们用useradd创建一个新的用户的时候默认创建了一个和用户名一样的初始用户组,有效用户组一般对应于创建文件的时候的概念。就是我们创建新的文件它到底属于该用户中的哪一个用户组,使用指令groups可以查看到用户组的信息,第一个就是有效用户组。
通过newgrp可以切换用户组,前提是切换该用户所处的用户组,这时候是新启动一个shell提供这个功能,可以通过exit回到上一级用户切换状态。shell的概念以后再好好研究下。
newgrp是通过/etc/gshadow进行设置的,该文件下有四个字段分别是用户组名称、用户组管理员密码、用户组管理员帐号、用户组下的用户名称,用户组管理员的概念是为了辅助root进行用户管理使用的。
总的来说这三个文件是管理用户信息的核心文件,passwd中通过gid在group中寻找组名等信息,通过用户名在shadow中查到密码。
帐号管理
- 创建用户useradd
- 修改密码passwd,后面加上用户名是指定修改密码,不加是修改当前的用户密码
- 查看密码参数,包括过期等信息 chage
- 修改用户帐号相关参数usermod,userdel
- 查看用户帐号相关信息finger,修改个人属性chfn,修改shell设置chsh,列出相关的id信息id
- 用户组的增删改操作groupadd,groupmod,groupdel
- 用户组管理员操作gpasswd
参考:
鸟哥的私房菜