Linux学习之用户配置文件详解(十四)
Linux学习之用户配置文件详解
目录
用户信息文件/etc/password
影子文件/etc/shadow
组信息文件/etc/group
组密码文件/etc/gshadow
用户信息文件/etc/password
用户管理
1 2 | 用户管理对个人机来说意义不大,但是越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。 在Linux中主要是通过用户配置文件来查看和修改信息。 |
用户信息文件/etc/passwd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <strong>每一个用户为一行,每个信息用冒号隔开。<br>第一个字段< / strong>:用户名称 <strong>第二个字段< / strong>:密码标志,这个标记为x,只要有这个标记意味用户是有密码的,密码保存在 / etc / shadow <strong>第三个字段< / strong>:UID(用户 ID ),每个用户都有一个 ID ,用来唯一标识用户。 0 :超级用户 1 - 499 :系统用户(伪用户) 500 - 65535 :普通用户 <strong>第四个字段< / strong>:GID(用户初始组 ID ) 初始组和附加组 初始组:就是指用户一登录就立即拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。 附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。 每个用户必须得有一个初始组,当创建用户的时候就会生成一个和用户名相同的组,可以将用户改为其他初始组,但是最好不要这么做,如果想将用户添加别的组,可以添加到附加组,附加组可<br>以有多个,最后我们可以在 / etc / group里查看所有组。 <strong>第五个字段< / strong>:用户说明 <strong>第六个字段< / strong>:家目录 普通用户: / home / 用户名 / 超级用户: / root / <strong>第七个字段< / strong>:登录后的Shell |
查看/etc/passwd的权限(644)
Shell是什么?
1 2 3 4 5 | Shell就是Linux的命令解释器。 其实就是将用户输入的命令给命令解释器解析传给内核,内核做出应答,显示内容导命令窗口的过程。 在 / etc / passwd当中,除了标准Shell是 / bin / bash之外,还可以写如 / sbin / nologin 我们要注意的是: 所有普通用户的Shell必须是 / bin / bash,才能正常登录。 |
怎么将一个普通用户改成管理员?
我们首先添加一个用户user1,这里只需要将第三个字段改为0,就可以变成系统管理员。
怎么将一个用户禁止登录?
只需要将最后一个字段改为/sbin/nologin。
最后,添加用户信息的时候,不要错误,可能导致这个用户无法登录系统。
影子文件/etc/shadow
影子文件/etc/shadow
1 | 用来存放用户密码信息。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <strong>第一个字段< / strong>:用户名 <strong>第二个字段< / strong>:加密密码 加密算法升级为SHA512散列加密算法 如果加密位是 "!!" 或 "*" 代表没有密码,不能登录 <strong>第三个字段< / strong>:密码最后一次修改日期 使用 1970 年 1 月 1 日作为标准时间,每过一天时间戳加 1 <strong>第四个字段< / strong>:两次密码的修改间隔(和第三个字段相比) 就是改一次密码,需要几天才能第二次该密码 <strong>第五个字段< / strong>:密码有效期(和第三个字段相比) <strong>第六个字段< / strong>:密码修改到期前的警告天数(和第五个字段相比) 如果我们在第五个字段设置为 90 天,第六个字段设置为 7 天,当我们在创建用户的 83 时,使用这个用户每次登录到系统,都会提示让你修改密码 <strong>第七个字段< / strong>:密码过期后的宽限天数(和第五个字段相比) 0 :代表密码过期后立即失效 - 1 :则代表密码永远不会失效 <strong>第八个字段< / strong>:账号失效时间 <strong>第九个字段< / strong>:保留 |
时间戳与日期的转换
1 2 3 4 5 | 时间戳换算为日期 date - d "1970-01-01 16076 days" 日期换算为时间戳 echo $(($(date - - date = "2019/02/06" + % s) / 86400 + 1 )) |
组信息文件/etc/group
组信息文件/etc/group
1 2 3 4 | 第一个字段:组名 第二个字段:组密码标志,标志这个密码是放到 / etc / gshadow 第三个字段:GID 第四个字段:组中附加用户 |
怎么查看一个用户属于哪个组?
先查看/etc/passwd文件,看用户的组ID。
再查看/etc/group文件,查找与组ID相同的行,则代表用户在这个组。
组密码文件/etc/gshadow
组密码文件/etc/gshadow
1 2 3 4 5 6 7 | 第一个字段:组名 第二个字段:组密码 这个组密码是干嘛的? 只有root用户才能把一个用户加到其他用户组,如果root用户太忙了,我们可以给组选一个管理员,也就是说我们给每个小组选一个组长,给这个组长设一个密码,他就可以把其他用户添加到自己组里来, 但这样做降低了系统的安全性,不推荐这样做。 第三个密码:组管理用户名 第四个字段:组中附加用户 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?