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


11

[참고 : 이 비슷한 Q 는 동일한 bash 오류 메시지와 관련이 있습니다. 이 다른 Q 의 복제본으로 표시되었습니다 . 하지만이 오류에 대한 소스가 매우 다르기 때문에 아래 질문에 대답하겠습니다.]

이 이전 작업 bash 스크립트 줄

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

어느 날이 오류 메시지가 생성되기 시작했습니다.

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


내 경우에는 not의 조합으로 IMA ( ima_policy=appraise_tcb커널 매개 변수) 가 활성화되었습니다 . 그러나 이것은 실제로 일반적인 경우는 아닙니다 :). /tmptmpfs
pevik

답변:


10

umask 777here 문자열 앞에 추가했습니다 . umask를 제거한 후 오류가 사라졌습니다. 교훈 : 여기에 문자열 ( <<<)에 대해 임시 파일이 작성되었으며 여기는 여기 문서 ( <<) 와 관련이 있으며 이들을 작동하려면 적절한 umask 세트가 있어야합니다.



또한 ksh93 또는 tcsh가 아닌 zsh 및 mksh에 영향을줍니다. dash, rc, es 또는 yash는 아니지만 임시 파일 대신 파이프를 사용하기 때문입니다.
Stéphane Chazelas

ksh93 및 tcsh의 경우 파일을 읽기 + 쓰기 모드로 한 번만 열고 데이터를 쓴 다음 처음부터 다시 찾기 때문에 작동합니다.
Stéphane Chazelas

6

필자의 경우 /tmp디렉토리 기본 권한을 변경했습니다 (실수로 0777로 변경했다고 생각합니다).

해결책은 기본 /tmp권한 (1777은 8 진수 (1 = 스티커 비트, 7 = R + W + X)) 으로 되 돌리는 것 입니다.

간단히 말해서 sudo chmod -R 1777 /tmp문제를 해결해야합니다.


어디에서 문제가 발생하는지 알 수 있습니다. 예, 고정 비트는 / tmp에 중요합니다.
타원형보기

2
당신은 아마 -R깃발을 원하지 않을 것입니다 . 모든 사람이 아래의 모든 파일 /tmp을 읽기 / 쓰기가 가능 하도록 변경할 이유가 없습니다 . 이러한 파일 중 일부는 사용자의 보안에 민감합니다.
keithpjolley

1

이 문제에 대한 개인적인 경험은 umask@ eliptical-view와 같이 이진 표기법 이었습니다 . 나는 그 글을 썼다 :

umask 0644 

내가 만든 파일에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.

내가 변경 한 후에는 umask할 수

umask 0022

오류가 사라졌습니다.

실제로 이진 표기법은 이진 보수로 이해해야합니다.

따라서 파일 소유자를 umask쓸 때 아래의 마스크 0에서이 사용자는 자신이 만든 파일에 완전히 액세스 할 수 있습니다. 이 값 2은 두 번째 비트가 마스크됨을 의미하며,이 경우 기본적으로 다른 사용자는 파일 소유자가 작성한 파일에 쓸 수 없습니다.


1
@Paulo Tomé의 편집과 수정에 감사드립니다. 실제로, 8 진수 표기법을 사용하는 것이 일반적이며 명확 umask합니다. 소유자, 그룹 중 하나 및 기타 모든 사람을 위해 Posix 파일 사용 권한에 정확히 3 비트가 포함되기 때문입니다.
힐튼 페르난데스

천만에요. ;)
Paulo Tomé
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.