如何在没有 root 权限的情况下授予特定用户对 Linux 中特定文件夹的只读权限?

如何在没有 root 权限的情况下授予特定用户对 Linux 中特定文件夹的只读权限?

我想授予具有用户名userA权限的特定用户仅读取我创建的文件夹的权限。我发现的所有其他帖子都说你应该创建一个新组,但我不能这样做,因为我没有 root 权限。当我尝试创建一个组时,groupadd class1它显示以下消息:

   groupadd: Permission denied.
   groupadd: cannot lock /etc/group; try again later

不同帖子建议的另一种解决方案是,我应该让用户成为该文件夹的所有者,但我不愿意这样做,因为我不希望他们将其他人添加到该文件夹​​中。

答案1

您可以使用 ACL(访问控制列表)来完成此操作。

setfacl -m u:userA:rx folder

如果您只想授予userA访问权限folder(用户将无法读取文件夹内的文件)或

setfacl -R -m u:userA:rX folder

如果您想授予folder对其内所有(已存在的)文件和子文件夹的访问权限。

答案2

看起来你可能真的有两个问题。但也可能没有。

  1. 您的 /home 目录是非管理员可以可靠地存储文件的唯一位置,历史上默认设置为世界可读。每个人都可以读取您的所有文件……但 (几乎) 无法写入任何文件。

    $ ls -lah /home/
    total 16K
    drwxr-xr-x  4 root root 4.0K Dec  3  2016 .
    drwxr-xr-x 24 root root 4.0K Oct 16  2019 ..
    drwxr-xr-x 21 1001 1001 4.0K Aug 17  2017 susan
    drwxr-xr-x 45 me   me   4.0K Oct 20 15:30 me
    

    在此示例中,我可以读取(但不能写入)Susan 的所有文件,她也可以读取我的所有文件。我还可以启动她的任何应用程序和脚本。我可以复制她的文件,而我的副本(在我的目录中)将变为可由我(而不是她)写入。

    如果您同意此设置,那么您的问题已经解决:您的特定用户已经具有只读访问权限。

  2. 如果你说服管理员锁定你的 /home 目录,这样就没有人可以再读取你的文件了,它将看起来像这样:

    $ ls -lah /home/
    total 16K
    drwxr-xr-x  4 root root 4.0K Dec  3  2016 .
    drwxr-xr-x 24 root root 4.0K Oct 16  2019 ..
    drwx--x--x 21 1001 1001 4.0K Aug 17  2017 susan
    drwx--x--x 45 me   me   4.0K Oct 20 15:30 me
    

    现在 Susan 无法再读取我的文件(我也无法读取她的文件),我必须使用一个组来授予其他任何人访问权限。

    您完全正确,只有管理员可以创建群组,并且只有管理员可以编辑该群组的成员。

    步骤1:您可以更改您自己的目录和文件的权限。

    例子:

    mkdir /home/me/public-view
    chmod 751 /home/me/public-view  // 7 means you have complete control over the directory
                                    // 5 means 'read-only' for members of the group
                                    // 1 means nobody outside you or the group can access it
                                    //  but it will still show up on directory listings
    

    步骤 2:管理员创建一个新组,将特定人员添加到该组,并更改目录的所有权,以便该组(由一个人组成)可以访问它。由于您是所有者,因此您仍然对目录中的所有内容具有读/写访问权限(这就是为什么您确保在 chmod 的第一列中拥有权限“7”的原因)。

相关内容