Bash
更正 umask 值以使用 SSH 私鑰內容自動創建文件
我正在嘗試找到一種方法來縮短這些行(
CI_PRIVATE_SSH_KEY
已設置):mkdir -p "${HOME}/.ssh/" chmod 700 "${HOME}/.ssh/" echo "${CI_PRIVATE_SSH_KEY}" > "${HOME}/.ssh/id_rsa" chmod 600 "${HOME}/.ssh/id_rsa"
這是我到目前為止所擁有的:
(umask 077; mkdir -p "${HOME}/.ssh/"; echo "${CI_PRIVATE_SSH_KEY}" > "${HOME}/.ssh/id_rsa")
但這並不完全有效,因為該目錄是在沒有
group
+other
權限的情況下創建的。所以我的問題是:是否有一個
umask
值可以讓我創建目錄700
和文件600
(假設預設值為0022
)?我也試過
177
了,但它也不起作用。
我同意@Jeff Schaller 的觀點,與 umask 相比,chmod 清晰明了。
嘗試使用
&&
運算符建構一個襯裡,並將目錄的首選權限
.ssh
更改為 644 bash 將嘗試從運算符的左到右執行命令, 並且僅在所有“左側”命令返回狀態為 0 時繼續
&&
mkdir -p "${HOME}/.ssh/" && chmod 644 "${HOME}/.ssh/" && echo "${CI_PRIVATE_SSH_KEY}" > "${HOME}/.ssh/id_rsa" && chmod 600 "${HOME}/.ssh/id_rsa"
或 umask 133 為
.ssh
, 177 為密鑰,(umask 133; mkdir -p "${HOME}/.ssh/";umask 177; echo "${CI_PRIVATE_SSH_KEY}" > "${HOME}/.ssh/id_rsa")