• ベストアンサー

あり得ない!アーカイブを展開すると所有者が変わってしまう!?

PHPのソースを拾ってきてtar命令でアーカイブを展開したところ 生成されたディレクトリーの所有者を確認してみたら別のユーザのものになってる!!! なにこれ、ありえなくないですか、オレだけですか。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.5

#3です。 さっき書いたのはかなり昔のSystemVでの経験です。一般ユーザーでも起こりましたので、setUIDビットがオンになっていたんだと思います。 一般ユーザーでtarしてもオーナーが変わる場合は、tar自体を(/tmpにでも)コピーしてそれを実行すると大丈夫です。 >アーカイブした時点のオーナーと同じユーザ名が、たまたま私のシステム内に存在したため tarファイル中に記録されるのはユーザ名でなくユーザ番号(数字)なので、連番でつけてたりすると結構一致します。

zyousuke
質問者

お礼

notnotさん、ご返信ありがとうございます。 どうも一般ユーザで展開した場合は問題なく rootで展開した場合のみ以前の所有者になってしまう仕様のようです。 こうなったら生成されたディレクトリー以下全てのファイルとディレクトリーの所有権を無理矢理変更するしかないですかね。 そういえばユーザには番号があるのでしたね。 どうりで、たまたま一致したにしても、うまく出来過ぎてると思いました。

すると、全ての回答が全文表示されます。

その他の回答 (7)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.8

>挙動に変更するオプションが用意されているはずだ。 その手のオプションは,tarの方言によりいろいろです。 お使いのシステム上のtarのマニュアルを引いてください。 >uidとは何ですか ユーザID(番号)のことです。 >どのような不都合が考えられますか。 あなたも既にその一つを経験しているじゃないですか。

zyousuke
質問者

お礼

onosukeさん、ご返信ありがとうございます。 なるほど、そういえばtarには色々な種類があるらしいですね。 マニュアルを見る限りでは、どうやらそのようなオプションは無さそうですw もう体験してるって?? そうでした。これはしたり。 これは、かなり大きな不都合でした。 しかし、この本にはルートになってから展開すると書いてあるしなー。 質問は文書でしか受け付けないって書いてあるし面倒臭いなー。 って感じですw

すると、全ての回答が全文表示されます。
  • onosuke
  • ベストアンサー率67% (310/456)
回答No.7

>rootで展開した場合のみ、このような状況になってしまうのですね。 >いったい何のために、こんな仕様になっているんだか(涙)。 バックアップを作成/復元するためです。 ちなみに,普通,root権限なしに,ファイル所有者の変更は行えない為,rootのみのこの挙動は至極あたりまえのこと。 p.s. # 一般ユーザのような大きなuidで保存してあるなら # "rootで展開すべきではない"可能性が濃厚ですねぇ。

zyousuke
質問者

お礼

onosukeさん、ご返信ありがとうございます。 なるほど、そのような重要な理由があったのですね。 しかしそれならば、これを一般ユーザーと同じような挙動に変更するオプションが用意されているはずだ。 と思うのは私だけでしょうかw p.s.中のuidとは何ですか。 rootで展開すべきではない可能性があるのですか。 もう展開してしまいましたw このまま使っていったら、どのような不都合が考えられますか。 (でもこの#マークは、しかとしてもいいって意味でしょうかねw)

すると、全ての回答が全文表示されます。
  • HOGERA3
  • ベストアンサー率35% (50/139)
回答No.6

別のユーザってもしかして  sys とか bin とか adm とか じゃありませんか? だとしたらほっといていいと思います。 上記ユーザ(アカウント)の意味は、 参考URLの「表 15-2 システムログイン」が参考になるかも。

参考URL:
http://docs.sun.com/db/doc/817-0163/6mfvv54rp?l=ja&a=view
zyousuke
質問者

お礼

HOGERA3さん、ご返信ありがとうございます。 次々に色んな解答が頂けて嬉しいです。 ですが残念ながら、そのようなユーザ名ではありませんでした。 このユーザは、紛れもなく、この私が自信で追加した一般ユーザです。 ユーザ数が少ないので一般ユーザの名前は全員覚えていますw どうも、もう少ししたら、お教えいただいた最終手段を実行することになりそうですw

すると、全ての回答が全文表示されます。
  • k-841
  • ベストアンサー率27% (129/465)
回答No.4

rootで展開すると所有者が元のオーナーになるtarなんでしょう。一般ユーザで展開すれば、展開した本人の所有権になると思いますよ。 ちなみに、そのアーカイブはrootで展開する必要があるのですか?そもそもそのソースの所有者に何か意味があるのですか?そうでなければ、一般ユーザが展開し、必要なものだけコピーすれば済むと思います。

zyousuke
質問者

お礼

k-841さん、ご返信ありがとうございます。 一般ユーザで展開してみたら本当だ展開した本人の所有権になりました。 rootで展開した場合のみ、このような状況になってしまうのですね。 いったい何のために、こんな仕様になっているんだか(涙)。 このアーカイブはrootで展開する必要があるものなのか、ということですが実は私にも良く分かりません。 rootになって展開すると書いてありましたので、一応その通りにしたという感じです。 あと、こういうみんなで使うファイルが、ある特定のユーザのものになってしまうなんて気分的に嫌だなという気持ちもあります。 しかし一般ユーザで展開しても問題ないのでしたら、もう少し頑張ってみて、それでもダメなら一般ユーザで展開しようと思いました。

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.3

tar は何種類もありますが、オプションで特に指定しないと、アーカイブした時点のオーナーのIDで展開するバージョンもあります。 tar xvfzo と、小文字オーを追加してみてください。 これで駄目なら、man tar か tar --help でオーナー関連のオプションを調べる。

zyousuke
質問者

お礼

notnotさん、ご返信ありがとうございます。 なるほど、ということはアーカイブした時点のオーナーと同じユーザ名が、たまたま私のシステム内に存在したため、このような結果になってしまっているのですね。 お教えいただいた小文字のオーを追加する方法を試してみましたが残念ながらダメでした。 マニュアルにも、それっぽい説明はありませんし・・・うーん困ったな。

すると、全ての回答が全文表示されます。
  • HOGERA3
  • ベストアンサー率35% (50/139)
回答No.2

(No.1の「回答に対するお礼」に対する回答です。) あーそうですか。 ごめんなさい。何もわかりません。 以下、質問の答えにはなっていませんがとりあえず。 すでにご存知かもしれませんが、所有者を変えるなら chown コマンドでできます。  chown -R ユーザ名 ディレクトリ名 -R オプションはディレクトリの中のファイル全ての所有者を 指定したユーザに変更するためのものです。

zyousuke
質問者

お礼

HOGERA3さん、ご返信ありがとうございます。 そうですか、分かりませんか。 生成されたディレクトリーの中を見てみると いろんな所有者のファイルが混ざっているようです。 ですので、お教えいただいたchownコマンドで所有者を一括変更するのは、かなり危険な香りがします(汗)。 しかし、この現象はいったい何なんでしょうね。

すると、全ての回答が全文表示されます。
  • HOGERA3
  • ベストアンサー率35% (50/139)
回答No.1

tar のオプションに p をつけて展開してませんか? もしそうだとしたら p をつけずに展開してみてください。

zyousuke
質問者

お礼

HOGERA3さん、ご返信ありがとうございます。 ちょっと確認してみたのですがpオプションはついていないようです。 あとオプションかどうか分からないのですが tarのあとにxvfzという文字列が続いています。 # tar xvfz ファイル名 といった感じです。 以上より何か分かりますでしょうか

すると、全ての回答が全文表示されます。

関連するQ&A