ste*_*evc 21 permissions shared-folders
我有一个 /data 文件夹(实际上是一个分区),用于存放所有用户(在本例中为家庭成员)可以访问的所有数据。我们都有个人用户帐户,并且通常都在这台 PC 上随时登录。
我如何设置权限,以便我们所有人都可以保留对文件的访问权限,无论是谁创建它们,包括新文件夹?如果我创建一个文件夹,它会获取我的用户和组,因此其他人无法写入它。
enz*_*tib 19
另一种方法是使用访问控制列表,文件权限的超集。
首先我们要安装acl 包裹:
sudo apt-get install acl
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 14.04 之前,必须使用以下选项挂载分区acl
才能工作。它可以添加到 中/etc/fstab
,如
UUID=<XXXX> /media/shared ext4 noatime,acl 0 2
Run Code Online (Sandbox Code Playgroud)
或者对于已经挂载的文件系统
sudo mount -o remount,acl /media/shared
Run Code Online (Sandbox Code Playgroud)
接下来,您应该创建一个新组,所有允许以读/写模式访问共享的用户都将添加到该组中。我称之为usershare
。可以使用已经存在的组。
sudo addgroup usershare
Run Code Online (Sandbox Code Playgroud)
现在我们将用户enzotib
和添加steevc
到该组:
sudo gpasswd -a steevc usershare
sudo gpasswd -a enzotib usershare
Run Code Online (Sandbox Code Playgroud)
(下次登录时生效)。
然后我们将一个具有rwx
组权限的 ACL 添加usershare
到已经存在的所有文件中/media/shared
sudo setfacl -Rm g:usershare:rwX /media/shared
Run Code Online (Sandbox Code Playgroud)
最后,我们为从现在开始创建的所有文件添加一个具有rwx
组权限的默认 ACLusershare
/media/shared
sudo setfacl -d -Rm g:usershare:rwX /media/shared
Run Code Online (Sandbox Code Playgroud)
现在该usershare
组的所有用户对/media/shared
. 每个用户在他和其他人的主目录上的权限不受影响。
我测试了这个解决方案并且似乎有效,但欢迎提出建议和更正。
备注:在考虑的目录中创建的新文件和目录将具有该usershare
组的写入权限,但在文件夹中复制或移动的文件将保留其原始权限。如果用户,据我所知,只需要对新创建的目录进行写访问,这不是问题。否则它应该手动修改权限。见这个答案就如何通过定义用户的umask为克服这个002
。
制作文件夹。
例如:
mkdir /mnt/family
Run Code Online (Sandbox Code Playgroud)
如果你需要给它们挂载分区......如果你需要的/etc/fstab
是 ext4
UUID=xxx /mnt/family ext4 **rw,exec,defaults,auto,async 0 2**
Run Code Online (Sandbox Code Playgroud)创建组 myfam。
addgroup myfam
Run Code Online (Sandbox Code Playgroud)将一些用户添加到该组
adduser papa myfam
adduser mom myfam
Run Code Online (Sandbox Code Playgroud)现在接受并给予许可。
我认为你应该从改变开始umask
。
chown -R you.myfam /mnt/family
chmod -R g+rwx /mnt/family
Run Code Online (Sandbox Code Playgroud)
现在最重要。该行创建setgid
您在该文件夹下创建的任何内容,将您的用户作为所有者和组myfam
。这让系统覆盖用户主要组。
chmod -R g+s /mnt/family
Run Code Online (Sandbox Code Playgroud)想到的最简单的事情是将每个用户添加到所有其他用户的组中。
然后将每个用户的 umask 从 022 更改为 002,这可以在/etc/profile
.
编辑
第一步可以替换为以下内容:使所有用户都属于作为users
主要组的组。
埃迪2
正如 @James_Henstridge 所建议的,在主目录上设置 setgid 位可以很方便,这样创建的新文件和目录将具有相同的组,而与用户无关。通过这种方式,您可以避免将该组设置users
为用户的主要组。
我不明白,都是linux-linux、linux-windows、linux-???、使用Samba?、SSH?、Pigeons?;无论如何,您需要将其他人包含到您的用户名组(您的组)中,他们将获得与您相同的权限。