Ubuntu 用户账户管理和组管理
📅 2026/8/2 18:54:12
👁️ 阅读次数
📝 编程学习
一、Ubuntu 用户账户管理
1、用户账户管理(图形界面方式)
方式1:顶部状态栏快速进入
- 点击桌面右上角电源/设置图标(齿轮样式)
- 点开Settings(设置)
图1:右上角打开设置
- 左侧菜单栏找到用户(Users)
- 右上角点解锁(Unlock),输入管理员密码解锁编辑权限
图2:解锁用户设置
解锁后可:
- 添加新用户(Add User)
- 修改密码、开关管理员权限、设置自动登录
- 删除用户(Remove User)
图3:用户管理主界面
方式2:活动面板搜索直达
- 按键盘
Win(Super)键打开「活动」总览 - 直接搜索:用户或Users,点开直接进入账户管理面板。
2、用户账户管理(终端命令行方式:服务器/无桌面常用)
基础用户操作
# 创建普通用户sudoadduser 用户名# 赋予sudo管理员权限sudousermod-aGsudo用户名# 删除用户(连带家目录一起删除)sudodeluser --remove-home 用户名# 修改用户密码sudopasswd用户名# 查看全部用户cat/etc/passwd# 查看用户所属组groups用户名二、Ubuntu组管理
Ubuntu 默认自带的「设置-用户」只能开关管理员权限,无法自定义用户组、批量组员管理,如需用户组、UID、登录Shell、家目录**精细化配置,安装工具:
sudoaptinstallgnome-system-tools1、图形化可视化组管理(新手推荐)
(1) 安装专业用户组管理器
sudoaptupdatesudoaptinstallgnome-system-tools(2) 打开工具
- 按
Win(Super)键,搜索Users and Groups(用户和组) - 或者终端直接启动:
users-admin图4:用户组主界面
图4:管理分组弹窗
图6:修改分组成员
(3) 核心组操作步骤
- 点左上角解锁,输入管理员密码
- 点击Manage Groups(管理组)
- 新增组:点
Add,填写组名、自定义GID(可选),勾选要加入的用户 - 修改已有组:选中分组 →
Properties,勾选/取消用户实现加群、退群 - 删除无用分组:选中分组 →
Delete
小提示
修改用户所属组后,需要注销重登录,组权限才会生效。
2、终端命令行组管理(服务器/批量运维首选)
(1) 查看组信息
# 查看本机全部组getent group# 查看单个用户所有归属组(主组+附加组)id用户名groups用户名# 查看某个组有哪些成员getent group 组名(2) 组生命周期(创建/删除)
# 创建自定义用户组sudogroupadd组名# 删除空用户组(组内不能有用户)sudogroupdel组名# 修改组名称/GIDsudogroupmod-n新组名 旧组名(3) 用户加入/退出组(最常用)
追加用户到附加组(⚠️必加-aG,不会清空原有组)
sudousermod-aG组名 用户名# 一次性加入多个组sudousermod-aGsudo,dialout,video 用户名(4) 将用户从指定组移除
sudogpasswd-d用户名 组名修改用户主组(登录默认组,谨慎使用)
sudousermod-g主组名 用户名(4) 创建用户时直接指定归属组
# 创建用户+指定附加组sudoadduser 用户名sudousermod-aG自定义组 用户名# useradd 一次性创建+指定组(适合脚本)sudouseradd-m-s/bin/bash-G组1,组2 用户名sudopasswd用户名# 设置密码三、系统关键内置常用组说明
| 组名 | 权限作用 |
|---|---|
| sudo | 管理员sudo提权核心组 |
| adm | 系统日志查看权限 |
| dialout | 串口、USB串口设备权限 |
| video | 显卡、摄像头硬件访问 |
| audio | 声卡音频设备权限 |
| lpadmin | 打印机配置权限 |
四、典型实操案例
案例1:给普通用户开通管理员权限
sudousermod-aGsudobob# 注销重新登录生效案例2:创建dev开发组,给3个用户统一目录权限
# 1.新建组sudogroupadddev# 2.用户加入组sudousermod-aGdev alicesudousermod-aGdev bobsudousermod-aGdev charlie# 3.文件夹归属给dev组,实现共享读写sudomkdir/home/dev_worksudochownroot:dev /home/dev_worksudochmod770/home/dev_work案例3:把用户从串口组移除,禁止使用串口设备
sudogpasswd-dbob dialout五、配置文件底层(了解即可)
- 全部用户组配置文件:
/etc/group - 用户主组配置:
/etc/passwd - 用户密码:
/etc/shadow
直接编辑文件修改组不推荐,容易权限损坏,优先用命令/图形工具。
六 Ubuntu 用户组&目录权限批量运维脚本(bash可直接运行)
适用场景:批量创建业务用户组、批量绑定用户进组、项目目录归属组权限初始化、共享目录读写权限配置,适配Ubuntu 20.04/22.04/24.04。
脚本整体说明
- 脚本需要root执行
sudo bash group_manage.sh - 变量区集中配置,直接改参数即可复用,无需修改业务逻辑
- 包含:新建用户组、批量用户加入组、共享目录创建、目录属主属组、权限掩码设置、递归修复已有目录权限
group_manage.sh 完整脚本
#!/bin/bashset-euopipefail# ======================【配置区,按需修改】======================# 1. 需要创建的业务分组GROUP_NAME="dev_share"# 2. 需要加入该组的用户列表,空格分隔USER_LIST="user1 user2 user3 ubuntu"# 3. 共享工作目录路径SHARE_DIR="/data/dev_workspace"# 4. 目录权限 770=所有者+组读写执行,其他用户无权限DIR_PERM="770"# 5. 目录归属:root为所有者,业务组为所属组DIR_OWNER="root"# ==============================================================echo"==========开始执行用户组权限配置=========="# 1. 创建用户组(组已存在不会报错)if!getent group"${GROUP_NAME}">/dev/null;thengroupadd"${GROUP_NAME}"echo"✅ 成功创建分组:${GROUP_NAME}"elseecho"ℹ️ 分组${GROUP_NAME}已存在,跳过创建"fi# 2. 循环将所有用户追加到目标组forsingle_userin${USER_LIST};doifid-u"${single_user}">/dev/null2>&1;thenusermod-aG"${GROUP_NAME}""${single_user}"echo"✅ 用户${single_user}加入${GROUP_NAME}组"elseecho"⚠️ 用户${single_user}不存在,跳过"fidone# 3. 创建共享目录,不存在则新建mkdir-p"${SHARE_DIR}"echo"✅ 目录检查/创建:${SHARE_DIR}"# 4. 设置目录归属用户+用户组chown-R${DIR_OWNER}:${GROUP_NAME}"${SHARE_DIR}"# 5. 设置目录权限chmod-R${DIR_PERM}"${SHARE_DIR}"# 配置目录SGID权限:新建文件自动继承父目录的组(核心共享功能)chmodg+s"${SHARE_DIR}"echo"==========配置完成=========="echo"操作总结:"echo"1. 分组:${GROUP_NAME}"echo"2. 成员:${USER_LIST}"echo"3. 共享目录:${SHARE_DIR}"echo"4. 目录权限:${DIR_PERM}+ SGID继承组权限"echo"💡 提示:所有用户注销重新登录,组权限才能生效"使用步骤
- 新建文件:
nano group_manage.sh,粘贴全部代码 - 修改顶部【配置区】的组名、用户名、目录路径
- 赋予执行权限:
chmod +x group_manage.sh - 管理员运行:
sudo ./group_manage.sh
核心功能讲解
- SGID权限(g+s)
共享目录开启后,用户在文件夹内新建文件/文件夹,自动归属dev_share组,所有同组用户可互相读写,解决多人协作文件权限错乱。 usermod -aG
追加附属组,不会覆盖用户原有sudo、audio、video等系统权限,安全。- 幂等执行
分组重复执行、用户重复加入组不会报错,可重复运行修复权限。
扩展适配场景
场景1:多组批量配置
复制多份配置区块,定义GROUP_NAME2、USER_LIST2、SHARE_DIR2循环执行。
场景2:移除用户出组新增函数
在脚本顶部增加函数:
remove_user_group(){localuser=$1localgroup=$2gpasswd-d"${user}""${group}"echo"用户${user}已移出${group}"}# 调用示例# remove_user_group "user1" "dev_share"场景3:清理无用用户组
# groupdel dev_share验证配置是否生效命令
# 查看用户所在全部组idubuntu# 查看分组内全部成员getent group dev_share# 查看目录权限是否带S标识(SGID生效)ls-ld/data/dev_workspace
编程学习
技术分享
实战经验