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

我有一个/ data文件夹(实际上是一个分区),用于所有用户都应该可以访问的数据(在这种情况下是家庭成员)。 我们都有个人用户帐户,并且通常都会在这台PC上随时登录。

如何设置权限,以便我们都可以保留对文件的访问权限,无论是谁创建文件,包括新文件夹? 如果我创建一个文件夹,它会获取我的用户和组,所以没有其他人可以写入它。

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

首先,我们必须安装acl 安装acl 包:

 sudo apt-get install acl 

在Ubuntu 14.04之前 ,必须使用选项acl挂载分区,以便以下工作。 它可以添加到/etc/fstab ,如

 UUID= /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 

(下次登录时生效)。

然后,我们将组usershare /media/shared rwx权限的ACL添加到/media/shared已有的所有文件

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

最后,我们为现在在/media/shared创建的所有文件添加一个具有rwx权限的默认ACL,用于组usershare

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

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

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

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

  1. 制作文件夹。

    例如:

     mkdir /mnt/family 

    如果你需要挂载分区…如果你需要在/etc/fstab使用ext4

     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 

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

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

编辑

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

Edi2

正如@James_Henstridge建议的那样,在主目录上设置setgid位可能很方便,因此创建的新文件和目录将具有与用户无关的相同组。 通过这种方式,您可以避免将users设置为users的主要组。

这听起来像是ACL的工作。 Giles 在SE Unix和Linux站点上有一个非常彻底的答案 ,帮助我解决了同样的问题。

我不明白,都是linux-linux,linux-windows,linux – ???,使用Samba?,SSH ?,鸽子? 无论如何,您需要使用您的用户名(您的组)将其他人包括在组中,并且他们将获得与您相同的权限。

我在寻找我的GROUP PERMISSION问题的答案时遇到了这个问题。 我已经阅读了这个问题,似乎我已经在实现问题试图完成的任务。

所以我很想回答它。

我已经为我的局域网上的所有用户设置了一个只有读取和执行的共享,并且只有我的帐户有权在共享文件夹上写入。

我的局域网上有一个使用ubuntu 12.04 LTS桌面版的多function服务器。 我有一个混合客户端机器的Linux和Windows。

以下是我如何设置它:

1.在我的服务器上,我有名为adminclientone用户帐户

admin帐户是我安装ubuntu时创建的帐户,而clientone帐户是使用ubuntu中的USER ACCOUNTS菜单创建的帐户。 它只具有标准权限,没有管理员权限,并且已添加到users组。 您当然可以仅使用终端进行这些操作。 为客户端计算机添加更多其他用户帐户。

2.仅使用defaults选项在fstab中自动挂载共享分区/文件夹。

3.我的网络处于工作组环境中,它位于mylan工作组中。

我的局域网中的所有计算机都设置为使用mylan工作组。

4.我名为shared共享文件夹中已有文件。 所以我使用下面的命令递归地更改了所有者和组。

  sudo chown -Rv admin:users /shared 

5.我还使用该命令递归地将文件夹和文件权限设置为/shared文件夹

  sudo chmod -Rv 750 /shared 

我的mylan工作组中的来宾计算机无法使用chmod 750访问共享

你可以用

  sudo chmod -Rv 755 /shared 

users组中的所有未来用户帐户仅具有读取执行权限。

6.在我的客户端机器(Windows XP)中,我设置了一个名为clientone的用户帐户。 与在我的ubuntu服务器中创建的用户名和密码相同的用户名和密码。 另一个名为clienttwo帐户也在ubuntu服务器中创建,它与我的第二台机器(linuxmint 15)中使用的帐户相同。

7.在我的客户端计算机上使用clientone帐户登录时,我将运行命令然后输入

  //192.168.10.254/shared 

192.168.10.254是我的ubuntu服务器的ip地址, /shared是我的ubuntu服务器/shared的文件夹在我的客户机2(linuxmint 15)中,我转到菜单>网络,在我输入的位置:对话栏中:

  smb://192.168.10.254/shared 

如果系统提示您输入密码,请输入您的用户帐户密码。 如果你的linux机器启用了KEYRING,那么你的密钥密码也是如此。

这个在我自己的网络设置中适合我。 我的服务器是一个多用途服务器,用作squid服务器,xbmc和mediatomb服务器和amahi服务器。

我仍在研究如何改进我的设置中的文件共享部分。 上面的说明不是防弹解决方案,买你可以尝试一下。 我测试并尝试ACL“与自动挂载共享文件夹一起使用的东西。 由于您的文件夹共享要求变得复杂,上述说明将无法保证您的成功。

添加信息:

我在我的服务器上安装了Amahi Server,我还用它来创建我想要访问共享文件夹的用户帐户。 我还用它来创建新的文件夹共享。

如果您希望为不同的用户提供更复杂的用户权限,则可以使用ACL。

我的名字上有video文件,但当我用女儿的名字登录时,她的帐户无法看到video文件。 所以,我做的是去用户帐户,解锁(右上角),然后将她的帐户类型从“标准”更改为“管理员(这是我的帐户),现在所有video文件,真的一切,显示出来在她的帐户下登录时。