/tmp에서 파일 권한이 거부되었습니다.

/tmp에서 파일 권한이 거부되었습니다.

파일 이름을 읽고, 데이터를 선택하고, 테이블을 작성한 다음 헤더를 추가하는 bash 스크립트가 있습니다. 안타깝게도 헤더를 추가하고 출력 파일을 제공할 때 다음과 같은 오류 메시지가 나타납니다.

./big_table_rcp.sh: line 153: /tmp/out: Permission denied

이는 다음 줄과 연결됩니다.

| cat - out_${scenario}.txt > /tmp/out && mv /tmp/out ${gauge}_${scenario}.txt

출력 파일에 대한 액세스 권한을 부여하는 방법을 아는 사람이 있습니까?

답변1

/tmp/out디렉터리에 액세스할 수 있는 권한이 없기 때문에 권한 오류가 발생할 수 있습니다 /tmp.

문제가 있는 줄 앞에 파일에 어떤 권한이 있는지 ls -l /tmp | grep out확인하는 것과 같은 내용을 추가하세요./tmp/out

또한 을 사용하지 말고 /tmp/out을 사용하십시오 mktemp.

tmpfile=`mktemp`
your code here | cat - out_${scenario}.txt > "$tmpfile" && mv "$tmpfile" ${gauge}_${scenario}.txt

에서 man mktemp:

임시 파일이나 디렉터리를 안전하게 생성하고 해당 이름을 인쇄합니다.

답변2

사용하지 마십시오 /tmp/out. 그러나 /tmp/out.$$동시 실행이나 남은 프로세스의 경우 충돌하지 않으며 더 좋은 점은 /tmp/out.${LOGNAME}.$$이를 사용하면 사용자 수준 정리가 가능하다는 것입니다.

관련 정보