如何更改匿名管道的权限?

ken*_*orb 5 bash permissions umask pipe

我有从变量加载 SSH 密钥的脚本(作为 CI 环境中脚本的一部分),以便不将私有文件保存在公共存储库中,但是ssh-add抱怨权限错误(似乎无法绕过它)。所以我的方法是找到更改动态创建的匿名管道权限的方法。

例如:

$ stat <(:)
  File: ‘/dev/fd/63’
  Size: 0           Blocks: 0          IO Block: 512    fifo
Device: 397f3928h/964639016d    Inode: 818277067   Links: 0
Access: (0660/prw-rw----)  Uid: (  501/  kenorb)   Gid: (   20/   staff)
Access: 2015-10-10 22:33:30.498640000 +0100
Modify: 2015-10-10 22:33:30.498640000 +0100
Change: 2015-10-10 22:33:30.498640000 +0100
 Birth: 2015-10-10 22:33:30.498640000 +0100
Run Code Online (Sandbox Code Playgroud)

显示0660许可。我检查了我的umask,似乎与此无关。

这是一个简单的测试(在 OS X 上,默认为 0660):

$ ssh-add <(cat ~/.ssh/id_rsa)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/dev/fd/63' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Run Code Online (Sandbox Code Playgroud)

在 Linux 上它似乎可以工作,因为它是0500默认设置。这个权限是从哪里控制的?

澄清一下,我不想更改任何文件的权限,因为我想使用匿名管道。

问题是:

如何临时更改管道的权限?

ken*_*orb 5

到目前为止,我已经找到了以下使用命名 FIFO 的解决方法:

$ mkfifo -m 600 fifo
$ cat ~/.ssh/id_rsa >fifo | ssh-add fifo
Identity added: fifo (fifo)
Run Code Online (Sandbox Code Playgroud)

其中该选项-m设置 FIFO 权限。