用户管理
在Linux系统中各种会存多个用户。我们的使用者靠用户名来区分各自登陆的账号。 如果我们的用户想要使用系统资源,就必须在系统中拥有合法的账号。在系统多个文件 中都保存了用户身份相关信息。
用户相关配置文件:
-
/etc/passwd:
在/etc/passwd文件中用:当做分隔符,一共有7列。每列的内容分别是:
第一列:用户名
第二列:密码占位符(真正的密码文件在/etc/shadow)。
很多程序的运行都和权限与UID/GID有关。因此各程序要读取/etc/passwd来了解不同账号的权限。但是如果如果取消密码占位符。就可以实现本地免密码登录(第二列如果为空则不能进行远程登
录)。
第三列:用户ID(UID)
在用户ID中0是超级用户的ID,只要UID是0就是超级用户。在用户ID中1-999是系统用户的范围,作用是系统服务或命令在运行时会对这些账号进行调用。通常系统账号分为两种:1-200为系统自行创建的系统账号UID。201-999为保留给服务使用的账号UID(nfsnobody是个例外,默认安装后的uid为65534。是NFS服务的匿名访问用户的本地用户UID)在用户ID中1000-65535是普通用户使用,当创建一个新用户时UID从1000开始,最大到60000。2.6.x内核(uname -r查看内核版本)以后的Linux系统UID可以支持2^32的UID了
(修改最大UID范围/etc/login.defs)。
第四列:初始组ID(GID)
为更加灵活的管理用户的权限,Linux里还采用用户组的概念。
有效用户组与初始用户组:
在/etc/passwd里边第四列是GID。这个GID就是初始用户组。
创建用户时如果不指定用户的初始组,则会自动创建和用户名相同的组,初始组只能有
一个。
也就是说用户登陆系统,立刻就拥有这个用户组的相关权限。
有效组是后续添加的组,每个用户可以属于多个有效组,用groups命令来查看当前的初
始组和有效组。newgrp 组名 的格式用来切换当前的有效组。
第五列:用户描述信息(类似于“注释”,现在已经不常用)。
第六列:用户家目录
第七列:用户的shell类型:
用户会取得一个shell与系统的内核通信以进行用户的操作任务。
/bin/bash:shell类型为bash,bash shell是最常用的一种shell(能正常登陆系统)。
/sbin/nologin:不能登陆系统,可以使用系统资源。
2./etc/shadow:
第一列:用户名。
第二列:经过加密编码的密码,$6$开头的表明是使用SHA-512加密。
如果密码位是“!!”或“*”代表没有密码,不能登录(我们也可以在第二列用户的密码前面加入一个“!”或“*”,加入后都不能登录)(新建用户时,如果不设置密码,那么第二列为“!!”)
第三列:密码最近更改时间
此段记录了改动密码的日期,日期是由1970年1月1日作为标准时间来计算的。
时间戳转日期:
日期转时间戳:(86400为每一天的秒数)
第四列:密码不可被更改的天数(与第三列相比)
第四列记录了这个账号的密码在最近一次修改过之后需要经过几天才可以再次修改。
如果是0的话,表示密码随时可以被修改。
如果设置为5的话,那么当你设置过密码后,需要等5天之后才能更改密码。
第五列:密码最长有效期(与第三列相比)
为了强制用户更改密码,这个字段可以指定密码的最长有效期。
用户必须在有效期内重设密码才行。
必须在期限时间内重设密码,否则这个账号的密码会变为过期特性。
而默认的99999(273年)表示为 近似永久。
第六列:密码到期前的警告天数(与第五字段相比)
当账号的密码有效期快到的时候,系统会依据这个字段的设置发出“警告”给这个账号,提醒他过N天后你的密码即将过期。
第七列:密码过期后的宽限天数(密码失效日,与第五字段相比)
密码过期后预留几天给账户修改密码,此时已无法使用旧密码登陆系统。
如果写入0,那么代表密码过去就马上失效。
如果写入5,那么代表密码会在5天后失效。
如果写入-1,那么代表密码永远不会失效。
第八列:账号失效日期 这里同样要写时间戳,用1970年1月1日进行时间换算,如果超过了失效时间,用户也就 失效无法使用了。
第九列:保留。