[嵌入式Linux] 技术文章 | Ubuntu权限管理攻略

[复制链接]
gztwdz4379 发表于 2025-8-15 10:29 | 显示全部楼层 |阅读模式
本帖最后由 gztwdz4379 于 2025-8-15 10:44 编辑

前言:在 Linux 系统生态中,Ubuntu 凭借其易用性和稳定性成为众多开发者与企业的首选操作系统。而权限管理作为 Ubuntu 系统安全的核心支柱,直接决定了系统的稳定性、数据安全性和操作规范性。本文将从基础原理到实战操作,全面解析 Ubuntu 权限管理的核心知识。



一、权限管理三角:用户、组与权限


Ubuntu 采用多用户多任务的操作系统设计,其权限管理体系建立在 "用户 - 组 - 权限" 的三角模型之上,理解这一模型是掌握权限管理的基础。
1.1 用户体系:三种身份的明确划分
Ubuntu 系统中将用户划分为三种核心身份:
  • root 用户:拥有对系统的绝对控制权,可执行包括删除系统文件、修改核心配置等所有操作。默认情况下,Ubuntu 为了安全起见会隐藏 root 用户的直接登录入口。
  • 普通用户:日常操作的主要身份,权限受限,仅能在授权范围内操作。
  • 系统用户:由系统自动创建的特殊用户,用于运行特定服务(如 www-data 用于 Web 服务),不允许交互式登录。
id命令可查看当前用户的身份,cat /etc/passwd命令可查看系统中所有用户的列表。
1.2 用户组:权限的批量管理单元
用户组是实现权限批量管理的有效机制,每个用户至少属于一个主组(创建时默认分配的组,通常与用户名同名),还可以加入多个附加组以获取特定权限集合。groups命令可查看当前用户所属的所有组,cat /etc/group命令可查看系统中所有组的配置信息。
1.3 权限类型:文件操作的三重控制

Ubuntu 对文件和目录定义了三种基本权限,每种权限又分别对应文件所有者、所属组和其他用户三类对象:
  • 读权限(r):允许查看文件内容或列出目录中的文件
  • 写权限(w):允许修改文件内容或在目录中创建 / 删除文件
  • 执行权限(x):允许运行可执行文件或进入目录
权限有两种表示方式:字符型(如 rwxr-xr--)和数字型(r=4、w=2、x=1)。例如 rwxr-xr-- 对应数字权限 754(所有者 7=4+2+1,所属组 5=4+1,其他用户 4)。


二、root 用户安全配置


在开发板环境中,通常Ubuntu 默认使用 root 用户直接登录,方便测试,但同时也存在安全隐患。这里以我们RK3568评估板为例,为root 用户设置密码,优化登录配置:
2.1 root 密码设置
为 root 用户设置强密码可有效防止未授权访问,操作步骤如下:
  1. # 执行密码设置命令
  2. passwd root
  3. # 系统会提示输入新密码(输入时无字符显示)
  4. new password:
  5. # 再次输入确认密码
  6. new password:
  7. # 出现"passwd: password updated successfully"提示即完成设置


2.2 修改登录配置
默认配置中可能存在自动登录的授权参数,需要通过修改系统服务配置文件移除:
  1. # 第一步:备份原始配置文件(关键操作必须先备份)
  2. sudo cp /etc/systemd/system/serial-getty\@.service.d/override.conf /etc/systemd/system/serial-getty\@.service.d/override.conf.bak
  3. # 第二步:编辑备份文件
  4. vi /etc/systemd/system/serial-getty@.service.d/override.conf.bak
  5. # 文件原始内容
  6. [Service]
  7. ExecStart=
  8. ExecStart=-/sbin/agetty -a root -keep-baud 115200,38400.9600 %I STFRM

  1. # 第三步:移除自动登录参数
  2. # 将第二行中的"-a root"参数删除,修改后内容为:
  3. [Service]
  4. ExecStart=
  5. ExecStart=-/sbin/agetty -keep-baud 115200,38400.9600 %I STFRM

  1. # 第四步:恢复配置文件
  2. sudo cp /etc/systemd/system/serial-getty@.service.d/override.conf.bak /etc/systemd/system/serial-getty@.service.d/override.conf -f
  3. # 第五步:设置服务自启动
  4. systemctl enable serial-getty@.service
  5. # 第六步:重启系统使配置生效
  6. reboot

配置修改后,系统将要求输入密码才能通过串口登录 root 用户,大幅降低未授权访问风险。


三、用户与组的精细化管理


合理的用户和组管理是权限体系的基础,通过命令行工具可实现用户全生命周期的管理。
3.1 用户管理核心命令
  • 创建用户:sudo adduser 用户名,会自动创建同名主组并提示设置密码
  • 删除用户:sudo deluser 用户名(仅删除用户)或sudo deluser --remove-home 用户名(同时删除用户主目录)
  • 修改用户密码:sudo passwd 用户名
  • 切换用户:su - 用户名("-" 表示切换环境变量,完全切换身份)

3.2 组管理核心命令
  • 创建组:sudo addgroup 组名
  • 删除组:sudo delgroup 组名
  • 将用户加入组:sudo usermod -aG 组名 用户名(-a 表示追加,避免覆盖原有组)
  • 将用户移出组:sudo gpasswd -d 用户名 组名
  • 查看组成员:grep 组名 /etc/group


四、文件与目录权限设置


文件和目录的权限控制是日常操作中最频繁的权限管理场景,掌握相关命令能有效避免权限问题导致的操作失败。
4.1 权限的基础修改
  • 修改权限(chmod):
  1. # 字符方式:给所有者添加执行权限
  2. chmod u+x test.c
  3. # 数字方式:设置权限为所有者读写执行,所属组读执行,其他用户只读
  4. chmod 754 test.c
  5. # 递归修改目录及子内容权限
  6. chmod -R 755 /data/project


  • 修改所有者(chown):

  1. # 修改文件所有者为user1
  2. chown user1 test.c
  3. # 同时修改所有者和所属组
  4. chown user1:group1 test.c
  5. # 递归修改目录所有者
  6. chown -R user1:group1 /data/project


修改所属组(chgrp):
  1. chgrp group1 test.c

4.2 常见权限问题排查
  • "Permission denied" 错误:检查文件权限、所有者和所属组,以及父目录权限
  • sudo 命令被拒绝:检查用户是否在 sudo 组或 sudoers 配置
  • 服务启动失败:检查服务相关文件权限是否正确,尤其是日志目录和配置文件


结语


Ubuntu 权限管理为系统构建了安全可靠的权限控制体系,通过用户组划分、权限配置到 sudo 精细授权的流程设计,可实现从基础操作到多样场景的安全防护。本文涵盖从核心原理到实战命令的完整解析,开发者可根据实际场景调整权限策略,有效保障系统稳定与数据安全。想了解更多相关技术知识或产品信息,请关注眺望电子公众号并联系我们,我们将竭诚为您服务!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

11

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部