ファイルの抽出中にtgz
権限に奇妙な変更があることがわかりました! tgz ファイルは root:root に属しますが、フォルダーは 502:games に属します。
[root@rocks7 common]# ls -l
-rw-r--r-- 1 root root 4779534 May 2 2012 scalapack-2.0.2.tgz
[root@rocks7 common]# tar xf scalapack-2.0.2.tgz
[root@rocks7 common]#
[root@rocks7 common]# ls -l
total 98576
drwxr-xr-x 10 502 games 4096 May 2 2012 scalapack-2.0.2
-rw-r--r-- 1 root root 4779534 May 2 2012 scalapack-2.0.2.tgz
ここで問題は何ですか?
答え1
タルボールには、scalapack-2.0.2
ユーザーID 502と、ゲームグループ(またはゲームグループ名)に対応するグループIDが所有するディレクトリが含まれています。これを実行すると見ることができます
tar tvf scalapack-2.0.2.tgz
Tarアーカイブは、ルートとして抽出した後にファイルの内容に加えて所有権と権限を保存するため、このメタデータは抽出されたファイルに適用されます。 tarball自体の所有権は、抽出されたデータの所有権には影響しません。
CentOSを実行しているので、GNUを実行している可能性が高く、リポジトリの所有権と権限を適用せず、オプションを使用してtar
tarballを抽出できます。他の実装にも同様のオプションがあります(--no-same-owner
--no-same-permissions
tar
例えば -o
存在するFreeBSDtar
)。