1. 用户信息文件/etc/passwd
1.1 用户管理简介
-
为什么要添加用户?
答:对服务器来讲,如果每个人登录都是使用root高权限用户的话,我们的服务器就会很危险,所以通过和合理的建立用户权限等级制度来保证服务器的安全性。 -
在Linux中主要是通过用户配置文件来查看和修改用户信息。
1.2 /etc/passwd
这是用户的基本信息文件,每一个用户的基本信息都保存在这里:
我们可以通过man命令来查看配置文件:
接下来我们一个一个进行解读:
1.2.1 用户名
- 用户名中不能包含特殊字符。
- 用户名最好是统一的,有规律的。
1.2.2 密码
早期是将密码直接放置在这个文件当中,现在为了安全性,是将密码放在/etc/shadow文件当中。
当然在/etc/shadow也不是明文出现的,我们可以给权限看一下:
就算是加密的密码,也可以暴力破解,将他放进/etc/shadow中所有用户都不能查看,这样就比较安全,所以我们知道==/etc/passwd中的X表示这个用户时有密码的,并且这个X不能省略==。
也就是说,没有x在登陆的时候,系统不会在/etc/shadow中寻找密码,登陆的时候就没有密码直接登录,但是这种登录不提供远程登录,只能本机登录。
1.2.3 UID
内核对每个用户,用户组,进程等进行操作的时候,他不认识abcd字母,他只认识唯一的数字标示,这就是UID。但是普通用户如果记UID容易乱,所以要起一个用户名。
0 | 超级用户 |
---|---|
1-999 | 系统用户(伪用户) |
1000-65535 | 普通用户 |
伪用户:不可以删除,如果删除系统崩溃,这些用户给系统启动服务,启动命令来用的,如果将这些用户删除,服务命令就不可以使用了。
1.2.4 GID
在linux相同类型的用户集合可以成为一个组。linux中有两种组:
初始组 | 用户一建立就会默认属于一个组,这个用户离开这个组就不能活,每一个用户必须由一个初始组;每个用户只能有一个初始组存在。初始组能改最好不要改,容易混乱 |
---|---|
附加组 | 用户可以加入多个其他组,并且拥有这些组的权限,附加组可以有多个 |
1.2.5 用户说明
只是用户的一个说明而已,加不加都可以,算是一种用户的解释说明。
1.2.6 家目录
在服务器端我们登录之后就直接是一个字符界面,所以在登陆的时候,就得有一个初始的登录位置,用用户的家目录作为初始登录位置。这个家目录是固定的。
普通用户 | /home/用户名/ |
---|---|
超级用户 | /root/ |
理论上可以调整但是不建议调整。
1.2.7 登录之后的shell
shell是什么?
- Shell就是linux的命令解释器,敲入命令,命令解释器解释,并且传给内核。
在linux中默认的shell是/bin/bash,他是其他几个shell版本的进化升级整合。
普通用户 | /bin/bash |
---|---|
伪用户 | /sbin/nologin |
2. 影子文件/etc/shadow
他其实是/etc/passwd的影子文件,查看权限:
他的权限更小,在shadow中保存的是真正的加密的密码串。在passwd中只有密码标志X。
2.1 用户名
与/etc/passwd是相同的。
- 用户名中不能包含特殊字符。
- 用户名最好是统一的,有规律的。
2.2 加密密码
这里使用的加密方式是:
加密算法已经升级为SHA512三列算法,注意这类算法就算设计的密码相同,加密出来的结果也不回相同,不能通过字段进行猜测。
但是也可以进行暴力破解的出密码,所以文件权限是000.
如果密码是“!!”或者“ * ” 代表这个用户没有密码,不可登录。
我们可以给一个用户的加密字串密码前加一个!,这样就相当于禁用一个密码,这样是可以的。
2.3 密码最后一次修改日期
这个密码在那天最后设置的。
使用1970年1月1日作为标准时间,每过一天时间戳加1
2.4 两次密码的修改间隔
上一次修改密码,距离这一次修改的时间间隔。
2.5 密码的有效期
也就是说这个密码在99999天内有效,273年。
密码的原则:
- 密码要复杂
- 密码要经常改
- 密码要能记住
我们可以修改这个值,强制用户修改密码。
那么如果没有修改。
2.6 密码修改到期前的警告天数
这时你不改也没关系,这只是一个警告。
2.7 密码过期后的宽限天数
如果过期不改就会,就把他封掉。
0 | 密码过期后立即失效 |
---|---|
-1 | 密码永远不会失效 |
如果写了-1那么就不用担心前面了,你不用修改了 。
2.8 帐号失效时间
这里写了时间,帐号到这个时间就会删掉。
这里要用时间戳标示。
2.8.1 时间戳换算算法
date -d "1970-01-01 17754 days"
echo $(($(date --date="2020/06/11" +%s)/86400+1))
2.9 保留
第九字段是没有生效的暂时没有用。
3.组信息文件/etc/group
每天加一个用户就会生成和用户名相同的用户组。
3.1 组名
默认组名与用户名相同的。当然也有不同的情况。
3.2 组的密码标志
这里也只是密码的标志,真正的组密码在/etc/gshadow中。X作为标志标示这个组密码。
在/etc/gshadow中:
那么这个组密码是干什么的?
- 只有root客人一把用户加到其他的用户组,如果用户过忙,可以给组先一个管理员,给管理员设立密码,知道密码的人可以加人近来。
- 会降低系统的安全性
3.3 GID
就是组ID的意思,给内核一个分辩组的数字:
我们可以通过组id更改组。
0 | 超级用户组 |
---|---|
1-999 | 系统用户组(伪用户组) |
1000-65535 | 普通用户组 |
3.4 组中附加用户
在其中可以看到附加用户,不能看到初始用户。
4.组密码文件/etc/gshadow
这里只有组密码与组管理员要说一说。
你给一个组添加了组管理员,设定了组密码,这个组管理员就可以通过设定的组密码添加删除组中的用户。
第一字段 | 组名 |
---|---|
第二字段 | 组密码 |
第三字段 | 组管理员用户名 |
第四字段 | 组中附加用户 |
我们就是通过这四个文件,来查询用户的个人信息的,互相配合,完成工作。