여기에서 문서에 대한 임시 파일을 생성할 수 없습니다: 권한이 거부되었습니다.

여기에서 문서에 대한 임시 파일을 생성할 수 없습니다: 권한이 거부되었습니다.

[노트:이 비슷한 Q동일한 bash 오류 메시지와 관련됩니다. 중복으로 표시되었습니다이것은 또 다른 질문입니다. 하지만 이 오류의 매우 다른 원인을 찾았으므로 아래에서 내 질문에 답하겠습니다. ]

이전에 작동했던 bash 스크립트 라인

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

어느 날 다음과 같은 오류 메시지가 나타나기 시작했습니다.

여기에서 문서에 대한 임시 파일을 생성할 수 없습니다: 권한이 거부되었습니다.

답변1

제 경우에는 /tmp디렉터리 기본 권한을 변경했습니다(실수로 0777로 변경한 것 같습니다).

해결 방법은 기본 /tmp권한(8진수 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

오류가 사라졌습니다.

실제로 이진 표현은 2의 보수로 이해되어야 합니다.

따라서 umask아래 마스크에서 사람이 0파일 소유자로 글을 쓰면 해당 사용자는 자신이 만든 파일에 대한 전체 액세스 권한을 갖게 됩니다. 이 값은 2두 번째 비트가 마스크됨을 의미합니다. 즉, 이 경우 기본적으로 파일 소유자가 만든 파일에 다른 사용자가 쓸 수 없음을 의미합니다.

관련 정보