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
–> 查询自身账号信息。
相关文章