1

Я заметил, что в Ubuntu mktemp позволяет пользователю создавать временные файлы в каталоге, даже если разрешения на запись для этого пользователя не разрешены. Таким образом, я ожидал, что разрешения на mktemp будут читать что-то вроде этого, давая пользователю временные привилегии root при его запуске:

-rwsr-xr-x 1 root root   35392 Nov 19  2012 mktemp

но вместо этого они читают что-то вроде этого:

-rwxr-xr-x 1 root root   35392 Nov 19  2012 mktemp

Там, где я думал, что есть 's', есть 'x', что означает, что mktemp не запускается с привилегиями root. Как mktemp может создавать временные файлы в каталоге, не имея разрешения на это?

1 ответ1

7

По умолчанию mktemp создает временный каталог в /tmp , который по умолчанию доступен для записи любому; если вы передадите опцию --tmpdir в mktemp (или зададите переменную среды TMPDIR ), он попытается создать временный каталог в каталоге, заданном аргументом параметра, и это не удастся, если у вас нет разрешения на запись в данный каталог. Например:

[me@box] $ mktemp
/tmp/tmp.sL1g7rRGQv
[me@box] $ mktemp --tmpdir=/root
mktemp: failed to create file via template `/tmp.XXXXXXXXXXX': Permission denied

Если вы делаете, например, mktemp --tmpdir=/root как пользователь без полномочий root, и это не дает сбоя, тогда происходит нечто очень странное. Вы уверены, что это то, что вы видите?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .