无法为此处文档创建临时文件:权限被拒绝

无法为此处文档创建临时文件:权限被拒绝

[笔记:这个类似的Q涉及相同的 bash 错误消息。它已被标记为重复项这另一个问题。但因为我发现了这个错误的一个非常不同的来源,所以我将在下面回答我自己的问题。]

这个之前工作的 bash 脚本行

while ... do ... done <<< "$foo"

有一天开始产生此错误消息:

无法为此处文档创建临时文件:权限被拒绝

答案1

就我而言,我更改了/tmp目录默认权限(我认为我错误地更改为 0777)。

解决方案是将其恢复为默认/tmp权限,即八进制的 1777(1=粘性位,7=R+W+X)。

所以简而言之sudo chmod -R 1777 /tmp应该解决这个问题。

答案2

我已经添加了umask 777在此处字符串之前。删除 umask 后,错误消失。因此我们吸取了教训:为此处字符串 ( ) 创建了一个临时文件<<<,这与此处文档 ( ) 相关<<,并且您必须设置适当的 umask 才能使它们工作。

答案3

我个人对这个问题的经验是使用umask二进制表示法,就像@eliptical-view一样。我以为这样写:

umask 0644 

会给我对我创建的文件的读写访问权限,出了什么问题

我将其更改umask为之后

umask 0022

错误消失了。

实际上,二进制表示法应该理解为二进制补码。

因此,在umask下面的掩码中,当一个人为0文件所有者写入时,该用户将拥有对其创建的文件的完全访问权限。该值2意味着第二位被屏蔽,这意味着在这种情况下,默认情况下不允许其他用户写入文件所有者创建的文件。

相关内容