unix – chmod默认将来对文件的权限

我明白,默认情况下,当创build文件的权限chmod 644.有无论如何改变,以便任何创build在某个文件夹中的文件默认为664?

在POSIX系统上控制文件创建模式的实用程序称为umask 。 我不认为你可以像这样应用每个文件夹的文件创建掩码。 但是,您可以在脚本中使用umask 。 在子外壳中定义的掩码不会影响您的常规umask (0002)设置。

如果你想在一个特殊的目录下进行自动改变你的掩码设置,你可以添加以下内容到你的bash脚本中(我从这个 SO post的chdir()函数中获得了提示):

 chdir() { local action="$1"; shift case "$action" in # popd needs special care not to pass empty string instead of no args popd) [[ $# -eq 0 ]] && builtin popd || builtin popd "$*" ;; cd|pushd) builtin $action "$*" ;; *) return ;; esac # # now do stuff in the new pwd # SPECIAL_DIRS="/tmp/blah1 /tmp/blah2" DEFAULT_MASK="0002" for dir in $SPECIAL_DIRS do if [[ "$PWD" == "$dir" ]] then umask 0007 echo "[*] special mask settings applied - $(umask -S)" else umask $DEFAULT_MASK fi done # # } alias cd='chdir cd' alias pushd='chdir pushd' alias popd='chdir popd 

如您所见,我将/tmp/blah1/tmp/blah2为特殊目录。 现在,如果我从常规bash cd /tmp/blah1 ,我的umask设置将相应地改变。

 [22:45:43] user@host1:[~]$ cd /tmp/blah1 [*] special mask settings applied - u=rwx,g=rwx,o= [22:45:49] user@host1:[/tmp/blah1]$ cd /tmp/blah2 [*] special mask settings applied - u=rwx,g=rwx,o= [22:46:03] user@host1:[/tmp/blah2]$ 

不,但是可以将新创建​​的文件和目录的默认组设置为父文件夹的一个组,这可能会解决您的问题: chmod g+s <parent-directory> 。 在<parent-directory>创建的所有东西都默认拥有<parent-directory>的组所有权。