什么决定了默认目录权限?

什么决定了默认目录权限?

在 Linux 中,当我创建一个目录时mkdir newdir,新创建的目录具有以下权限和所有权:drwxr-xr-x 2 owner group

我的问题

如何为新创建的目录是:drwxrwxrwx 2 owner group不管谁创建了该目录?

我做的一些研究

我知道在 Samba 共享中您可以强制执行这一点,directory mask但是如果有人进入终端并以 root 身份创建一个目录,然后普通用户出现,那么他将无法在 root 用户创建的目录中创建文件,该怎么办?

我一直在使用 ACL,我知道如何让所有新创建的文件具有一定的权限。

例如: setfacl -dRm u::rwX,g::rwX,o::0 newdir/

这使得newdir文件夹中的所有文件都具有权限:-rw-rw---- 无论文件创建者是谁

我还了解了“设置目录组 ID 位”,以便在“newdir”目录中创建的任何文件(或目录)的组所有权等于“newdir”目录的组所有权。 chmod g+s newdir/

我一直无法找到如何为新创建的目录是:drwxrwxrwx 2 owner group无论谁创建了目录?也许这与 umask 有关?可以使用 ACL 来实现吗?

答案1

是的,您说得对 - 默认权限由创建进程的 umask 决定。不幸的是(与 SAMBA 不同选项,提供单独的dmaskfmask),shell 的 umask 适用于目录和文件:

$ umask 0000
$ mkdir newdir ; touch newfile
$ ls -ld new{dir,file}
drwxrwxrwx 1 steeldriver steeldriver 512 Mar  2 17:22 newdir
-rw-rw-rw- 1 steeldriver steeldriver   0 Mar  2 17:22 newfile

无论如何,您无法控制其他用户进程的 umask(尤其是 root 进程)。

答案2

检查手册(man mkdir):

-m,--模式=模式
    设置文件模式(如 chmod),而不是 a=rwx - umask

因此你只需要:

mkdir -m 777 newdir

答案3

虽然不是最有效的想法,但它可以完成工作。让 root 运行 cronjob,它的唯一任务是执行命令/usr/bin/chmod -R 0777 /path/to/samba/share。每次运行该作业时,问题都会按照您选择的间隔解决。

相关内容