Files

為什麼 mktemp -u 被認為是“不安全的”?

  • September 9, 2019

我最近閱讀了--help文本(該頁面不可用)並發現了這一點:mktemp``man

 -u, --dry-run       do not create anything; merely print a name (unsafe)

為什麼這是“不安全的”?是否有任何具體原因將其標記為此類?

引用其手冊的全部要點mktemp是“安全地創建臨時文件或目錄”。基本上,在腳本中,您可以編寫

file="$(mktemp)"

或者

dir="$(mktemp -d)"

並根據需要使用任何一個,安全地知道臨時文件和目錄只能由執行命令的使用者訪問(當然,在大多數設置中是root使用者),並且它們不是指向其他東西的符號連結,等(還有一些注意事項;特別是,您需要檢查退出狀態,並且父目錄需要安全使用。有關詳細資訊,請參閱文件。)

mktemp -u不提供這些保證,因為它將文件名的構造與其使用分開;在腳本中,您必須執行(不要這樣做

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

在 和 之間mktempmkdir另一個程序可以創建具有不同所有權的目錄;或者,對於文件,另一個程序可以創建文件或在其位置創建符號連結……

引用自:https://unix.stackexchange.com/questions/539690