账户实质上是一个用户在系统上的标识
系统依据账户来区分每个用户的文件、进程、任务
Linux中的账户包括:
用户账户和组账户
每个用户都有一个唯一的用户号UID:
超级用户root:UID=0
普通用户:UID>=500
虚拟用户(不可登录):1-499
用户组:是用户的集合,每一组都有一个唯一的ID号GID
标准组:可容纳多用户,创建新用户时就应指定他所属于的组
私有组:私有组中只有用户自己,创建新用户时,若没有指定他的组就默认分配到同名私有组
当一个用户同属于多个组时,将这些组分为:
主组(初始组):用户登录系统时的组
附加组:登录后可切换其他组
口令文件 /etc/passwd 存储了用户名、密码、UID、GID
影子口令文件 /etc/shadow 用户名、密码、最后修改时间巴拉巴拉
组账号文件 /etc/group 组名、口令、GID、组内用户列表
组口令文件 /etc/gshadow 组名、加密的组口令、组管理员账号、组用户列表
口令文件
/etc/passwd(-rw-r—r—)
每个用户一条记录,由用分号分隔 七个字段组成
| 字段 | 说明 |
|---|---|
| name | 用户名 |
| password | 在此文件中口令是X,说明用户的口令被/etc/shadow文件保护 |
| uid | 用户的识别号,是一个数字,每个用户的uid唯一 |
| gid | 用户的组识别号,也是一个数字。每个用户账户在建立好后都会有一个主组。主组相同的账户其gid相同 |
| description | 用户的个人资料,包括地址、电话等信息 |
| home | 用户的主目录,通常在/home下,目录名和账户名相同 |
| shell | 用户登录后启动的shell,默认是/bin/bash |
影子口令文件
/etc/shadow(-r————)
每个用户一条记录,由用分号分隔的九个字段组成
| 字段 | 说明 |
|---|---|
| 用户名 | 用户登录名 |
| 口令 | 用户的密码,是加密过的(MD5) |
| 最后一次修改的时间 | 从1970年1月1日起,到用户最后一次改密码的天数 |
| 最小时间间隔 | 从1970年1月1日起,到用户应该改密码的天数 |
| 最大时间间隔 | 从1970年1月1日起,到用户必须改密码的天数 |
| 警告时间 | 在用户密码过期之前多少天提醒用户更新 |
| 不活动时间 | 在用户密码过期之后到禁用账户的天数 |
| 失效时间 | 从1970年1月1日起,到用户被禁用的天数 |
| 标志 | 保留位 |
组帐号文件
/etc/group(-rw-r—r—)
每一个组一条记录,由用分号分隔的四个字段组成
| 字段 | 说明 |
|---|---|
| 组名 | 这是用户登录系统时的默认组名,在系统中唯一 |
| 口令 | 组口令,由于安全性原因,已不使用该字段保存口令,用’x’占位 |
| 组ID | 是一个整体,系统内部用它来标识组 |
| 组内用户列表 | 属于该组的所有用户名表,列表中用户间用,分隔 |
组口令文件
/etc/gshadow(-r————)
每一个组一条记录,由用分号分隔的四个字段组成
| 字段 | 说明 |
|---|---|
| 组名 | 组名,该字段与group文件中组名对应 |
| 加密的组口令 | 用于保存已加密的口令 |
| 组的管理员账号 | 管理员有权对该组添加删除账户 |
| 组内用户列表 | 属于该组的用户成员列表,用户间用,分隔 |
用户默认配置文件
/etc/login.defs
/etc/default/useradd
新用户基本信息
/etc/skel
如果手工创建用户,则需复制该目录到用户主目录
用户管理:
useradd [选项]<用户名> 添加用户 passwd+密码 设置密码
-g group:指定新用户的主(私有)组
-G group:指定新用户的附加组
例:添加新用户tom并加入staff附加组:useradd -G staff tom
-d directory:指定新用户的登入时初始目录
-s shell:指定新用户使用的shell,默认为bash
-e expite:指定用户的登陆失效时间
-M:不自动建立新用户的自家目录
usermod [选项]<用户名> 修改用户账号
userdel [<-r>]<用户名> 删除用户账号
-r用于删除用户的宿主目录
用id和finger查看账号目录
组管理:
groupadd:添加组账号
groupadd [<参数>] <组账号名>
-r:用于创建系统组账号(GID小于500)
-g:用于指定GID
groupmod:修改组账号
groupmod [<参数>] <组账号名>
-g:改变组账号的GID,组账号名保持不变
-n:改变组账号名
groupdel:删除组账号
group <组账号名> (无法删除有用户归属的私有组,在userdel删除用户时,该用户的私有组同时会被删除,不需使用groupdel)
向标准组中添加用户
gpasswd -a <用户账号名> <组账号名>
usermod -G <组账号名> <用户账号名>
从标准组中删除用户
gpasswd -d <用户账号名> <组账号名>
用户与组状态命令
| id | 显示当前用户的uid、gid和用户所属的组列表 |
|---|---|
| groups | 显示指定用户所属的组列表 |
| whoami | 显示当前用户的名称 |
| w/who | 显示登录用户及相关信息 |
| newgrp | 用于转换用户当前组到指定的组,用户必须归属于目标组 |
