/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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现