用户名无关。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/dale
,root
在更改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中执行此操作的过程:
774
权限。