Files
為什麼 mktemp -u 被認為是“不安全的”?
我最近閱讀了
--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"
在 和 之間
mktemp
,mkdir
另一個程序可以創建具有不同所有權的目錄;或者,對於文件,另一個程序可以創建文件或在其位置創建符號連結……