Bash

更正 umask 值以使用 SSH 私鑰內容自動創建文件

  • October 13, 2021

我正在嘗試找到一種方法來縮短這些行(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")

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