scp는 /tmp 디렉토리의 권한을 변경합니다.

scp는 /tmp 디렉토리의 권한을 변경합니다.

나는 일부 지원 파일을 터미널에 자동으로 전송하기 위해 Expect 스크립트를 사용합니다. 지원 파일은 scp 이전에 대상 터미널에 자동으로 압축됩니다. 이는 scp의 비밀번호를 자동으로 입력하는 내부 Expect 프로그램을 통해 수행되므로 비밀번호를 입력할 필요가 없습니다. 개별 파일은 문제 없이 복사할 수 있는데 tar.gz 파일을 복사하려고 하면 /tmp 디렉터리의 권한이 변경됩니다. 권한을 얻기 위해 /tmp 디렉토리를 다시 1777로 변경하고 이를 일반적으로 설정하는 방식인 root.root로 변경했지만 이것이 항상 작동하는 것은 아닙니다. sqlite는 /tmp에 임시 파일을 쓸 수 없기 때문에 매우 파괴적인 sqlite 오류가 발생합니다. 이 문제의 정확한 원인을 어떻게 확인할 수 있습니까? 나는 그것이 tar.gz 파일과 관련이 있다는 것을 알고 있지만 tar가 파일의 권한을 보존한다는 인상을 받았습니다.

내 디렉터리에 있는 파일의 권한은 다음과 같습니다.

-rw-rw-r-- 1 aembree aembree  88K Oct  2 15:20 dropin.tar.gz

/tmp를 전송하기 전에 ls -al에서는 다음과 같습니다.

drwxrwxrwt  15 root root 8.4K Oct  2 15:08 tmp

전송 후 /tmp는 다음과 같습니다.

drwxrwxr-x  15 10539 10539 8.4K Oct  2 15:01 tmp

실행 중인 tar 명령은 다음과 같습니다.

tar -vPczf /home/aembree/bin/resources/dev/dropin.tar.gz --exclude='helperscript' -C $dropinlist . > /home/aembree/bin/resources/logs/tarlog

파일이 원격 시스템에 있으면 다음 명령을 실행하여 압축을 푼다.

send "cd /tmp ; tar -xzf dropin.tar.gz ; rm dropin.tar.gz ; cd ;\n"

답변1

.제공된 소스 컬렉션에 포함시켰습니다 tar. 타르볼을 추출하고 권한을 적용할 때 문제가 발생합니다. 소스 디렉터리가 .추출되고 권한이 적용됩니다. 불행히도 추출 지점 .은 실제로 /tmp.

해결 방법은 모든 내용을 추출할 타르볼에서 .임시 디렉터리를 제외하거나 생성하는 것입니다./tmp

관련 정보