[참고 : 이 비슷한 Q 는 동일한 bash 오류 메시지와 관련이 있습니다. 이 다른 Q 의 복제본으로 표시되었습니다 . 하지만이 오류에 대한 소스가 매우 다르기 때문에 아래 질문에 대답하겠습니다.]
이 이전 작업 bash 스크립트 줄
while ... do ... done <<< "$foo"
어느 날이 오류 메시지가 생성되기 시작했습니다.
여기 문서에 대한 임시 파일을 만들 수 없습니다 : 권한이 거부되었습니다
답변
umask 777
here 문자열 앞에 추가했습니다 . umask를 제거한 후 오류가 사라졌습니다. 교훈 : 여기에 문자열 ( <<<
)에 대해 임시 파일이 작성되었으며 여기는 여기 문서 ( <<
) 와 관련이 있으며 이들을 작동하려면 적절한 umask 세트가 있어야합니다.
답변
필자의 경우 /tmp
디렉토리 기본 권한을 변경했습니다 (실수로 0777로 변경했다고 생각합니다).
해결책은 기본 /tmp
권한 (1777은 8 진수 (1 = 스티커 비트, 7 = R + W + X)) 으로 되 돌리는 것 입니다.
간단히 말해서 sudo chmod -R 1777 /tmp
문제를 해결해야합니다.
답변
이 문제에 대한 개인적인 경험은 umask
@ eliptical-view와 같이 이진 표기법 이었습니다 . 나는 그 글을 썼다 :
umask 0644
내가 만든 파일에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.
내가 변경 한 후에는 umask
할 수
umask 0022
오류가 사라졌습니다.
실제로 이진 표기법은 이진 보수로 이해해야합니다.
따라서 파일 소유자를 umask
쓸 때 아래의 마스크 0
에서이 사용자는 자신이 만든 파일에 완전히 액세스 할 수 있습니다. 이 값 2
은 두 번째 비트가 마스크됨을 의미하며,이 경우 기본적으로 다른 사용자는 파일 소유자가 작성한 파일에 쓸 수 없습니다.