[노트:이 비슷한 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
두 번째 비트가 마스크됨을 의미합니다. 즉, 이 경우 기본적으로 파일 소유자가 만든 파일에 다른 사용자가 쓸 수 없음을 의미합니다.