web-dev-qa-db-ja.com

ヒアドキュメントの一時ファイルを作成できません:権限が拒否されました

[注: これに似たQ は同じbashエラーメッセージに関するものです。 this other Q の重複としてマークされています。しかし、このエラーの非常に異なる原因を見つけたので、以下の自分のQに答えます。]

この以前は機能していたbashスクリプト行

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

ある日、このエラーメッセージが生成され始めました:

ヒアドキュメントの一時ファイルを作成できません:権限が拒否されました

11
Elliptical view

追加しましたumask 777ヒア文字列の前。 umaskを削除した後、エラーはなくなりました。教訓:ヒア文字列(<<<)、これはヒアドキュメントに関連しています(<<)、これらが機能するためには適切なumaskセットが必要です。

10
Elliptical view

私の場合、/tmpディレクトリのデフォルトの権限を変更しました(誤って0777に変更したと思います)。

解決策は、それをデフォルトの/tmp権限に戻すことでした。これは、8進数で1777(1 =スティッキービット、7 = R + W + X)です。

つまり、Sudo chmod -R 1777 /tmpは問題を解決する必要があります。

6

この問題に関する私の個人的な経験は、@ eliptical-viewと同じように、umaskバイナリ表記でした。私はそれを書いているはずだ:

umask 0644 

私が作成したファイルへの読み取りおよび書き込みアクセス権を私に与えます、何が問題なのですか

umask

umask 0022

エラーは消えた。

実際には、バイナリ表記はバイナリ補数として理解されるべきです。

したがって、下のumaskのマスクで0ファイル所有者の場合、このユーザーは自分が作成したファイルに完全にアクセスできます。値 2は、2番目のビットがマスクされていることを意味します。この場合、デフォルトでは、他のユーザーは、ファイル所有者が作成したファイルへの書き込みを許可されません。

1