如何设置文件夹以便其中创建的任何内容都继承权限?

如何设置文件夹以便其中创建的任何内容都继承权限?

我有一个 /data 文件夹(实际上是一个分区),里面存放着所有用户(这里指家庭成员)可以访问的所有数据。我们都有单独的用户帐户,并且经常在同一时间登录这台电脑。

我该如何设置权限,以便我们所有人都能访问其中的文件,无论是谁创建的,包括新文件夹?如果我创建一个文件夹,它会获得我的用户和组,因此其他人都无法写入它。

答案1

另一种方法是使用访问控制列表,即文件权限的超集。

首先,我们必须安装访问控制列表 安装 acl包裹:

sudo apt-get install acl

Ubuntu 14.04 之前,分区必须使用选项挂载,acl才能使以下内容正常工作。它可以添加到 中/etc/fstab,例如

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

或者对于已经挂载的文件系统

sudo mount -o remount,acl /media/shared

接下来,您应该创建一个新组,所有允许以读/写模式访问共享的用户都将添加到该组。我将其称为usershare。可以使用已经存在的组。

sudo addgroup usershare

现在我们将用户添加enzotibsteevc该组:

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(下次登录时生效)。

然后我们添加一个 ACL,该 ACL 具有rwx该组usershare对所有已存在的文件的权限/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

最后,我们添加一个默认 ACL,该 ACLrwx具有该组usershare从现在开始在里面创建的所有文件的权限/media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

现在,该组的所有用户usershare对 下的所有文件都拥有完全权限/media/shared。每个用户对其主目录和其他人的主目录的权限不受影响。

我测试了这个解决方案并且似乎有效,但欢迎提出建议和更正。

评论:在所考虑的目录中创建的新文件和目录将具有该usershare组的写权限,但文件夹中复制或移动的文件将保留其原始权限。如果用户(据我了解)只需要对新创建的目录具有写权限,则这不是问题。否则,它应该手动修改权限。请参阅这个答案如何通过定义用户的 umask 来克服这个问题002

答案2

  1. 建立夾件夾。

    例如:

    mkdir /mnt/family
    

    如果您需要将分区挂载到它们...如果是 ext4 您所需要的/etc/fstab就是

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. 创建群组 myfam。

    addgroup myfam
    
  3. 添加一些用户到该组

    adduser papa myfam  
    adduser mom myfam
    
  4. 现在接受并给予许可。

    我认为你应该从改变开始umask

    12.04 中的默认文件系统权限和访问权限

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    现在最重要的是。该行创建setgid您在该文件夹下创建的所有内容,并将您的用户作为所有者和组myfam。这让系统覆盖用户的主要组。

    chmod -R g+s /mnt/family   
    

答案3

想到的最简单的事情就是将每个用户添加到所有其他用户的组中。

然后将每个用户的 umask 从 022 更改为 002,这可以在 中完成/etc/profile

编辑

第一步可以替换为以下内容:使所有用户都属于users该组作为主要组。

埃迪2

正如@James_Henstridge 所建议的,在主目录上设置 setgid 位会很方便,这样新创建的文件和目录将拥有相同的组,与用户无关。这样,您可以避免将其设置users为用户的主要组。

答案4

我不明白,所有的 linux-linux、linux-windows、linux-??? 都使用 Samba?、SSH?、Pigeons?;无论如何,您需要将其他人纳入使用您的用户名的组(您的组),这样他们将获得与您相同的权限。

相关内容