Linux 账号管理
概述
既然 Linux 系统可以提供多用户多任务环境,那么本文便介绍一下与用户账号相关的知识。
详述
在 Linux 系统中,与用户账号相关的文件主要涉及:/etc/passwd、/etc/shadow (记录 owner 信息)、/etc/group、/etc/gshadow (记录 group 信息)。
在 /etc/passwd 中,每一行表示一个 owner,举例并解释各字段如下:
1 | yl:x:1001:1001::/home/yl:/bin/bash |
在 /etc/shadow 中,每一行表示一个 owner 的密码信息,举例并解释各字段如下:
1 | yl:Y6FFNSuN66W...:18694:0:99999:7::: |
借助于两个文件中各字段含义,简单说明三个使用操作:
- 文件
inode中实际存放的是 UID 和 GID。当使用ls -l进行查看文件时,系统会自动根据/etc/passwd和/etc/group找到 UID 和 GID 所对应的英文字符,从而将其显示出来。 - 当我们进行文件操作时,系统会提取特定文件的 UID 与 GID,并将其与使用者的 UID 与 GID 进行对比,如果满足权限,则进行操作,否则提示权限不足。
- 当使用者登录系统时,系统将会基于
/etc/passwd和/etc/shadow核对使用者所输账号密码信息,如果两者不相符则退出,否则依据/etc/passwd中该账号的后两个字段,提供指定 SHELL 并切换至家目录 (其中涉及 SHELL 初始配置等操作),以供使用者使用此系统。
在
/etc/shadow的每行信息中,重点在于前两个字段,后面几个字段基本不使用。指令
passwd可用于修改账号密码,使用者可修改自身账号密码,root 用户可修改任意账号密码。如果使用者忘记自身密码,需借由 root 用户帮助而重置密码;如果 root 用户忘记密码,仍可基于某些方法 (例如,重新开机进入单人维护模式) 进入系统,从而重置密码。
在 /etc/group 中,每一行表示一个 group,举例并解释各字段如下:
1 | yl:x:1001:hhd,dms |
在 /etc/gshadow 中,每一行表示一个 group 的密码信息,举例并解释各字段如下:
1 | yl:!::hhd,dms |
对于群组而言,还存在些许概念值得一提:
- 默认情况下,创建某个账号时,会自动创建一个同名群组,并将此账号添加至此同名群组之中,当然用户也可指定此账号添加至某特定群组之中。该账号所属群组即称为 初始群组,
/etc/passwd中 GID 所指代的便是初始群组。另外,在新版 Linux 系统的/etc/group和/etc/gshadow中,如果某群组为某账号的初始群组,则该群组的第四个字段中不再会包含此账号信息。 - 一个账号可添加至多个群组中,而在执行操作时所发挥作用的群组 (例如,查看文件时,依据哪个群组进行权限判断) 称为 有效群组。用户登录系统后,有效群组即为初始群组,可使用指令
groups进行查看,随后可借由指令newgrp进行切换 (基于此指令切换有效群组后,使用者即会进入另一个 SHELL 环境中,若需退出,输入exit即可)。
所涉指令
系统管理员所能使用的指令有:
useradd–> 添加一个用户账号,与此相关的各种默认参数值见于/etc/default/useradd和/etc/login.defs。usermod–> 修改用户账号相关信息。userdel–> 删除一个用户账号。passwd–> 为用户账号创建、修改、删除密码。chage–> 查看用户密码的详细信息,也可更新相关字段信息。groupadd/groupmod/groupdel–> 添加、修改、删除一个群组账号。gpasswd–> 创建一个群组管理员 (已基本不使用)。
使用者借用
passwd更新自身密码时,首先需要输入当前密码,然后才能输入更新密码,且密码需满足一定安全规则;root 用户借用passwd设置密码时,直接输入更新密码即可。
用户所能使用的指令有:
id–> 查询自身的 UID/GID 等信息。finger–> 查询自身账号信息。
相关文章