管理用户文件
用户账户文件
/etc/passwd账户号文件
在Linux系统中,创建的用户账户及其相关信息,均放在/etc/passwd配置文件中。
这个文件中每一行代表一个用户的资料。
每一行使用6个冒号:分隔成7个域,意义分别是:
域位置 | 意义 | 描述 |
---|---|---|
1 | 用户名 | 用户账户名称,可以是字母、数字组成的字符串,区分大小写 |
2 | 密码 | 实际上密码已经转移到/etc/shasow中,此位置用x填充 |
3 | UID | 用户号,用户的唯一数字标识符 |
4 | GID | 用户组的数字标识符,对应/etc/group中的GID |
5 | 描述 | 可选的关于用户全名、电话等描述性信息 |
6 | 主目录 | 用户的私人目录,登录系统后默认进入的目录 |
7 | 登录shell | 用户登录系统后默认使用的shell程序,默认是/bin/bash |
系统用户的UID为1-999,普通用户的UID如在创建时没有指定则从1000开始顺序编号,用户组的GID也是从1000开始顺序编号。
/etc/shadow密码文件
由于所有用户对/etc/passwd文件都有读权限,为了增强系统安全,用户经过加密后的口令都放在/etc/shadow文件中,原来存储密码的位置用x填充。
该文件每个用户占一行。
每行用8个冒号:分隔为9个域,意义分别是:
域位置 | 意义 | 描述 |
---|---|---|
1 | 用户名 | 用户的登录名 |
2 | 加密后的口令 | *表示非登录用户,!!表示没设置密码 |
3 | 上次改口令的天数 | 从1970-01-01起到用户最近一次更改密码的天数 |
4 | 最短口令存活期 | 从1970-01-01起到用户可以更改密码的天数 |
5 | 最长口令存活期 | 从1970-01-01起到用户必须更改密码的天数 |
6 | 口令过期提醒 | 密码过期前几天提醒用户更改密码 |
7 | 口令过期禁用时间 | 密码过期几天后账户被禁用 |
8 | 口令被禁用的具体日期 | 相对于1970-01-01的天数 |
9 | 保留域 | 保留域,用于扩展 |
/etc/login.defs账户配置文件
新建用户的时候会根据此文件的配置来设置用户的某些选项。
用户组群文件
/etc/group文件
组账户的信息会放置在该文件中,而相应的组口令、管理员等信息则放置在/etc/gshadow文件中。
该文件任何用户都可查看,每个组账号占一行。
每行用3个:分隔成4个域,意义如下:
组名:组口令:GID:组员列表
其中,组口令一般为空,用x占位。
用户的主组不把该用户作为组员列出,其他多个组员用,隔开。
/etc/gshadow文件
此文件用于保存加密后的组口令,组管理员等信息。
只有root用户可以读取。
每个组账号占一行,没行用3个:分隔成4个域,意义如下:
组名:加密后的口令:组管理员:组成员列表
其中,如果没有口令则显示!
管理用户账号
新建用户
可以使用useradd或adduser命令,参数说明如下:
选项 | 说明 |
---|---|
-c comment | 用户 的注释性信息 |
-d dir | 指定用户的主目录 |
-e date | 禁用账号的日期,格式为YYYY-MM-DD |
-f days | 设置账号过期多少天后禁用。0立即,-1永不 |
-g group | 用户的主组,可用组名和GID |
-G groups | 用户的附属组,多个用逗号分开 |
-m | 若用户主目录不存在,则创建 |
-M | 不创建用户主目录 |
-n | 不要为用户创建私人组 |
-p passwd | 加密后的口令,注意是加密后的! |
-r | 创建UID<500的不带主目录的系统账号 |
-s shell | 指定用户的登录shell |
-u UID | 指定用户的UID,唯一,且>499 |
比如新建一个用户userok,UID为2318,指定私有组为groupok,主目录为/home/userok,bash为/bin/bash,密码为123456,账户永不过期。
useradd -u 2318 -g groupok -d /home/userok -s /bin/shell -f -1 userok
echo “123456”|passwd --stdin userok
注意:指定私有组时,私有组一定要是已经存在的。
不可用-p passwd 123456为账号指定密码为123456,这是不可行的,因为-p参数指定的密码是加密后的而非明文。
设置用户账户口令
passwd命令用来修改用户账户的各项参数。
passwd参数说明如下:
选项 | 说明 |
---|---|
-l | 锁定(停用)该账户 |
-u | 口令解锁 |
-d | 口令置空,可无密码登录 |
-f | 强迫下次登录修改密码(未测试成功) |
-n | 指定口令最短存活期 |
-x | 指定口令最长存活期 |
-w | 口令到期前提醒警告的参数 |
-i | 口令过期后多少天停用账户 |
-S | 显示用户的简短信息 |
不加参数代表修改当前用户密码。
root用户可以后加用户名修改其他账号密码(无需原密码)。
root用户可以设置强度低的密码,比如1。
更改用户账户信息也可用chage命令实现。
chage命令参数说明如下:
选项 | 说明 |
---|---|
-l | 列出账户属性各个数值 |
-I(大i) | 口令过期后多少天停用账号 |
-m | 口令最短存活期 |
-M | 口令最长存活期 |
-W | 口令到期前提醒的天数 |
-E | 用户到期作废的日期 |
-d | 设置口令上一次修改的日期 |
维护用户账户口令
usermod命令可以修改创建用户时设置的属性。
各项参数说明如下:
选项 | 说明 |
---|---|
-c | 填写用户的备注信息 |
-d m | 参数m和d连用,可重新指定用户的家目录,并自动将旧的数据转移过去 |
-e | 用户的到期时间,格式YYYY-MM-DD |
-g | 更改用户的主组 |
-G | 更改用户的附属组(扩展组) |
-L | 锁定用户,禁止其登录系统 |
-U | 解锁用户,允许其登录系统 |
-s | 变更默认终端 |
-u | 修改用户的UID |
删除用户账号
userdel可以用来删除用户账号,加参数-r可连相应文件(比如家目录)也一并删除。、
管理组账号
创建及删除组账号
可以使用groupadd或addgroup来添加组,
可以使用groupdel来删除组。
注意:如果删除的是某用户的主组,则该组不允许被删除。
修改组账号信息
groupmod命令可用来修改组账号信息。
参数说明如下:
选项 | 说明 |
---|---|
-g gid | 修改组的id |
-n name | 修改组名 |
-o | 强制接受更改组的id为重复的号码。 |
只有root和组管理员才能使用的gpasswd命令:
参数说明如下:
选项 | 说明 |
---|---|
-a user | 把用户加入组 |
-r | 取消组的密码 |
-d user | 把用户从组中删除 |
-A user | 给组指定管理员 |
其他常用的用户账户管理命令
vipw 编辑/etc/passwd文件
vigr 编辑/etc/group文件
pwck 验证用户账户文件的完整性
grpch 验证组文件的完整性
id 显示一个用户的id信息
finger 显示用户端 相关信息
chfn 更改用户的ginger信息
chsh 为用户指定新shell
whoami 显示当前用户用户名
newgrp 转换用户的当前组到指定的主组群