设置多个 Linux 实例访问共享硬盘的权限

设置多个 Linux 实例访问共享硬盘的权限

我有一台带两个硬盘的笔记本电脑,其中一个硬盘上有两个 Linux 系统,另一个硬盘上存储着我的所有数据。有两个系统,一个用于工作,另一个用于个人用途(否则就无法停止拖延)。我有一个共享存储硬盘,因为我想从两个系统访问一些数据,例如图片、音乐、文件传输。

到目前为止,我无法掌握 Linux 文件权限,因此我可以在共享存储上共享/写入/编辑来自两个系统的文件。当我在网上搜索解决方案时,大多只有关于 Linux 发行版之间共享主目录的信息。但我的 Linux 发行版位于两个单独的分区(在同一硬盘上)。

显然,我尝试在两个系统上执行chown和这样的命令chmod。这导致我可以从两个系统访问和写入文件,但只能从其中一个系统删除文件。而且这甚至不一致,因为它还取决于哪个系统创建了文件(我想?)。

然而,潜在的问题是:这两个 Linux 系统如何相互看待?文件权限存储在哪里?如何在两个系统之间统一它们?这通常是一种糟糕的设置吗?还有更好的替代方案吗?

如果我应该指定任何内容(例如我执行的命令),请告诉我!

顺便说一下我用的是 arch(嗯,实际上是 manjaro)

答案1

(我假设该分区是 Linux 格式,不是 NTFS。)

您需要授予共享文件夹的全球权限,例如通过以下命令:

sudo chmod -R ugo+rwx /path/to/your/folder

简要说明:

须藤:将您的权限提升至root。
修改模式:更改权限的命令
-R:对同级文件夹进行递归 :- 用户
G:- 团体
o:- 其他
权限:读取 - r、写入 - w、执行(或搜索目录) - x

虽然这将使文件夹在两个 Linux 发行版之间可用,但您可能仍会遇到每个发行版使用不同用户 ID 的情况。最好同步两个发行版上的用户 ID。

HFS+ 和 Linux 原生文件系统中的权限都以用户 ID (UID) 的形式存储,UID 是与用户名关联的数字。在 Ubuntu 中,与大多数现代 Linux 发行版一样,第一个用户的 UID 默认为 1000。

更好的方法是在两个 Linux 发行版之间同步您的帐户 UID。您可以使用 用户模式 命令,例如:

usermod -u 501 dale

帖子 如何管理 OSX 和 ubuntu 共享卷的权限 包含一些针对 Linux 的优秀建议:

此命令将 UID 设置为dale501。但也有一些重要的注意事项:

  • 修改之前,您应该先退出要修改的帐户。尝试修改正在使用的帐户将导致该帐户开始出现异常行为。
  • usermod必须用作root。您可以通过 执行它sudo,但从您正在修改的帐户执行此操作是极其不明智的。因此,您需要输入密码并直接root登录或从第二个用户帐户使用。rootsudo
  • usermod命令不会更改相关用户所拥有的任何文件的所有权。要调整这些文件的所有权,您需要找到它们,然后使用 更改其所有权chown。大多数文件都位于用户的主目录中,因此,在更改 的 UID 后chown -R dale: /home/dale键入,将更改 的大部分文件以使用新的 UID 编号。但某些用户的文件可能位于其他地方。键入将查找所有使用旧 UID(假设为 1000)的文件。请注意,此命令可能需要几分钟才能完成。要加快速度,请卸载您确定不会找到任何匹配项的任何文件系统,如 FAT 或 NTFS 卷。rootdaledalefind / -uid 1000find
  • 如果您访问 FAT 或 NTFS 卷,则它们的 UID 值由安装时的选项决定。如果您使用 GUI 文件管理器,则 UID 值很可能设置为运行文件管理器的任何人,因此您无需执行任何特殊操作。/etc/fstab 但是,如果您通过条目安装卷,则可能需要调整它指定的 UID 值。
  • Ubuntu 将其用于 UID 的最小值存储在 中/etc/login.defs。如果您未能更改UID_MIN此文件中的值,您可能会发现您的帐户似乎会从 GUI 登录屏幕中“消失”,并且可能从某些其他系统中消失。因此,您应该编辑该文件。

答案2

当我在网上搜索解决方案时,大多数信息都是关于 Linux 发行版之间的共享主目录。但我的 Linux 发行版位于两个单独的分区(在同一硬盘上)。

这基本上是同一件事。如果在两种情况下您处理的是同一种文件系统,那么共享内部分区(例如 /home)和共享外部磁盘之间实际上没有区别。

这两个 Linux 系统如何互相看待?

他们没有。

文件权限存储在哪里?

权限和所有权信息是每个文件或文件夹元数据的一部分 - 它们作为文件系统结构的一部分存储在文件所在的同一磁盘上,位于文件的名称、修改时间等旁边。没有单独的“权限存储”。

文件所有者通过其数字 UID 存储(如id和所示ls -l -n)。

与 Windows 不同,Linux 文件系统通常不存储任何有助于它们区分不同操作系统上相同 UID 的内容。

两个系统之间如何统一?

如果可能的话,请将您的用户帐户更改为在两个系统上具有相同的 UID。

例如,如果某个文件显示其所有者为用户 ID 1000,而您自己的帐户的 UID 也为 1000,那么无论操作系统是什么,您都将被识别为该文件的所有者。(无论用户名称匹配与否无关紧要。

usermod --uid工具将允许您更改自己的 UID,并相应地更改您的主目录。

顺便说一下,我用的是 arch (嗯,实际上是 manjaro)

¯\_(ツ)_/¯

相关内容