Ubuntu24.04 无法读取 U盘

一、问题描述

在ARM的ubuntu 24.04系统,插入u盘,在GNOME桌面打开u盘时提示you do not have the permissions necessary to view the contents of "0E53-644F",我的u盘是"0E53-644F"。

ARM系统是经过一次刷机的,我先备份了原本的系统,然后进行了刷机。目前原本系统U盘是只读状态,刷机的系统(在另一台机器上)则完全无法打开U盘。

二、问题成因分析

我的用户名是pi,运行:

bash 复制代码
ls -ld /media /media/pi

发现在刷过机的系统中输出如下:

bash 复制代码
pi@NanoPC-T6-LTS:~$ ls -ld /media /media/pi/
drwxr-xr-x 1 root root 4096 Aug 8 15:56 /media
drwxr-x--- 1 root root 4096 Oct 29 14:29 /media/pi/

在没有刷过机的系统中输出如下:

bash 复制代码
pi@NanoPC-T6-LTS:~$ ls -ld /media /media/pi
drwxr-xr-x 1 root root 4096 Aug 8 15:56 /media
drwxr-x---+ 2 root root 4096 Oct 29 14:37 /media/pi

所有者是 root:root:和原系统一样。

权限是 drwxr-x---:和原系统一样。

关键点:没有 + 号!:这说明,这个目录上没有任何ACL(访问控制列表)。

这意味着什么? 在新系统上,由于没有那张"特别通行证"(ACL),系统只能严格遵守基本权限 drwxr-x---。当 pi 用户(属于"其他人")尝试访问时,系统一看权限是 ---,就直接拒绝了你的访问。

原系统镜像经过了特殊的配置,通过ACLs为默认用户 pi 提供了访问 /media/pi 的便利;而新刷机的系统镜像在备份中丢失了ACL,它没有包含这个针对性的ACL配置。

为什么备份会丢失ACL?

ACL是"扩展属性":在Linux文件系统中,我们常用的 rwx 权限(读、写、执行)被称为基本权限(Basic Permissions)。而ACL(访问控制列表)是一种扩展属性(Extended Attributes)。它们是独立于基本权限之外的、更精细的补充规则。

备份工具的默认行为:大多数标准的备份工具(如 tar, cp, rsync)在默认情况下,只会备份文件的内容和基本权限。它们会忽略ACL、SELinux上下文等所有扩展属性,因为这需要额外的处理,而且并非所有目标文件系统都支持这些属性。

三、正确的备份命令

以rsync为例

bash 复制代码
rsync -aAXHSPz --numeric-ids \
      -e "ssh" \
      --info=progress2 \
      --rsync-path="sudo rsync" \
      --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
      pi@<你的ARM机器IP地址>:/ \
      ~/backups/my_arm_system/

-aAXHSPz: 这是我们的"全家桶"选项,特别为网络传输优化:

-aAXHS 等:和你之前看到的一样,保留归档属性、ACL、扩展属性、硬链接、稀疏文件等,确保100%的完整性。

-P:允许断点续传。在公网环境下,如果网络中断,下次运行时它会从断掉的地方继续,而不是从头再来,这一点至关重要。

-z (compress): 为SSH传输新增的关键选项。它会在传输前压缩文件数据,在传输到目标后再解压。对于公网这种带宽有限的环境,可以极大减少传输的数据量,显著提升备份速度。

-e "ssh": 明确告诉 rsync 使用SSH作为传输通道。数据在公网上将是完全加密的,非常安全。

--rsync-path="sudo rsync": 这是实现远程root权限备份的魔法。当你连接到远程机器时,rsync 默认以 pi 用户身份运行,但 pi 用户没有权限读取系统中的所有文件。这个选项告诉SSH,在远程机器上不要直接运行 rsync,而是运行 sudo rsync。这样,远程的备份进程就拥有了读取一切文件的root权限,从而确保备份的完整性。

--exclude={...}: 我们之前讨论过的,排除所有动态的、虚拟的和临时的文件系统。这完全符合你想要的"静态快照"概念。

pi@<你的ARM机器IP地址>:/: 这是备份的源头。

pi@...: 指定以 pi 用户身份登录SSH。

:: 分隔符。

/: 指定要备份的是远程机器的整个根目录。

~/backups/my_arm_system/: 这是备份的目的地,也就是你本地电脑上的那个文件夹。

相关推荐
HLC++11 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室12 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy14 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕15 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫16 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生17 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1118 小时前
linux基础IO
linux·运维·服务器
BelongPanda20 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯20 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_7779983420 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器