Javier Gonzalez Asked: 2010-11-08 16:26:15 +0800 CST2010-11-08 16:26:15 +0800 CST 2010-11-08 16:26:15 +0800 CST 解决多个linux安装使用外置EXT4硬盘时的权限问题 772 我有一个外置硬盘,因为我只使用 Ubuntu 和 Fedora,所以我决定将我的硬盘格式化为 ext4,一切都很好。 问题是当我安装驱动器时,我需要更改权限以便可以读写。 我应该使用什么样的权限?管理我的用户名? filesystem permissions ext4 users external-hdd 8 个回答 Voted JanC 2010-11-08T16:54:09+08:002010-11-08T16:54:09+08:00 最简单的解决方案是确保您的 Ubuntu 和 Fedora 用户帐户具有相同的用户 ID (UID)。 我认为 Fedora 默认从 500 开始用户帐户,而 Debian 和 Ubuntu 从 1000 开始,因此很可能在一个操作系统中您是用户编号 500,而在另一个操作系统中您是用户编号 1000。文件系统使用此 UID 编号跟踪权限,因此如果您确保他们具有相同的 UID,他们将被视为同一用户,并且不会发生权限问题。 我认为你能做的最好的就是让它们都 UID = 1000,所以在 Fedora 系统中更改 UID,然后确保外部磁盘上的所有文件和 Fedora 安装中用户的 $HOME 中的所有文件都归 UID 1000 所有。之后你应该没有权限问题了。 Best Answer user2367 2010-11-08T16:38:08+08:002010-11-08T16:38:08+08:00 虽然可能是我的蹩脚,但我将不得不用另一个问题来回答这个问题。如果我们谈论的只是一个操作系统,那么它要么是 sudo chown -R (user name) /dev/(device name) ( Ubuntu ) 要不就 chown -R (user name) /dev/(device name) fedora - 不sudo,只需从 root 运行命令。 面条刮板部分,以及我没有任何好的答案的部分,是如何制作它,这样当你在发行版之间来回切换时,你不必手动重新输入。我几乎很想将这条线添加到 my~/.bashrc中,但可能有更好的方法我不知道或还没有想到。 maco 2010-11-08T16:38:15+08:002010-11-08T16:38:15+08:00 在 /etc/fstab 中,您可以将 uid=1000 (在 Ubuntu 中 - 在 Fedora 中为 500 )设置为您的用户拥有的驱动器(假设您是第一个用户,yada yada yada ...如果不是,您的用户的uid from id) 和 umask=000 如果您希望所有用户都可以访问(或者 077 仅用于 uid= 指定的用户 - 这是一个掩码,因此您将 chmod 设置为相反的内容) 有关使用 /etc/fstab 的更多信息:http: //ubuntulinuxtipstricks.blogspot.com/2008/02/fun-with-etcfstab.html gavenkoa 2016-04-02T09:19:37+08:002016-04-02T09:19:37+08:00 不幸的是,Linux 内核在 ext2/ext3/ext4 FS 上强制执行 POSIX 权限。 您可以解决共享组的 POSIX 权限。我问了相应的问题:https ://unix.stackexchange.com/questions/273144/predefined-group-ids-across-linux-distros/但毕竟我做了自己的研究。 我发现 Debian、Ubuntu、RedHat、Fedora、CentOS、Suse、FreeBSD、OpenBSD、NetBSD、MacOSX、Solaris 上的 sys 组共享 ID 为 3。 考虑到这样的发现,一种解决方案可能如下所示: $ sudo chgrp -R sys /mnt/data/dir $ sudo chgmod -R g+s /mnt/data/dir $ sudo fsetacl -R -m g:sys:rwx /mnt/data/dir $ sudo fsetacl -R -d -m g:sys:rwx /mnt/data/dir 和这种风格(无论何时在 Linux/FreeBSD/MacOSX/Solaris 上): $ sudo adduser user sys 也可以看看: https://unix.stackexchange.com/questions/126213/external-hard-drive-permissions-ext4/ 如何挂载 ext4 分区并拥有写权限? https://serverfault.com/questions/306344/sharing-an-ext3-ext4-partition-on-external-drive/ jadelord 2018-05-21T00:17:09+08:002018-05-21T00:17:09+08:00 这是@gavenkoa 使用共享组的方法的轻微变化,不涉及修改已安装的驱动器。 检查已安装驱动器中使用的组 ID (GID)。 su cd /mnt/data/dir # or wherever it is mounted ls -l 假设您看到类似于以下内容: drwxr-xr-x 3 12588 12000 4096 30.06.2017 11:22 Documents/ 这意味着12000是驱动器中数据的当前 GID,该数据可以被组中的任何其他用户读取和执行(但不能写入)。创建一个新组(例如driveusers)并将您当前的用户添加到新组: groupadd -g 12000 driveusers sudo gpasswd -a $USER driveusers # add the current user to the new group sudo chmod 770 /mnt/data/dir # optional, just to ensure the drive mount is accessible to user and group of the drive d3rdon 2014-03-11T06:38:34+08:002014-03-11T06:38:34+08:00 您可以尝试使用 exfat 或 ntfs。对我来说,它是这样工作的。但我现在不知道它是否适用于每个文件权限。我想不是。 horizonbrave 2018-09-14T18:36:39+08:002018-09-14T18:36:39+08:00 我找到了其他解决方案: https://unix.stackexchange.com/questions/422656/how-to-make-an-ext4-formatted-usb-drive-with-full-rw-permissions-for-any-linux-m/468933#468933 https://unix.stackexchange.com/a/273705 有了这个: sudo chgrp -R sys /mnt/data/dir sudo chmod -R g+s /mnt/data/dir sudo setfacl -R -m g:sys:rwx /mnt/data/dir sudo setfacl -R -d -m g:sys:rwx /mnt/data/dir 和这个味道: sudo adduser user sys 您的用户可以在/dir. @jadelord @ givenkoa 您认为现在可以对您为 Ubuntu(或 Fedora)用户提出的解决方案进行改进吗?谢谢 living being 2022-08-23T13:24:19+08:002022-08-23T13:24:19+08:00 运行 Linux 上默认安装的“磁盘”应用程序,然后单击齿轮并选择“获取所有权”。选中“递归模式”框并点击确定。
最简单的解决方案是确保您的 Ubuntu 和 Fedora 用户帐户具有相同的用户 ID (UID)。
我认为 Fedora 默认从 500 开始用户帐户,而 Debian 和 Ubuntu 从 1000 开始,因此很可能在一个操作系统中您是用户编号 500,而在另一个操作系统中您是用户编号 1000。文件系统使用此 UID 编号跟踪权限,因此如果您确保他们具有相同的 UID,他们将被视为同一用户,并且不会发生权限问题。
我认为你能做的最好的就是让它们都 UID = 1000,所以在 Fedora 系统中更改 UID,然后确保外部磁盘上的所有文件和 Fedora 安装中用户的 $HOME 中的所有文件都归 UID 1000 所有。之后你应该没有权限问题了。
虽然可能是我的蹩脚,但我将不得不用另一个问题来回答这个问题。如果我们谈论的只是一个操作系统,那么它要么是
( Ubuntu )
要不就
fedora - 不
sudo
,只需从 root 运行命令。面条刮板部分,以及我没有任何好的答案的部分,是如何制作它,这样当你在发行版之间来回切换时,你不必手动重新输入。我几乎很想将这条线添加到 my
~/.bashrc
中,但可能有更好的方法我不知道或还没有想到。在 /etc/fstab 中,您可以将 uid=1000 (在 Ubuntu 中 - 在 Fedora 中为 500 )设置为您的用户拥有的驱动器(假设您是第一个用户,yada yada yada ...如果不是,您的用户的uid from
id
) 和 umask=000 如果您希望所有用户都可以访问(或者 077 仅用于 uid= 指定的用户 - 这是一个掩码,因此您将 chmod 设置为相反的内容)有关使用 /etc/fstab 的更多信息:http: //ubuntulinuxtipstricks.blogspot.com/2008/02/fun-with-etcfstab.html
不幸的是,Linux 内核在 ext2/ext3/ext4 FS 上强制执行 POSIX 权限。
您可以解决共享组的 POSIX 权限。我问了相应的问题:https ://unix.stackexchange.com/questions/273144/predefined-group-ids-across-linux-distros/但毕竟我做了自己的研究。
我发现 Debian、Ubuntu、RedHat、Fedora、CentOS、Suse、FreeBSD、OpenBSD、NetBSD、MacOSX、Solaris 上的 sys 组共享 ID 为 3。
考虑到这样的发现,一种解决方案可能如下所示:
和这种风格(无论何时在 Linux/FreeBSD/MacOSX/Solaris 上):
也可以看看:
这是@gavenkoa 使用共享组的方法的轻微变化,不涉及修改已安装的驱动器。
检查已安装驱动器中使用的组 ID (GID)。
假设您看到类似于以下内容:
这意味着
12000
是驱动器中数据的当前 GID,该数据可以被组中的任何其他用户读取和执行(但不能写入)。创建一个新组(例如driveusers
)并将您当前的用户添加到新组:您可以尝试使用 exfat 或 ntfs。对我来说,它是这样工作的。但我现在不知道它是否适用于每个文件权限。我想不是。
我找到了其他解决方案:
https://unix.stackexchange.com/questions/422656/how-to-make-an-ext4-formatted-usb-drive-with-full-rw-permissions-for-any-linux-m/468933#468933
https://unix.stackexchange.com/a/273705
@jadelord @ givenkoa 您认为现在可以对您为 Ubuntu(或 Fedora)用户提出的解决方案进行改进吗?谢谢
运行 Linux 上默认安装的“磁盘”应用程序,然后单击齿轮并选择“获取所有权”。选中“递归模式”框并点击确定。