我想告诉Linux,除了默认权限之外,在某个目录中创建的每个文件都应该有g + w。
我该怎么说?我需要该目录的粘性位,不是吗? (该目录已经有drwsrwsr-x,我希望新文件可以继承,但显然他们不会......)
答案 0 :(得分:1)
有几种与权限操作相关的机制:
umask
允许您禁用每个应用的权限位。它既不允许启用权限也不允许每个目录执行此操作。它也不是一个全球性的环境。它是从父进程继承的每进程属性。例如。您可以在init脚本中设置其默认值,但程序(尤其是守护程序)可能会覆盖其umask
。sticky bit
限制目录访问,以便该目录中的文件只能由root或目录所有者或文件所有者取消链接或重命名。setgit bit
强制在该目录中创建的任何新文件将其组设置为在目录上设置的同一组。它允许覆盖组所有者,但不允许覆盖权限。bsdgroups
或grpid
mount选项为所有目录启用setgit bit
行为,即使未设置setgit bit
也是如此。ACL
(访问控制列表)允许您为目录或文件设置每用户和每组权限。在该目录中创建新文件时,它们也从父目录继承。但是,ACL
权限会屏蔽传统POSIX权限,这些权限由文件创建者及其umask
设置,因此您无法继承比文件创建者允许的权限更多的权限。除umask
之外的所有这些机制都是特定于Linux的。有关setgit bit
和ACLs
。
我猜这些问题不是直接解决问题的方法。你能做什么:
0777
创建(或可以进行配置),则将umask
设置为000
就足够了。见@ KasunRathnayaka的答案。bindfs
工具和--create-with-perms
及相关选项。它允许将目录挂载到另一个目录,并在创建或修改文件时覆盖权限和用户/组所有者。见manual page。答案 1 :(得分:0)
你可以在linuxbox中更改umask。正如你想要的那样。
Umask Created Files Created Directories
-------------------------------------------------------------
000 666 (rw-rw-rw-) 777 (rwxrwxrwx)
002 664 (rw-rw-r--) 775 (rwxrwxr-x)
022 644 (rw-r--r--) 755 (rwxr-xr-x)
027 640 (rw-r-----) 750 (rwxr-x---)
077 600 (rw-------) 700 (rwx------)
277 400 (r--------) 500 (r-x------)
例如:
root@kasunr:/usr/share/nginx/html/tt# umask
0022
root@kasunr:/usr/share/nginx/html/tt# umask 0027
root@kasunr:/usr/share/nginx/html/tt# mkdir yy
root@kasunr:/usr/share/nginx/html/tt# ls
yy
root@kasunr:/usr/share/nginx/html/tt# ls -al
total 12
drwxr-xr-x 3 root root 4096 ජූලි 22 15:20 .
drwxr-xr-x 4 root root 4096 ජූලි 22 15:19 ..
drwxr-x--- 2 root root 4096 ජූලි 22 15:20 yy