Почему mktemp -ты считал "небезопасным"?

Можно просто

tmux attach -c directory -t session 2> /dev/null &

присоединение будет завершено немедленно, так как разветвленное фоновое задание не является терминалом. Но ему удастся изменить рабочий каталог сеанса tmux.

Редактировать:Я исправил -sс помощью -t, но этот трюк больше не работает в tmux 3.1b.

-1
09.09.2019, 04:08
1 ответ

Весь смысл mktempзаключается в том, чтобы, цитируя его руководство, «безопасно создать временный файл или каталог». По сути, в скрипте вы можете написать

file="$(mktemp)"

или

dir="$(mktemp -d)"

и используйте любой из них по своему усмотрению, зная, что временный файл и каталог доступны только пользователю, выполнившему команду (, и root, конечно, в большинстве настроек ), и что они не t символическая ссылка на что-то другое и т. д. (Есть еще несколько предостережений; в частности, вам нужно проверить статус выхода, а родительский каталог должен быть безопасным для использования. Подробности см. в документации .)

mktemp -uне дает этих гарантий, поскольку отделяет построение имени файла от его использования; в скрипте вам нужно запустить(не делайте этого)

dir="$(mktemp -u)"
mkdir "$dir"
chmod 700 "$dir"

Между mktempи mkdirдругой процесс может создать каталог,с разным правом собственности; или, в случае файла, другой процесс может создать файл или создать на его месте символическую ссылку...

6
28.01.2020, 05:07

Теги

Похожие вопросы