Утилита для управления режимом создания файлов в системах POSIX называется umask
.Я не думаю, что вы можете применить маски создания файлов для каждой папки, просто так.Но вы можете использовать umask
внутри скрипта.Маски, определенные в подоболочке, не влияют на ваши обычные настройки umask
(0002).
Если вы хотите автоматически изменять настройки маски при cd
в специальном каталоге, вы можете добавить следующеевам скрипт bash (я взял подсказку по функции 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]$