我刚刚安装了 resiliosync 并且运行良好。它默认创建一个用户“rslsync”。我想要在我的主目录中拥有一个默认文件夹,其中包含我的所有同步项目,当然当前 rslsync 无法访问该文件夹。
我在我的主目录中创建了一个名为“sync”的目录。在同步目录中,我还创建了 2 个文件夹“dropbox”和“resilio”。我希望文件夹“resilio”成为我的文件的默认位置,这些文件作为“rslsync”使用运行。
授予用户“rslsync”对我的主目录中“resilio”文件夹的读取、写入和执行访问权限的最佳方法是什么?只需将用户“rslsync”添加到我的用户组即可为其提供所需的所有访问权限吗?
答案1
如果该文件以及需要遍历的任何目录满足以下任一条件,则程序可以访问该文件:
- 程序运行时具有访问权限的用户;
- 程序运行时具有访问权限的任何组;
- 每个人都可以访问。
(实际上并非在所有情况下都是如此,但在这里它是一个足够好的近似值。)
请注意,哪些用户属于哪些组的成员不会出现。此信息仅在用户登录时使用:它会导致该登录会话中的程序作为这些组运行。因此将用户添加到组并不能解决您的问题。
您需要授予用户rslsync
对该resilio
目录以及通往该目录的整个目录链的访问权限。要访问/home/liam/sync/resilio
,程序需要具有、、、的目录遍历权限(x
属性,对于普通文件来说意味着“执行”) ,以及的读取权限。/
/home
/home/liam
/home/liam/sync
/home/liam/sync/resilio
/home/liam/sync/resilio
你可以用访问控制列表:
setfacl -m u:rslsync:x /home/liam /home/liam/sync
setfacl -R -m u:rslsync:rx /home/liam/sync/resilio
setfacl -R -d -m u:rslsync:rx /home/liam/sync/resilio
第一行确保 rslsync 可以遍历前导目录。第二行允许 rslsync 访问以 为根的整个目录树/home/liam/sync/resilio
。带有该标志的第三行为-d
新创建的文件设置默认 ACL — 如果没有此标志,rslsync 将无法读取任何新创建的文件。
某些应用程序可能会创建具有比默认 ACL 更严格的 ACL 的文件。当从其他位置复制文件时,尤其会发生这种情况。在这种情况下,rslsync 将无法读取这些文件。有一种不同的方法可以确保 rslsync 始终可以读取文件,即/home/liam/sync/resilio
使用不同的权限创建树的替代视图。你可以这样做绑定文件系统。请注意,您必须以 root 身份进行安装才能允许其他用户访问 bindfs 文件系统。您可以在中使用以下行/etc/fstab
:
bindfs#/home/liam/sync/resilio /var/lib/rslsync/resilio fuse ro,force-user=rslsync,perms=u+rD:go=
答案2
您可以使用命令检查每个文件和文件夹的权限、所有者和组ls -al
。
例如,您可能会收到这样的回复......
-rw-r--r-- 1 user user 148 Aug 26 10:58 a-file
drwxrwxrwx 0 user group 512 Aug 26 10:59 a-folder
请注意每行开头的字母。这些字母代表权限。基本上,每个文件和文件夹都具有所有者、组和其他人的权限。
- 第一个字母
-
或d
表示它是文件还是文件夹 - 以下三个字母为
rwx
您提供有关所有者用户的权限的信息。r
用于读取、w
写入和x
执行或移动到该文件夹。 - 接下来的三个字母代表该组的权限。请注意,文件可能属于与所有者所在组不同的组。
- 最后,其他三个字母代表其他人的权限。
如果您将“rslsync”加入到用户的同一组,您可以授予它更多您想要的权限。例如,如果用户属于管理员组,您可以授予其运行管理任务或访问私人文件的权限。
要授予用户“rslsync”rwx
对“resilio”文件夹的完全访问权限 ( ),您可以将该文件分配给 rslsync 组,并为其组授予对该文件夹的完全访问权限。如果 rslsync 组具有相同的名称:
# change the group of the resilio folder
$ chgrp -R rslsync resilio
# set full access to the group
$ chmod -R g+rwx resilio
通过这种方式,用户仍然是文件的所有者,“rslsync”具有对文件夹和文件的完全访问权限,并且组之间保持相互分离。