我正在尝试找到一种方法来缩短这些行(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