/etc目录下passwd shadow group gshadow 四个文件中每个字段的含意以及etc目录下login.defs和etc目录下deafult子目录中useradd文件中每个配置项功能说明介绍

 /etc/passwd

 

 

第一字段 :用户名称(account)

这个字段没什么可说的,就是用户个人的用户名,不过,需要注意的是用户在起名时要遵守相应规范。

第二字段 :密码标识(password)

该字段若是 x ,则代表这个用户设有密码。x 不能省略,如果省略,系统在登录时就不会去 /etc/shadow 中搜索真正的密码,从而认为这个用户没有密码,于是直接登录,很不安全。

真正的密码并不存在于 passwd 文件,而是保存在/etc/shadow中,这里保存的只是一个密码标识。

第三字段 :UID

0 :表示该账户是超级用户

1~499 : 表示该账户是系统用户(伪用户)。专门用来为系统的启动服务或启动命令服务,一旦删除这些伪用户,系统会崩溃。

这些用户不能登录,其原因在于最后一个字段的 /sbin/nologin ,我们之后再谈。

500及以上 : 普通用户

当我们想把一个普通用户变为超级用户,只需把该用户的这个字段改为 0 ,这样,该用户便拥有了超级用户的权限。

注意 : 改变的只是该用户的权限,其家目录还是原来的位置。

第四字段 : GID(用户初始组ID)

初始组:指用户一登录就立刻拥有这个用户组的相关权限,每个用户都必须有一个初始组,并且初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。

附加组: 指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个

在 passwd 该字段下看到的 GID 是这个用户的初始组 GID,那么这个组到底指的是哪一个组呢?这时就需要匹配 /etc/group 文件,才能看到。我们不建议更改初始组,如果需要把用户添加到其他组中,请使用附加组。

第五字段 : 用户说明

该字段只是对本用户的一个备注说明,用户可以把一些重要信息保存在这里,方便日后的查看。

第六字段 : 家目录

普通户 : /home/用户名/

管理员 : /root/

第七字段 :登录之后的 shell

shell :命令解释器。我们需要通过 shell 才能与系统内核进行交流,shell有很多种,Linux 中的默认 shell 是 bash。

我们发现所有伪用户在这个字段是 /sbin/nologin , 我们知道 log in 是登录的意思,那么no log in就是禁止登陆,所以,所有的伪用户才无法登录。

也就是说,如果我把某一普通用户的这一字段由 /bin/bash 改为 /sbin/nologin ,该用户就会被禁用,无法登陆。

当然,如果粗心大意把这个字段的 shell 名字写错了,也会造成无法登陆的情况。

/etc/shadow

 

 


这个文件也是每一行代表一个用户,而且它与 passwd 文件的内容是对应的。shadow 下的每一行由冒号分隔的九个字段组成。

我们依然进行详细介绍。

第一字段 : 用户名

第二字段 : 加密密码

真正的密码就是保存在这一字段,这里是显示的加密后的密码。虽然经过加密,但我们还是不要轻易把这个文件传给别人,因为完全可以通过暴力破解来从加密密码中得到真正的密码。

如果这一字段是两个感叹号 !!或者一个星号 * ,表示该用户没有设置密码,无法登录。

第三字段 : 密码最后一次的修改日期

该字段是用时间戳表示的。(以1970年1月1日为起始时间,每过一天加一,得出来的数字称为时间戳。)

如果我们想通过命令行对时间戳进行换算,可以用以下命令:

时间戳换算日期

date -d “1970-01-01 17066 days”

日期换算时间戳

echo $(($(date --date=”2018/01/01”+%s)/86400+1))

第四字段 : 两次密码的修改时间间隔

该字段所谓的间隔是与上一字段相比较的。

如果该字段是 0,则可在任意时刻修改该用户的密码。

假如该字段是 10 ,则要求 10 天内不允许用户修改密码。

第五字段 : 密码有效期

比如设置为30,则每隔30天必须改密码。如果到期,根据后面第六、第七字段来行动。

我这里的这一字段显示的是99999,是个相当长的时间,等同永远不会失效。

第六字段 :修改密码警告天数 n

当距离密码有效期(第五字段)还剩 n 天时,系统每天都会提醒你修改密码。

第七字段 :密码到期后的宽限天数

0:代表密码过期后立即失效

-1:代表密码永远不会失效

n :往后宽限 n 天

第八字段 :账号失效时间

要用时间戳表示。该账号到期立即失效。

第九字段 : 保留

 

三、组信息文件 /etc/group

 

 


该文件显示的是用户组的内容,有四个字段,每个字段的特性与前面的 passwd 和 shadow 的一些字段是相似的,所以这里简单介绍一下。

第一字段:组名

第二字段:组密码标志

与 passwd 中的第二字段特性相同,只是一个密码标志,真正的密码在 /etc/gshadow 中。只是我们通常不给组设置密码。

第三字段:GID

第四字段:组中附加用户

我们发现这个字段是空的,说明我们没有向其中添加其他用户。并且在这一字段,我们是看不到初始用户的,要想查看该组的初始用户,则要通过 GID 来与 passwd 文件对照查看。也许有人疑惑用户名和用户组名不是一样吗,何必特意去查看呢?因为这只是一般情况,有时候也会有人故意设置成不同的名字。

四、组密码文件 /etc/gshadow

 

 


该文件每行也是四个字段,group 和 gshadow 是两个对应的文件,但因为我们也很少用到它,所以这里也只是简述。

第一字段 : 组名

第二字段 : 组密码

第三字段 :组管理员的用户名

第四字段 : 组中附加用户

 

第一个是 /etc/default/useradd

 

 

 

GROUP=100 用户默认组(公有模式,我们用的是私人模式,所以不同)

HOME=/home 用户家目录

INACTIVE=-1 密码过期宽限天数

EXPIRE= 密码失效时间

SHELL=/bin/bash 默认shell

SKEL=/etc/skel 模板目录

CREATE_MAIL_SPOLL=yes 是否建立邮箱

 

第二个是 /etc/login.defs

 

 

 

PASS_MAX_DAYS 99999 密码有效期

PASS_MIN_DAYS 0 密码修改间隔

PASS_MIN_LEN 5 密码最小位数(由于太简单了,所以这里未生效,真正的位数定义在别的地方)

PASS_WARN_AGE 7 密码到期时间

UID MIN 500 最小和最大UID范围

UID_MAX 60000

GID MIN 500 最小和最大GID范围

GID_MAX 60000

posted @   无劫。  阅读(976)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示