账户实质上是一个用户在系统上的标识
系统依据账户来区分每个用户的文件、进程、任务
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 用于转换用户当前组到指定的组,用户必须归属于目标组