То, что управляет разрешениями по умолчанию, известно как umask
.
НО....
Это зависит от того, как был создан файл, потому что разные демоны могут быть настроены на использование разных значений по умолчанию umask
. Таким образом, создание файла с помощью общего ресурса samba/cifs, или через sftp, или путем интерактивного входа в систему и использования touch
, или создание нового файла путем сохранения в каком-либо текстовом редакторе, таком как vi
или joe
, или что-то еще, все это может закончиться с разными разрешениями, даже если файлы созданы одним и тем же пользователем в одном и том же каталоге.
Точно так же существует право собственности на созданные файлы/каталоги. По умолчанию в системе, вероятно, владельцем является создающий пользователь, а группа является основной группой создающего пользователя. Но имейте в виду, что на это (могут влиять другие права доступа к файлам, то есть бит setgid
в каталоге ), а также различные параметры конфигурации демона, такие как настройка umask
.
Есть несколько простых экспериментов, которые вы можете провести, чтобы найти ответы на свои вопросы. Иногда лучший способ изучить новые инструменты — поиграть с ними.
If I poorly write a script that uses pushd /etc but I don't finish it with popd: Will /etc still be in the pushd+popd directory stack/in RAM after the Bash script has finished executing and Bash has terminated?
$ cd /tmp
$ echo 'pushd /etc' > experiment.sh
$ bash experiment.sh
/etc /tmp
$ pwd
/tmp
$
Выше, experiment.sh
это плохо -написанный сценарий. Он использует pushd
для помещения текущего каталога в стек и переключается на /etc/
, после чего завершает работу. После завершения сценария работающая оболочка все еще находилась в /tmp
.
Also does the pushd+popd directory stack clear (like variables do) if I close the terminal emulator session (which should terminate the Bash shell process for that terminal emulator session) without manually clearing it with popd?
$ cd /tmp
$ pushd /etc
/etc /tmp
$ dirs
/etc /tmp
-- close terminal --
-- open new terminal --
$ dirs
~
Выше в одной оболочке мы используем pushd
, чтобы поместить текущий каталог в стек каталогов, закрыть терминал, а затем открыть новый терминал. В новом терминале мы видим, что директория, которая была запушена ранее, отсутствует в стеке.
Стек каталогов, используемый командами pushd
и popd
в bash
, является локальным для текущей оболочки. Это означает, что если вы не используете popd
в скрипте, это не повлияет на стек каталогов вне скрипта.
Стек будет очищен, если вы закроете терминал (, так как оболочка завершает работу ).
Стек каталогов также пуст по умолчанию всякий раз, когда вы запускаете новую bash
оболочку.