Почему mktemp с параметром -u указан в руководстве как небезопасный?

Я хотел создать временный файл, просматривал руководство mktemp и обнаружил, что mktemp с параметром -u указан как небезопасный, в чем причина этого?

        mktemp --help
    Usage: mktemp [OPTION]... [TEMPLATE]
    Create a temporary file or directory, safely, and print its name.
    TEMPLATE must contain at least 3 consecutive 'X's in last component.
    If TEMPLATE is not specified, use tmp.XXXXXXXXXX, and --tmpdir is implied.
    Files are created u+rw, and directories u+rwx, minus umask restrictions.
    
      -d, --directory     create a directory, not a file
      -u, --dry-run       do not create anything; merely print a name (unsafe)

1 ответ

Когда вы используете -u, файл не создается, поэтому использование этого имени в дальнейшем не гарантирует доступа к созданному вами временному файлу.

Существует возможность для другого процесса создать файл с таким именем между вызовами mktempи использовать результат. Этот файл может быть символической ссылкой, позволяющей другому пользователю злоупотреблять вашими разрешениями, чтобы что-то писать.

Если вы используете mktemp -u, нужно очень внимательно следить за тем, чтобы такая раса не была эксплуатируемой.

Обычно лучше создать временный каталог ( mktemp -d) и используйте имена по вашему выбору в этом каталоге.

Другие вопросы по тегам