
私は、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
すべてを抽出するための一時ディレクトリを作成することです。