据我所知,默认情况下,当使用 chmod 644 权限创建文件时。是否可以更改此设置,以便在某个文件夹中创建的任何文件默认为 664?
最佳答案
在 POSIX 系统上控制文件创建模式的实用程序称为 umask
。我认为您不能像这样为每个文件夹应用文件创建掩码。但是,您可以使用 umask
在脚本内。子 shell 中定义的掩码不会影响您的常规 umask
(0002)设置。
如果您想在 cd
时自动更改 mask 设置在一个特殊目录中,您可以将以下内容添加到 bash 脚本中(我从 this SO 帖子中获取了有关 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
作为特殊目录。现在如果我愿意cd /tmp/blah1
从常规的 bash 中,我的 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]$
关于linux - unix - chmod 文件的默认 future 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9532288/