我已授予文件夹的完全访问权限,如下所示:
sudo chmod 777 -R /media/sharedfolder
但是,当用户 A 创建新的子文件夹时,其他用户无法访问该子文件夹。如何自动授予在此文件夹中创建的任何新文件夹/文件/子文件夹的完全访问权限?
我正在运行 Ubuntu 20.04.6 LTS
答案1
您可以设置默认 ACL(文件访问控制列表) 具体的到这个特定的目录,如下所示:
for i in u g o
do
setfacl --default --modify "$i"::7 /media/sharedfolder
done
...其中ser、roup 和theru g o
是,中跳过的空字段表示任何用户/组,是读取(4)、写入(2)和执行(1)的按位组合,在这种情况下,相当于可以替代使用并且 是所需的目标目录。u
g
o
::
7
rwx
/media/sharedfolder
从现在开始,目标目录及其下创建的任何子目录/文件都将默认设置为这些权限。
然而,文件,执行位默认不设置(甚至没有umask 0000
)...如果/当需要时,需要在创建文件后手动设置...但是,可以通过默认权限设置读写位。
答案2
用户创建的任何文件/目录的掩码均由用户 umask 定义。umask 通常在用户的 .bashrc 中或通过系统范围内的 /etc/login.def 进行设置。
Ubuntu 中的标准 umask 是 022 - 这导致新文件为 644 而目录为 755。
***注意:仅当您确定希望每个人都有权查看和运行此目录中的文件时才使用 777,在错误的地方使用 777 会带来重大的安全风险。
如果你确实希望用户 A 创建具有 777 的目录,则在用户主目录中的 .bashrc 中修改用户 A 的 umask。
或者,您可以创建一个小脚本,例如:
文件:/usr/bin/mkmediadir
#!/bin/bash
mkdir $1
chmod 777 $1
设置脚本权限以允许执行。
chmod +x /usr/bin/mkmediadir
现在,当用户 A 想要在 /media/sharedfolder 中创建新目录时,只需运行 mkmediadir 即可设置权限。这将消除用户 A 错误地创建具有开放权限的敏感目录的风险。