![解决使用外部 EXT4 硬盘安装多个 Linux 时的权限问题](https://linux22.com/image/956744/%E8%A7%A3%E5%86%B3%E4%BD%BF%E7%94%A8%E5%A4%96%E9%83%A8%20EXT4%20%E7%A1%AC%E7%9B%98%E5%AE%89%E8%A3%85%E5%A4%9A%E4%B8%AA%20Linux%20%E6%97%B6%E7%9A%84%E6%9D%83%E9%99%90%E9%97%AE%E9%A2%98.png)
我有一个外部硬盘,因为我只使用 Ubuntu 和 Fedora,所以我决定将硬盘格式化为 ext4,一切都很好。
问题是当我安装驱动器时,我需要更改权限,以便我可以读取和写入。
我应该使用什么样的权限?adm 我的用户名?
答案1
最简单的解决方案是确保您的 Ubuntu 和 Fedora 用户帐户具有相同的用户 ID(UID)。
我认为 Fedora 默认从 500 开始用户帐户,而 Debian 和 Ubuntu 从 1000 开始,因此很有可能在一个操作系统中您的用户编号是 500,而在另一个操作系统中您的用户编号是 1000。文件系统使用此 UID 号码来跟踪权限,因此如果您确保他们具有相同的 UID,他们将被视为同一个用户,并且不会发生任何权限问题。
我认为你能做的最好的事情就是让它们的 UID 都为 1000,因此在 Fedora 系统中更改 UID,然后确保外部磁盘上的所有文件以及 Fedora 安装中的用户 $HOME归 UID 1000 所有。此后,您应该不会再遇到权限问题。
答案2
尽管我可能说得不太好,但我还是要用另一个问题来回答这个问题。如果我们讨论的只是一个操作系统,那么它要么是
sudo chown -R (user name) /dev/(device name)
(Ubuntu)
要不就
chown -R (user name) /dev/(device name)
Fedora 系统— 不sudo
,只需从 root 运行命令。
面条刮擦器部分,以及我没有任何好答案的部分,是如何做到这一点,以便您在发行版之间来回切换时不必手动重新输入。我几乎想把这行添加到我的~/.bashrc
,但可能还有更好的方法我不知道或还没有想到。
答案3
在 /etc/fstab 中,您可以输入 uid=1000(在 Ubuntu 中 - 在 Fedora 中为 500)以表示驱动器归您的用户所有(假设您是第一个用户,等等等等...如果不是,则为您的用户的 uid id
),如果您希望所有用户都有权访问,则输入 umask=000(或者仅对于 uid= 指定的用户,输入 077 - 这是一个掩码,因此您输入的内容与 chmod 的值相反)
有关使用 /etc/fstab 的更多信息: http://ubuntulinuxtipstricks.blogspot.com/2008/02/fun-with-etcfstab.html
答案4
这是@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