Как мы можем получить временное имя файла в приспосабливающем стандарту сценарии IEEE 1003.1?

Думал бы, что Вы добавляете их то же, как Вы были бы с iptables. Вот быстрый документ о IPF все же. http://www.freebsd.org/doc/handbook/firewalls-ipf.html

2
26.01.2014, 02:40
2 ответа

Не легко.

Можно получить (удаленный) временный файл и иметь fd, открытый на нем с:

exec 3<<EOF
whatever
EOF

Но Вы не можете записать в него позже и нет никакой команды, которая может сделать Вас seek назад на fd.

Можно попытаться реализовать его вручную:

mktemp() (
  prefix=$1
  i=0; suffix=
  set -C
  until
    file=$prefix$suffix
    error=$({ : > "$file"; } 2>&1)
  do
    if [ ! -e "$file" ] && [ ! -L "$file" ]; then
      # that probably failed for another reason than noclobber. Give up.
      printf >&2 'Cannot create "%s": %s\n' "$file" "$error"
      return 1
    fi
    i=$(($i + 1))
    suffix=.$i
  done
  printf '%s\n' "$file"
)

Если Вы хотите некоторую случайность в имени файла, awkполучил a rand() с которым можно использовать printf("%c").

Лучше всего должен избежать временных файлов, если это возможно. Примите во внимание, что их очистка является почти так же болью как их создание.

1
27.01.2020, 22:22

Временные файлы являются проблемой безопасности, только если каждый создает их в общем каталоге такой как /tmp или /var/tmp. Для создания временного файла безопасным и надежным способом просто поместите его в каталог, как корневой каталог пользователя, где у других пользователей нет разрешения записи. Например:

tmpname=$HOME/.deleteme$$
some_command >"$tmpname"

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

Чтобы удостовериться, что временный файл удален, создайте прерывание

trap 'rm -f "$tmpname"' EXIT

Оператор прерывания должен быть помещен в сценарий, прежде чем временный файл будет создан.

0
27.01.2020, 22:22

Теги

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