正确的 umask 值以自动创建包含 SSH 私钥内容的文件

正确的 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,但也不起作用。

答案1

我同意@Jeff Schaller 的观点,chmod 与 umask 相比是清晰可见的。
尝试使用&&操作员构建一个衬垫
,并将目录的首选权限.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")

答案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

相关内容