RHEL - 永久取消屏蔽所有子文件夹和文件

RHEL - 永久取消屏蔽所有子文件夹和文件

我是 RHEL 新手,在揭露目录集合时遇到问题。

我有一个文件夹,其中的内容将从 python 脚本生成内容。子文件夹将存在一段时间,然后被删除。这些文件夹最初被屏蔽为一个用户能够读取/写入它们,但最近我们需要允许任何人访问这些文件夹。我使用 -R(递归选项)在文件夹上运行 unmask 命令来取消屏蔽所有子文件夹和文件。它似乎一直有效,直到生成新内容并且 BAM 出现同样的问题,文件夹和文件被屏蔽。

如何永久取消对文件夹的所有子文件夹和文件的屏蔽?我需要具有创建/读/写访问权限的每个人都可以访问这些文件。

答案1

创建文件的过程是问题所在。该进程/程序使用给定的运行umask,以便当它创建文件时,新创建的文件将使用特定的umask.你基本上有 3 个选择:

  1. 修改进程的umask

    根据进程(网络服务器)的不同,这可能不是您想要做的。

  2. 添加群组

    更友好的方法是创建一个 Unix 组(Web 数据),如果它是每个人都需要访问的与 Web 服务器相关的内容。然后更改相关目录的顶级组,以便网络数据组的成员拥有/访问它们。

    然后运行与这些类似的命令来创建目录的组 web-data,并强制该组保持粘性,以便创建的任何新文件/文件夹都将使用该组作为默认组。

    $ chgrp web-data /path/to/dir
    $ find /path/to/dir -type d -exec chmod g+xs {} +
    

    最后将 Web 服务器用户 (apache) 以及需要访问该目录的其他用户添加到该组中。

  3. 使用访问控制列表 (ACL)

    您可以使用这些工具setfaclgetfacl操作给定目录或文件的 ACL。

    例子

    作为根用户:

    $ mkdir somedir
    $ getfacl somedir
    # file: somedir
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    

    现在添加用户sam对目录的访问权限。

    $ setfacl -Rm u:sam:r-x,d:sam:r-x somedir
    getfacl somedir/
    # file: somedir
    # owner: root
    # group: root
    user::rwx
    user:sam:r-x
    group::r-x
    mask::r-x
    other::r-x
    default:user::rwx
    default:user:sam:r-x
    default:group::r-x
    default:mask::r-x
    default:other::r-x
    

    现在创建的任何后续目录和/或文件都将设置其目录,以便用户sam可以访问它们:

    $ mkdir anotherdir
    $ echo "hello world" > anotherfile
    

    确认权限:

    $ getfacl another*
    # file: anotherdir
    # owner: root
    # group: root
    user::rwx
    user:sam:r-x
    group::r-x
    mask::r-x
    other::r-x
    default:user::rwx
    default:user:sam:r-x
    default:group::r-x
    default:mask::r-x
    default:other::r-x
    
    # file: anotherfile
    # owner: root
    # group: root
    user::rw-
    user:sam:r-x            #effective:r--
    group::r-x          #effective:r--
    mask::r--
    other::r--
    

    现在作为用户sam

    $ more anotherfile 
    hello world
    

    如果其他用户需要类似的访问权限,只需setfacl使用该用户的用户名代替 重新运行命令即可sam

    可以修改上述方法,以便可以向一组用户授予访问权限,而不是向单个用户授予访问权限。

参考

相关内容