アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (8件)

#3です。


さっき書いたのはかなり昔のSystemVでの経験です。一般ユーザーでも起こりましたので、setUIDビットがオンになっていたんだと思います。
一般ユーザーでtarしてもオーナーが変わる場合は、tar自体を(/tmpにでも)コピーしてそれを実行すると大丈夫です。

>アーカイブした時点のオーナーと同じユーザ名が、たまたま私のシステム内に存在したため
tarファイル中に記録されるのはユーザ名でなくユーザ番号(数字)なので、連番でつけてたりすると結構一致します。
    • good
    • 0
この回答へのお礼

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

そういえばユーザには番号があるのでしたね。
どうりで、たまたま一致したにしても、うまく出来過ぎてると思いました。

お礼日時:2004/01/11 13:34

>挙動に変更するオプションが用意されているはずだ。


その手のオプションは,tarの方言によりいろいろです。
お使いのシステム上のtarのマニュアルを引いてください。

>uidとは何ですか
ユーザID(番号)のことです。

>どのような不都合が考えられますか。
あなたも既にその一つを経験しているじゃないですか。
    • good
    • 0
この回答へのお礼

onosukeさん、ご返信ありがとうございます。
なるほど、そういえばtarには色々な種類があるらしいですね。
マニュアルを見る限りでは、どうやらそのようなオプションは無さそうですw

もう体験してるって??
そうでした。これはしたり。
これは、かなり大きな不都合でした。

しかし、この本にはルートになってから展開すると書いてあるしなー。
質問は文書でしか受け付けないって書いてあるし面倒臭いなー。
って感じですw

お礼日時:2004/01/17 01:58

>rootで展開した場合のみ、このような状況になってしまうのですね。


>いったい何のために、こんな仕様になっているんだか(涙)。

バックアップを作成/復元するためです。
ちなみに,普通,root権限なしに,ファイル所有者の変更は行えない為,rootのみのこの挙動は至極あたりまえのこと。

p.s.
# 一般ユーザのような大きなuidで保存してあるなら
# "rootで展開すべきではない"可能性が濃厚ですねぇ。
    • good
    • 0
この回答へのお礼

onosukeさん、ご返信ありがとうございます。
なるほど、そのような重要な理由があったのですね。
しかしそれならば、これを一般ユーザーと同じような挙動に変更するオプションが用意されているはずだ。
と思うのは私だけでしょうかw

p.s.中のuidとは何ですか。
rootで展開すべきではない可能性があるのですか。
もう展開してしまいましたw
このまま使っていったら、どのような不都合が考えられますか。
(でもこの#マークは、しかとしてもいいって意味でしょうかねw)

お礼日時:2004/01/16 19:49

別のユーザってもしかして


 sys とか bin とか adm とか
じゃありませんか?

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

参考URL:http://docs.sun.com/db/doc/817-0163/6mfvv54rp?l= …
    • good
    • 0
この回答へのお礼

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

どうも、もう少ししたら、お教えいただいた最終手段を実行することになりそうですw

お礼日時:2004/01/11 13:42

rootで展開すると所有者が元のオーナーになるtarなんでしょう。

一般ユーザで展開すれば、展開した本人の所有権になると思いますよ。
ちなみに、そのアーカイブはrootで展開する必要があるのですか?そもそもそのソースの所有者に何か意味があるのですか?そうでなければ、一般ユーザが展開し、必要なものだけコピーすれば済むと思います。
    • good
    • 0
この回答へのお礼

k-841さん、ご返信ありがとうございます。
一般ユーザで展開してみたら本当だ展開した本人の所有権になりました。
rootで展開した場合のみ、このような状況になってしまうのですね。
いったい何のために、こんな仕様になっているんだか(涙)。

このアーカイブはrootで展開する必要があるものなのか、ということですが実は私にも良く分かりません。
rootになって展開すると書いてありましたので、一応その通りにしたという感じです。
あと、こういうみんなで使うファイルが、ある特定のユーザのものになってしまうなんて気分的に嫌だなという気持ちもあります。
しかし一般ユーザで展開しても問題ないのでしたら、もう少し頑張ってみて、それでもダメなら一般ユーザで展開しようと思いました。

お礼日時:2004/01/11 13:23

tar は何種類もありますが、オプションで特に指定しないと、アーカイブした時点のオーナーのIDで展開するバージョンもあります。


tar xvfzo と、小文字オーを追加してみてください。
これで駄目なら、man tar か tar --help でオーナー関連のオプションを調べる。
    • good
    • 0
この回答へのお礼

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

マニュアルにも、それっぽい説明はありませんし・・・うーん困ったな。

お礼日時:2004/01/11 00:49

(No.1の「回答に対するお礼」に対する回答です。


あーそうですか。
ごめんなさい。何もわかりません。

以下、質問の答えにはなっていませんがとりあえず。

すでにご存知かもしれませんが、所有者を変えるなら
chown コマンドでできます。
 chown -R ユーザ名 ディレクトリ名

-R オプションはディレクトリの中のファイル全ての所有者を
指定したユーザに変更するためのものです。
    • good
    • 0
この回答へのお礼

HOGERA3さん、ご返信ありがとうございます。
そうですか、分かりませんか。

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

しかし、この現象はいったい何なんでしょうね。

お礼日時:2004/01/11 00:30

tar のオプションに p をつけて展開してませんか?


もしそうだとしたら p をつけずに展開してみてください。
    • good
    • 0
この回答へのお礼

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

以上より何か分かりますでしょうか

お礼日時:2004/01/10 18:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!