
我使用期望腳本自動將一些支援文件傳輸到終端上。支援檔案在 scp 到目標終端之前會自動壓縮。這是透過一個內部的 Expect 程式來完成的,該程式會自動填寫 scp 的密碼,因此我們不必輸入密碼。 /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
一旦檔案位於遠端電腦上,expect 就會執行以下命令來解壓縮它:
send "cd /tmp ; tar -xzf dropin.tar.gz ; rm dropin.tar.gz ; cd ;\n"
答案1
您已將其包含.
在提供給 的來源集合中tar
。當您提取 tarball 並套用權限時會出現問題。您的來源目錄.
將被提取並套用權限。不幸的是在提取點.
實際上是/tmp
。
修復方法是從 tarball 中排除.
或建立一個臨時目錄以在/tmp
其中提取所有內容。