授予不同计算机对 USB 驱动器上文件的访问权限

授予不同计算机对 USB 驱动器上文件的访问权限

全部,

我有两台电脑:家用电脑和办公电脑。我对它们的设置非常相似(虽然家用电脑是 Linux Mint 13,办公电脑是 Ubuntu 11.10)。假设我在办公电脑上的帐户名为“me_work”,在家电脑上的帐户名为“me_home”。

我使用 USB 驱动器将文件从一台计算机共享到另一台计算机。我编写了一个脚本,将该驱动器的不同目录挂载到每个系统上的不同目录中。例如,我执行如下操作:

mount --bind /media/USB/MyProject $HOME/Projects/MyProject

当我在任意一台电脑上工作时,我都会在 $HOME/Projects 中处理内容,而这些内容都会保存在 USB 驱动器上。如果我将 USB 驱动器从一台电脑换到另一台电脑,文件仍然会保留在那里。

但有一个问题。

如果我在工作电脑上创建了一个文件,那么该文件将归用户“me_work”和相关组“me_work”所有。如果我尝试在家用电脑上操作该文件,则会失败,因为我没有修改它们的权限。此外,我的家用电脑上不认识“me_work”用户或组。

现在,我可以sudo进入所有内容,但我并不总是使用终端 - 有时我在网络服务器上执行操作,有时我使用 IDE 等。

我该如何设置才能使 USB 驱动器的内容可以被我的两个帐户读取?我尝试在两台计算机上添加一个名为“me_usb”的新组,并将两个帐户都设置为该组的成员。然后将 USB 上目录的 gid 设置为“me_usb”,并使其可组写入。不幸的是,这没有效果。

答案1

假设目标是在指定的两个位置拥有“项目”文件夹的相同副本,那么我必须有更清晰的方法来实现此目的。

使用您表达的方法,解决方案取决于挂载在 /media/USB 上的 USB 驱动器分区的文件系统类型以及所使用的挂载选项。
另请注意,存储在文件系统上的可能权限数据(uid 和 gid)是一个数值(例如 1000 或 1001),它对应于用户名和组名(me_work、me_home、me_usb 等)。因此,假设挂载操作在您的两个系统上都是相同的,如果 me_work 和 me_home 具有相同的 uid 值(添加的第一个用户通常为 1000),则在您的工作或家庭系统上使用时,文件将分别显示为 me_work 或 me_home 所拥有。

要显示 /dev/USB 的当前挂载参数,请在终端中发出以下命令:

mount | grep /media/USB

要显示用户当前的 uid 和 gid,请在终端中输入以下命令:

id


现在,我将解释以下常见文件系统所需的内容:

fat32/vfat:我们可以强制让 USB 驱动器上的所有文件显示为相应系统上的用户所拥有。为此,您需要在挂载 /media/USB 时设置挂载选项 rw、uid 和 gid。要在挂载 /media/USB 之后
但在绑定之前设置这些选项,请以 root 身份发出以下命令:

mount -o remount,rw,uid=`id -u`,gid=`id -g` /media/USB

ext4 或 ext3:如果两个系统上的组 me_usb 具有相同的 gid 值,则您应该能够使用通用组 me_usb 方法。创建组 me_usb 后,您可以通过编辑文件 /etc/group 中的条目来更改其在每个系统上的 gid。其条目应类似于以下内容:

...
me_usb:x:<gid-number>:<me_work or me_home>
...

或者,您可以使用名为 bindfs 的软件来代替“mount --bind”步骤。与 fat32/vfat 部分中的 uid 和 gid 映射类似,bindfs 可以使用不同的权限将 USB 磁盘文件系统挂载到其他地方。superuser.com 上的一篇文章对此进行了解释这里

答案2

用户/组的名称并不重要;重要的是数字。

这是我在我的条目中/etc/passwd

rici:x:1009:1000:rici,,,:/home/rici:/bin/bash

这说明我的用户 ID 是 1009,我的(主)组是组号 1000(第二个 1000)。现在查看/etc/group,我看到:

adm:x:4:rici
rici:x:1000:

这表明用户 ID 为 rici 也是组号为 4 的成员adm,并且存在一个组rici号为 1000 的组。

当我创建一个文件时,它在文件系统中被记录为属于用户号 1009 和组号 1000。这是文件系统中唯一的信息。系统实用程序使用/etc/group/etc/passwd文件将数字转换为友好的字母标签。

如果要在两台计算机之间进行同步,则必须确保两台计算机上的用户和组编号相同。一旦您有大量文件,这就会变得很困难,因为虽然您可以更改用户 ID 转换为的编号,但您必须更改系统上每个文件的所有者以记录用户编号。但是,在您的家用计算机上创建一个新组,该组具有与工作计算机上某个组相同的编号,然后使用该组作为所有共享文件的所有者,这应该相当简单。

相关内容