SSH秘密鍵の内容を含むファイルを自動的に生成するには、umask値を変更してください。

SSH秘密鍵の内容を含むファイルを自動的に生成するには、umask値を変更してください。

この行を減らす方法を見つけようとしています(すでに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作成するための値があります(デフォルトはと仮定しています)?7006000022

私もそうしてみましたが、177それもできませんね。

答え1

@Jeff Schallerに同意します。 chmodはumaskに比べて明確に表示されます。演算子でライナーを構築
し、ディレクトリのデフォルト権限を644に変更します。 bashは、演算子の左から右にコマンドを実行しようとし、すべての「左」コマンドがステータス0を返す場合にのみ続行します。&&
.ssh
&&

mkdir -p "${HOME}/.ssh/" && chmod 644 "${HOME}/.ssh/" && echo "${CI_PRIVATE_SSH_KEY}" > "${HOME}/.ssh/id_rsa" && chmod 600 "${HOME}/.ssh/id_rsa"

またはumask .ssh133、177キー、

(umask 133; mkdir -p "${HOME}/.ssh/";umask 177; echo "${CI_PRIVATE_SSH_KEY}" > "${HOME}/.ssh/id_rsa")

答え2

umask 077は次のことを行います。

  • 権限 700 でディレクトリを作成する
  • 権限が600のファイルを作成します。
    ➜ umask 077
    ➜ mkdir foo; ls -ld foo
    drwx------  2 richard  staff  64 13 Oct 12:42 foo
    ➜ touch foo/bar; ls -l foo/bar
    -rw-------  1 richard  staff  0 13 Oct 12:42 foo/bar

関連情報