scp が /tmp ディレクトリの権限を変更する

scp が /tmp ディレクトリの権限を変更する

私は、expect スクリプトを使用して、サポート ファイルをターミナルに自動的に転送しています。サポート ファイルは、ターゲット ターミナルに scp される前に自動的に tarball 化されます。これは、scp のパスワードを自動的に入力する社内の expect プログラムによって実現されるため、パスワードを入力する必要はありません。個々のファイルは問題なくコピーできますが、tar.gz ファイルをコピーしようとすると、/tmp ディレクトリの権限が変更されます。権限のために /tmp ディレクトリを 1777 に chmod し、それを root.root に chown しています。これは通常の設定方法ですが、常に機能するとは限りません。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すべてを抽出するための一時ディレクトリを作成することです。

関連情報