无法从 hfs+ 外部复制

无法从 hfs+ 外部复制

我花了好几天的时间试图弄清楚这一点,但仍然无法解决。我想我已经阅读了关于此问题的每一篇文章,并尝试了所有可以尝试的方法,但我仍然无法从我的 mac 格式的 hfs+ 外部驱动器复制任何文件。如果还有一篇文章我错过了,请见谅。我已经禁用了日志功能,并尝试了所有我能找到的 hfsprogs 命令,但每当我单击外部文件夹并尝试将其复制到我的主目录时,我仍然会收到此信息:“无法处理文件夹 xxx,因为您无权读取其内容。”然后我找到了一篇关于通过终端复制文件来解决此问题的文章。当我尝试在终端中使用我的外部驱动器路径运行 sudo cp -r 命令时,我总是得到“没有这样的文件或目录”的信息。有人还有其他建议给我吗?提前谢谢!

答案1

当我的旧 imac ppc g5 逻辑板出问题时,我也遇到过类似的问题。我失去了对硬盘的访问权限,因此我将硬盘取出并将其连接到硬盘外置盒上。当我尝试将文件从硬盘复制到我的 Ubuntu 盒时,出现了权限错误。我尝试了很多不同的方法来纠正,但都无济于事。唉……下面的方法应该能帮你摆脱困境。

打开终端并输入:

sudo nautilus

使用图形用户界面窗口打开。导航到文件所在的目录,然后复制所需的文件使用相同的 nautilus GUI 窗口导航到要复制到的目录并粘贴到该目录。重复上述操作。

答案2

bindfs 就是答案。它将获取已安装的文件系统,并使用您想要的任何 uid 提供其视图:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

答案3

我知道你问这个问题已经过去了几个月,但我刚刚成功做到了,我会在这里发布给其他人。此外首先关闭日志功能,它必须使 UID 和 GUI 相等;在 MacOs 中,您的用户是 501/20,而在 Ubuntu 中是 1001/99 或更高。请小心,因为您必须让 Ubuntu 显示用户 ID < 1000(如下所述),否则下次启动时您的用户将不会出现!

完整指南位于以下 2 个链接中:

多平台指南,包括 MacOs、Linux 和 Windows

默认情况下,OS X 中的第一个用户的 UID 为 501,但您可以通过进入 OS X 中的“系统偏好设置”,右键单击您的用户,然后点击“高级选项”来仔细检查这一点。如果您的用户 ID 与 501 不同,请在下面的终端命令中将 501 替换为您的其他 UID。

启动 Linux(本例中使用 Ubuntu)并启动终端。首先,我们要添加一个临时用户,因为我们不想编辑当前登录的用户。因此,在终端中运行以下命令,每运行一个命令后按 Enter 键:

sudo useradd -d /home/tempuser -m -s /bin/bash -G admin tempuser

sudo passwd tempuser

出现提示时,为临时用户输入新密码。重新启动并以 tempuser 身份登录。然后,打开终端并输入以下命令,再次在每个命令后按回车键(并将 yourusername 替换为您的 Linux 用户的用户名):

sudo usermod --uid 501 yourusername

sudo chown -R 501:yourusername /home/yourusername

这会将您的 Linux 用户的 UID 更改为 501,并修复您的主文件夹权限,以便您仍然拥有它们。现在,无论您登录的是哪种操作系统,您都应该能够读取和写入 Mac 和 Linux 用户的主文件夹。

您可能还想修复您的登录屏幕,因为默认情况下 Ubuntu 不会列出 UID 小于 1000 的用户。为此,只需打开终端并运行 gksudo gedit /etc/login.defs 并在文本文件中搜索 UID_MIN。将该值从 1000 更改为 501,当您重新启动时,您的用户将列在登录屏幕上。

转至用户的帖子弗罗伯

要从 Linux 端访问 OSX 分区,UID 和 GID 必须与 OSX UID 和 GID 匹配。在 OSX 安装期间,第一个用户和 OSX 管理员被分配 UID 501 和 GID 20。安装 Linux 系统时,用户 ID 从 1000 开始。我们可以更改我们的用户 ID,使其与 Linux 端的 MacOS ID 匹配。要在 Mac 端验证我们的 UID 和 GID,请登录,打开终端并输入 – id。响应将显示所需信息。 已登录用户的 UID 和 GID 无法更改。在 Ubuntu 中,我们需要创建具有管理权限的“Temp”用户,并以“Temp”身份登录时执行该过程。“Temp”用户将使用 sudo -i 更改为 root 用户。以下步骤是针对具有“Root”用户权限的系统编写的,并且 nano 是编辑器。注意:我们所做的只是更改 ID 号,没有其他任何事情。

1.在登录屏幕上,按 Control+Alt+F1。观察我们已进入控制台模式。

2. 以 root 或 Temp 用户身份登录。

编辑文件 /etc/login.defs。输入:

nano /etc/login.defs

找到值 UID_MIN。将其从 1000 更改为 501。找到值 GID_MIN 并将其更改为 501。保存文件并退出。键 - control+x。键 - y。按 - return。编辑文件 /etc/group。输入 -

nano /etc/group

找到显示 dialout:20username) 的行;将值 20 更改为 99。找到显示 (username):1000: 的行并将其更改为 (username):20: 保存文件并退出。键 – ctrl-x 退出 nano。键 – y。按 – return。

编辑文件 /etc/passwd。输入:

nano /etc/passwd

找到显示 (username):1000:1000real name),,,,/home/(username):/bin/bash 的行,并将其更改为 (username):501:20real name),,,,/home/(username):/bin/bash 保存文件并退出。 键 - control+x 退出 nano。 键 - y。 按 - return。 更改主文件夹的文件权限。 输入:

cd /home
chown -R 501:20 (username)

退出控制台模式。键 – control+alt+F7 重新启动。

如果此操作无效,并且您收到一条消息,指出无法更改其中一个文件,则很可能您仍然以(用户名)身份登录到系统某处。尝试重新启动并在登录屏幕上以 temp 身份登录。

相关内容