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

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

起初这是一个很好的想法,因为Time Machine将自动备份OSX中的卷,但我很快就注意到OSX和Ubuntu混淆了权限,这让我感到麻烦。

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

是否可以永久设置某种权限,以便两个操作系统永久尊重?

我猜777会起作用,但我认为这不是一个聪明的事情。 但只要“其他人”没有获得完全访问权限(第三个七),我就会在ubuntu中看到文件上的锁定图标。

用户无关紧要。 HFS +和Linux本机文件系统中的权限以用户ID (UID)的forms存储,用户ID是与用户名关联的数字。 在Ubuntu中,与大多数现代Linux发行版一样,默认情况下第一个用户的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 

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

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

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

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

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

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

  • 在Mac OS X上更改用户的用户ID(10.6 – 10.12)
  • Apple社区中的“更改您的UID和GID”
  • “在SuperUser上改变雪豹上的uid / gid的后果”

我发现有时你可以点击你想要分享的文件夹并点击命令+我。然后点击锁定并输入你的密码如果它没有解锁接下来,那么它说“每个人”选择读写。

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

ONE注意:使用第二个选项也会打开您的计算机以允许通过互联网访问您选择的文件夹(仅在启动到OS x时)! 分享你有一个安全的密码,你可能在公共场所禁用它(别忘了拿你的锡箔帽!)

打开终端并:

在OS X中,试试这个

 sudo dscl / -create /Users/ sudo dscl / -append /Groups/ GroupMembership  

在Ubuntu中,运行它

 sudo adduser --system --no-create-home --ingroup   

现在,您应该可以使用774甚至770来获取文件权限。