解决在多个Linux安装中使用外部EXT4硬盘时的权限问题


Answers:


5

尽管可能是我me脚,但我将不得不再回答另一个问题。如果我们要讨论的只是一个操作系统,那么要么

sudo chown -R (user name) /dev/(device name)

ubuntu

要不就

chown -R (user name) /dev/(device name)

fedora-sudo,只需从根目录运行命令。

面条刮刀部分以及我没有任何好的答案的部分是如何制作的,因此在发行版之间来回切换时,您无需手动重新键入。我几乎很想将这行添加到我的行中~/.bashrc,但是也许我不知道或还未想到一种更好的方法。


那就是我每次更改发行版时都需要更改的权限
Javier Gonzalez 2010年

1
为了确保并满足我自己的知识好奇心,我回过头来对我拥有的USB EXT4驱动器进行了仔细检查。我不知道拥有设备所有权和拥有文件系统所有权是否相同,而且确实如此。sudo chown -R(用户名)/ dev /(设备名)可让您拥有驱动器上所有文件的所有权,即使您没有创建它们。
user2367

是的,除了只是将行添加到〜/ .bashrc中,以便它在您每次运行终端时都自动运行,我没有答案。也许可以将其添加到cron中?但是似乎应该有一种方法可以安排它在发行版启动时运行。
user2367

我真的很喜欢ext4,但是很讨厌不断更改权限哈哈
Javier Gonzalez 2010年

10

最简单的解决方案是确保您的Ubuntu&Fedora用户帐户具有相同的用户ID(UID)。

我认为Fedora默认将用户帐户设置为500,而Debian和Ubuntu将用户帐户默认设置为1000,因此在一个操作系统中,您的用户号为500,而在另一个操作系统中的用户号为1000。文件系统使用此UID号码以跟踪权限,因此,如果您确保它们具有相同的UID,则它们将被视为同一用户,并且不会发生任何权限问题。

我认为您可以做的最好是将它们都设为UID = 1000,因此在Fedora系统中更改UID,然后确保Fedora安装中外部磁盘上以及用户$ HOME中的所有文件都归UID 1000所有。这样您就不会再有权限问题了。


是的,我要谢谢你的时间:)
哈维尔·冈萨雷斯

1
另请阅读我的补充内容,否则Fedora用户将无法登录!
2010年

一切都清楚了,我现在要对其进行测试,也感谢您编辑问题标题,现在非常清楚。
哈维尔·冈萨雷斯

3

在/ etc / fstab中,您可以将uid = 1000(在Ubuntu中-Fedora中为500)放到用户所拥有的驱动器中(假设您是第一个用户,yada yada yada ...如果不是,则是用户的)来自的uid id)和的umask = 000,如果你想所有用户都对刚刚通过的uid =指定的连接(或077 -这是一个面膜,让你把你想搭配chmod的对面)

有关使用/ etc / fstab的更多信息:http : //ubuntulinuxtipstricks.blogspot.com/2008/02/fun-with-etcfstab.html


1
如果我将权限设置为077,那么当我从ubuntu更改为fedora时,不需要重新更改权限吗?
哈维尔·冈萨雷斯

@Dracirate:我认为您可能需要000而不是077。如果在每个系统(Ubuntu和Fedora)中都为驱动器放置一个fstab条目,它们将自动挂载它以便可用。
maco 2010年

3

不幸的是,Linux内核对ext2 / ext3 / ext4 FS强制执行POSIX权限。

您可以通过共享组解决POSIX权限。我问相应的问题:https : //unix.stackexchange.com/questions/273144/predefined-group-ids-across-linux-distros/但我还是做了自己的研究。

我发现sys组在Debian,Ubuntu,RedHat,Fedora,CentOS,Suse,FreeBSD,OpenBSD,NetBSD,MacOSX,Solaris上共享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

也可以看看:


使用该方法,执行 cd /mnt/data/dir; touch example.txt; ls example.txt ...显示... -rw-rw----+ 1 user user 3 nov 27 20:16 example.txt。稍后执行 mv example.txt ~; ll ~/example.txt...显示... -rw-rw----+ 1 user user 0 nov 27 21:22 /home/user/example.txt,并+在权限末尾显示 。因此,很多文件+最终都会出现在很多地方,这使人们感到奇怪,这些文件为什么如此特殊(只是因为它们碰巧是从特定文件夹中复制/移动的)。有什么方法可以停止+自动生成这些文件吗?
甘顿

2

您可以尝试使用exfat或ntfs。对我来说,这种方式。但是我现在不知道是否可以使用每个文件权限。我觉得不是。


2

这与@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

1

我找到了其他解决方案:

/unix/422656/how-to-make-an-ext4-formatted-usb-drive-with-full-rw-permissions-for-any-linux-m/468933#468933

/unix//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)用户的建议解决方案现在可以进行任何改进?谢谢

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.