据我所知,默认情况下,使用chmod 644的权限创建文件时。是否有更改,以便在某个文件夹中创建的任何文件默认为664?
答案 0 :(得分:4)
在POSIX系统上控制文件创建模式的实用程序称为umask
。我不认为你可以像这样在每个文件夹中应用文件创建掩码。但是,您可以在脚本中使用umask
。子shell中定义的掩码不会影响常规umask
(0002)设置。
如果要在cd
特殊目录中自动更改掩码设置,可以将以下内容添加到bash脚本中(我在chdir()
函数上提示this } SO post):
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
来自常规广告,我的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]$
答案 1 :(得分:1)
不,但您可以将新创建的文件和目录的默认组设置为父文件夹的一组 - 可能解决您的问题:
chmod g+s <parent-directory>
。默认情况下,<parent-directory>
中创建的所有内容都将归属<parent-directory>
。