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


8

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

一开始这是一个不错的主意,因为Time Machine将自动备份OSX中的卷,但是我很快注意到OSX和Ubuntu对该许可造成了混乱,从而使我感到混乱。

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

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

我想777可以工作,但是我认为这不是明智的选择。但是,只要“其他”没有完全访问权限(第三名),我就会在ubuntu中的文件上看到一个锁定图标。


1
您在OS X和Ubuntu中都使用相同的用户名吗?如果您使用不同的用户名,则可以尝试将Ubuntu用户名添加到OS X中的组中,反之亦然。这样,您只需要774权限。
埃德温

@edwin感谢您的提示。如何向用户组添加用户名?使用777合理还是不安全?

Answers:


12

用户无关。HFS +和Linux本地文件系统中的权限均以用户ID(UID)的形式存储,用户ID是与用户名关联的数字。与大多数现代Linux发行版一样,在Ubuntu中,默认情况下,第一个用户的UID为1000。在OS X中,默认情况下,第一个用户的UID为501。因此,当共享编码UID值的媒体时,UID值可能不匹配。

解决此问题的一种方法是设置宽松的权限(模式值,如rwxr-xr-x,或755的八进制)。请注意,权限八进制代码与UID值不同。在这两种操作系统中,您都可以使用以下umask命令设置用于文件的默认权限,该命令指定要从文件权限中删除的位值。例如,umask 022删除该组的写权限和其他权限,结果为755(rwxr-xr-x)对新文件的权限(如果删除了执行权限位,则为644,这是文件的常见做法)。但是,这很大程度上是一个命令行工具。如果您主要是GUI用户,则需要找到其他工具来完成这项工作,这可能与您的桌面环境的默认设置有关。这可能是晦涩难懂的,且记录不充分。同样,以这种方式设置宽松的权限也会带来安全缺陷,特别是如果您是多用户系统。

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

usermod -u 501 dale

此命令将UID设置dale为501。但是,有一些重要警告:

  • 您应该先注销要修改的帐户,然后再进行修改。尝试修改使用中的帐户将导致该帐户开始出现异常行为。
  • usermod必须用作root。您可以通过来执行它sudo,但是在极端情况下,建议不要从要修改的帐户执行该操作。因此,您需要root输入密码并root直接登录,或者sudo从第二个用户帐户使用。
  • usermod命令不会更改该用户拥有的任何文件的所有权。要调整这些文件的所有权,您需要找到它们,然后使用更改它们的所有权chown。大多数文件将位于用户的主目录中,因此chown -R dale: /home/daleroot在更改dale的UID 后键入为,将更改大多数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)值以类似的方式存储。IIRC,Ubuntu为每个帐户分配一个与其UID值相同的GID值。我不记得默认情况下OS X会做什么。您可能想要以类似于UID更改的方式来调整两个OS的GID值,但这并不像调整UID值那么重要。

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


哇谢谢你!这是一个写得很好的综合答案-解释了问题的全部内容!该解决方案帮助我获得了完美的共享分区,而没有做出任何妥协。最初,仍然存在文件所有权问题:OSX中的“忽略此卷的所有权”不会让我在ubuntu(锁定图标)下运行时对OSX的新创建文件进行写访问,反之亦然。因此,我最终使用与OSX中相同的用户名在ubuntu中设置了一个新帐户,然后再次更改了UID。

现在,我可以从两个操作系统完全访问现有文件和新创建的文件,而不必更改访问限制。由于这是一个示例性的答案,因此一旦问题有资格获得赏金,我就会给您赏金。;-)

按照您的说明进行操作后,我尝试登录ubuntu。当我按下Enter键时,我看到了黑屏一秒钟,然后又回到了登录屏幕。从我的临时帐户将所有内容更改回标准1000后,我可以再次登录。知道为什么我无法使用新的uid登录吗?
borisdiakur'1

如果您忽略更改自己的主目录上的权限,则可能是造成此问题的原因。如果您使用的是13.10,也可以想象Ubuntu中的某些更改已经发生,如果您不进行调整,则会导致问题UID_MIN
Rod Smith

1
更新:我只是在系统上执行了usermod,所以不必更改主目录的权限!仅在usermod(以root用户身份)之后,一切正常。
krumpelstiltskin

0

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

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

一个注意事项:使用第二个选项还将打开您的计算机,以允许通过Internet访问您选择的文件夹(仅在引导至os x时)!让共享拥有一个安全的密码,并且您可能在公共场所禁用了该密码(别忘了戴上锡箔帽子!)


这在两种情况下都有效,但是我只会使用第一种选择。但是,允许“每个人”访问(即许可777)似乎太激进了,或者不是吗?这样安全吗?

1
好吧,不建议您肯定。“每个人”都将能够使用那些许可权来修改和阅读文档(但我认为这主要是unix的东西)。它绝对更安全使用774
埃德温

0

打开一个终端,然后:

在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对文件的权限。


这行不通。OSX命令也不起作用。但是我设法通过OSX中的GUI界面添加了ubuntu用户。将另一个操作系统的用户添加到正在运行的操作系统并将两个操作系统的权限更改为774后,Ubuntu仍然无法获得对共享分区上所有文件的完全访问权限。例如,某些子目录我无法打开(权限为774)。因此,我必须将其更改为777才能打开它。这些亲切的许可是否安全?

至少在Ubuntu中,该命令应该可以正常工作,在添加答案之前,我已经尝试了一下。您确定<ubuntu-username>要用Ubuntu中的实际用户名替换<os-x-usernanme>吗(适用于)?您能否更具体地说明OS X在尝试运行此命令时出现的错误?
埃德温

我只说过该命令在OSX中不起作用。如果我没记错的话,该命令adduser不会退出。

我已经编辑了答案。尝试一下。我不确定,因为我不熟悉OS X用户管理。在OS X中,您还可以使用GUI创建Ubuntu用户(使用您在Ubuntu中使用的用户名),然后将其添加到实际的OS X用户组中。
埃德温

不要紧。在使用CMD + I时,OSX提供了一个简单的GUI,您可以在其中轻松创建和添加用户。但这毕竟不能解决问题。我最终使用了777权限。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.