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/: 这是备份的目的地,也就是你本地电脑上的那个文件夹。

相关推荐
南棱笑笑生3 小时前
20251028在Ubuntu20.04.6上编译AIO-3576Q38开发板的Buildroot系统
大数据·linux·服务器·rockchip
FreeBuf_3 小时前
Ubuntu内核曝严重UAF漏洞,可致攻击者获取Root权限
linux·运维·ubuntu
Jason_zhao_MR3 小时前
RK3576机器人核心:三屏异显+八路摄像头,重塑机器人交互与感知
linux·人工智能·嵌入式硬件·计算机视觉·机器人·嵌入式·交互
☆璇3 小时前
【Linux】数据链路层
linux·服务器·网络
阿巴~阿巴~5 小时前
线程局部存储(Thread-Local Storage, TLS)
linux·服务器·开发语言·c++·线程·虚拟地址空间·线程局部存储
BAGAE5 小时前
MQTT 与 HTTP 协议对比
java·linux·http·https·硬件工程
半梦半醒*6 小时前
k8s——资源管理
linux·运维·docker·容器·kubernetes·自动化
带土16 小时前
30. 文件IO (1)
linux·c语言
gfdgd xi6 小时前
GXDE For deepin 25:deepin25 能用上 GXDE 了!
linux·运维·python·ubuntu·架构·bug·deepin