如何管理 OSX 和 ubuntu 共享卷的权限

如何管理 OSX 和 ubuntu 共享卷的权限

在我的 Mac 上,我使用未记录的 HFS 分区在 OSX 10.8 和 Ubuntu 12.04 之间共享文件。

一开始这是一个不错的想法,因为 Time Machine 会自动备份 OSX 中的卷,但我很快注意到 OSX 和 Ubuntu 会以一种让我感到混乱的方式处理权限。

因此,为了完全查看和更改文件,我一直使用chmod应用权限来允许我完全使用文档。但我不明白为什么我必须继续应用更改一遍又一遍

是否可以永久设置某种权限,以便两个操作系统都能永久遵守?

我猜 777 可以,但我认为这不是明智之举。但只要“其他人”没有获得完全访问权限(第三个 7),我就会在 ubuntu 中的文件上看到一个锁定图标。

答案1

用户名称无关紧要。HFS+ 和 Linux 原生文件系统中的权限都以用户身份存储ID(UID),即与用户名关联的数字。在 Ubuntu 中,与大多数现代 Linux 发行版一样,第一个用户的默认 UID 为 1000。在 OS X 中,第一个用户的默认 UID 为 501。因此,在共享编码 UID 值的媒体时,UID 值可能不匹配。

解决此问题的一种方法是设置宽松的权限(模式值,如rwxr-xr-x,或八进制的 755)。请注意,权限八进制代码与 UID 值不同。在任一操作系统中,您都可以使用命令设置文件使用的默认权限umask,该命令指定要使用的位值已删除来自文件权限。例如,umask 022删除组的写入权限和其他权限,导致rwxr-xr-x新文件的权限为 755 ( )(如果删除了执行权限位,则为 644,这是文件的常见做法)。不过,这主要是命令行工具;如果您主要是 GUI 用户,则需要找到另一个工具来完成这项工作,可能与您的桌面环境的默认设置有关。这可能不太清楚,文档记录不全。此外,以这种方式设置宽松的权限可能会带来安全隐患,尤其是如果您的系统是多用户系统。

更好的方法是在 Linux 和 OS X 之间同步您的帐户 UID。您可以使用以下命令轻松更改 Linux 中的 UID 值usermod,如下所示:

usermod -u 501 dale

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

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

理论上,您可以用类似的方式更改 OS X 帐户的 UID 以实现相同的目标。不过,我对 OS X 帐户维护工具不太熟悉,因此无法提供明确的操作说明。调整 OS X 值的优点是您不必UID_MIN在 Linux 中进行调整。

如果您的计算机上有多个帐户,您应该对它们全部进行调整,以使它们在您的操作系统安装中保持同步。

还有一点:组 ID (GID) 值的存储方式类似。如果我没记错的话,Ubuntu 为每个帐户分配一个与其 UID 值相同的 GID 值。我不记得 OS X 默认做了什么。您可能希望以类似于 UID 更改的方式调整这两个操作系统的 GID 值,但这可能不如调整 UID 值那么重要。

编辑:如果您想在 macOS/OS X 而不是 Ubuntu 中更改 UID(和 GID,如果需要),您可以这样做。由于 macOS 中的这种修改超出了本网站的范围,我只会链接到几个提供在 macOS 中执行此操作的过程的页面:

答案2

我发现有时您可以单击要共享的文件夹并按 command + I。然后单击锁并输入密码(如果未解锁),然后在“所有人”处选择读取和写入。

另一个可行的方法是将文件夹设置为“共享文件夹”,您可以在系统偏好设置中的共享偏好设置窗格中执行此操作。
转到系统偏好设置 > 共享 > 文件共享。然后确保选中文件共享框,并使用加号按钮添加要共享的文件夹。然后您可以更改读写权限。

一个注意事项:使用第二个选项还将打开您的计算机以允许通过互联网访问您选择的文件夹(仅在启动到 os x 时)!!确保您有一个安全的密码,并且您可能在公共场所禁用它(别忘了戴上锡箔帽!)

答案3

打开终端并:

在 OS X 中,尝试此操作

sudo dscl / -create /Users/<ubuntu-username>
sudo dscl / -append /Groups/<os-x-username> GroupMembership <ubuntu-username>

在 Ubuntu 中,运行此命令

sudo adduser --system --no-create-home --ingroup <ubuntu-username> <os-x-username>

现在您应该能够使用774甚至770获取文件权限。

相关内容