一.用户,用户组的基本知识
1.用户
Linux中每个用户通过 User Id 来唯一标识
管理员:root,0
普通用户:1-60000 自动分配
系统用户:1-499(centos6及之前版本),1-999(centos7及之后版本) 对守护进程获取资源进行权限分配
登录用户:500+(centos6及之前版本),1000+(centos7及之后版本) 给用户进行交互式登录使用
2.用户组
Linux中可以将一个或多个用户加入用户组中,通过 Group Id 来唯一标识
管理员组:root,0
系统组:1-499(centos6及之前版本) ,1-999(centos7及之后版本)
普通组:500+(centos6及之前版本),1000+(centos7及之后版本)
3.用户和组的关系
主要组:用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,作为用户的主要组,又称为私有组
附加组:一个用户可属于零个或多个辅助组,又叫附属组
特别备注1:允许中的进程,以进程发起者的身份运行,进程所能够访问资源的权限取决于进程运行者的身份,即由用户权限决定
特别备注2:root用户可手动修改成其他user id,只有user id为0的用户才是管理员用户,用户组同理
二.用户和组的主要配置文件
/etc/passwd: 用户及其属性信息(名称,UID,主组ID等)
/etc/shadow: 用户密码及其相关属性
/etc/group: 组及其属性信息
/etc/gshadow: 组密码及其相关属性
1.passwd文件格式
2.shadow文件格式
用户名
用户密码:一般用sha512加密
从1970年1月1日起到最近一次密码被更改的时间
密码再过几天可以被变更(0为随时可变)
密码再过几天必须被变更(99999为永不过期)
密码过期前几天提示用户(默认一周)
密码过期几天后账号锁定
从1970年1月1日起,多少天后账号失效
用户名:加密后的密码:最近更改时间:可变:必变:提醒:锁定:失效
3.group文件格式
4.gshadow文件格式
5.相关小命令
vipw和vigr :对 /etc/passwd或/etc/group进行文本编辑
pwck和grpck :对 /etc/passwd或/etc/group进行语法检查
getent [passwd,group] username :查看passwd,group等配置文件中某用户单独一行的配置文本
三.用户和组管理命令
用户:useradd,usermod,userdel
组:groupadd,groupmod,groupdel
1.用户创建
格式: useradd [options] LOGIN
选项: -u UID
-o 配合-u,不检查UID的唯一性
-g 指明用户所属主组,可为组名也可以是GID
-c 用户注释信息
-d 以指定的路径为家目录(不可为已存在目录)
-s 指明用户的默认shell,必须在 /etc/shells 文件中
-G 为用户指明附加组,组必须事先存在
-N 不创建私有组做主组,使用users组做主组
-r 创建系统用户
-m 创建家目录,用于系统用户
-M 不创建家目录.用于非系统用户
-p 指定加密的密码
useradd 默认值设定由 /etc/default/useradd 设定
注:SKEL是新创建用户家目录的模板文件夹
还有一些用户创建的默认设置放在 /etc/login.defs 中,包括密码有效期,ID范围等
useradd -D 显示 /etc/default/useradd 的内容,加上其他命令即可修改相关配置
2.用户创建批量操作
批量创建用户:
newusers passwd 格式文件
批量修改用户口令:
echo username:passwd | chpasswd
Centos6中生产sha512加密密码:
3.用户属性修改
命令格式: usermod [OPTION] login
选项:
-u 新UID
-g 新主组
-G 新附加组,原来的附加组将会被覆盖;同时使用-a选项保留原有附加组
-s 新的默认SHELL
-c 新的注释
-d 新家目录,不会自动创建,若要创建新家目录并移动原数据,需要同时使用-a选项
-l 新用户名
-L 锁定用户,即在/etc/shadow 密码栏增加!
-U 解除用户锁定,去掉shadow密码栏的!
-e YYYY-MM-DD,指明用户账号过期日期
-f 设定宽限期
4.删除用户
格式:
userdel [OPTION]...login
选项:
5.查看用户ID信息
id命令可以查看用户的UID,GID等信息,常用于脚本中的某些判断
6.用户切换
用户切换的作用是用于以指定用户身份执行相关命令
格式: su [options...] [-] [user[args...]]
常见选项:
-l: --login 与 su - username等同
-c: --command 执行某个命令
切换方式对比:
su username : 非登录式切换,不会读取目标用户的配置文件,不改变当前工作目录
su - username :登录式切换,会读取目标用户配置文件,切换至其家目录
(注: su非登录切换,退出时要使用exit命令,不要使用su切换回之前的用户,否则会生成过多bash子进程)
换身份并同时执行命令(命令执行后自动切回):
7.设置密码
格式: passwd [options] username
常用选项:
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n:指定最短使用期限
-x:最大使用期限
-w:提前警告时间天数设置
-i:非活动期限
--stdin:从标准输入接受用户密码,Ubuntu无此选项
更通用的非交互式修改用户密码:
echo -e '123456\n123456' | passwd root
8.修改用户密码策略
格式:
常见选项:
注: 不带任何选项则进入交互式修改
9.创建组
-g 指明GID号;[GID_MIN,GID_MAX]
-r 创建系统组
10.修改组
-n 新组名
-g 新GID
11.删除组
格式: groupdel [options] GROUP
-f 强制删除,即使是用户的主组也强制删除组
12.组密码更改
-a user 将user添加至指定组中
-d user 从指定组中移除user
-A user1,user2... 设置有管理权限的用户列表
注:可以更改组密码,也可以修改附加组的成员关系
13.临时切换主组
newgrp命令可以临时切换主组,若用户不属于此组,则需要组密码
格式: newgrp [-] [group]
使用 - 选项可以初始化用户环境
14.更改查看组成员
groupmems 可以管理附加组的成员关系
-g 更改为指定组(root专用)
-a 指定用户加入组
-d 从组中删除用户
-p 从组中清除所有成员
-l 显示组成员列表
groups 可查看用户组关系
格式: groups [options].[username]...