HP-UX General
1822904 メンバー
3718 オンライン
109645 解決策
新規ポスト

ownerIDの確認

 
Ya_Ta
アドバイザー

ownerIDの確認

ファイルをllで確認したところownerのIDがnobodyになっていたためIDを確認したいと思い、# id nobodyを実行したらuid=4294967294(nobody) gid=4294967294(nogroup)と表示されファイルのownerIDがわかりませんでした。実際のIDを確認する方法を教えてください。
8件の返信8
テレコム担当者
尊敬されているコントリビューター

ownerIDの確認

/etc/passwd の nobody の UID はいくつになっていますか?
馳夫
アドバイザー

ownerIDの確認

/etc/passwdを見てください。

「:」で区切ってあって、左から2カラム目がuid、3カラム目がgidです。

nobody:*:-2:-2::/:

つまり、どちらも-2になります。
Ya_Ta
アドバイザー

ownerIDの確認

回答ありがとうございます。馳夫さんの言うとおりnobody:*:-2:-2::/:になっています。UIDが-2(マイナス)で割り当てることが可能とは知りませんでした。UIDが-2になっていないとnobodyとは表示されませんよね。マイナスの場合すべてnobodyになるとか。。

N.Hanyu
貴重なコントリビューター

ownerIDの確認

> マイナスの場合すべてnobodyになるとか

新たに作成するユーザやグループには、負の値を

与えることは駄目です。確か、SAMなどで作成する

場合は、ERRが出た記憶があります。

vipwなどで、無理くりUIDを負にしたりすると、

suなどしようとしたら、IDが不適切とのメッセージ

が出ます。これは、グループも同じです。

UIDが、マイナス=nobodyは成り立たないと思います

UID:-2 のデフォルトユーザのみではないでしょうか?
rawsq
貴重なコントリビューター

ownerIDの確認

以下、vxfsファイルシステムを利用している場合です。

/dev/vg01/lvol2が/lvm2にマウントされています。

# cd /lvm2

# ls -i test

4 test ← iノードを調べます。今回は4です。

# cd /

# umount /lvm2 ← アンマウントします。

# print "4i\nq\n" | fsdb -F vxfs /dev/vg01/lvol2 ← fsdbを利用します。iノードが4なので4iとします。ここは読み替えてください。

inode structure at 0x00000449.0000

type IFREG mode 100644 nlink 1 uid 0 gid 3 size 2451 ← ココです。

atime 1082080492 590001 mtime 1082080492 620000 ctime 1082081921 720001

aflags 0 orgtype 1 eopflags 0 eopdata 0

fixextsize/fsindex 0 rdev/reserve/dotdot/matchino 0

blocks 3 gen 0 version 0 20009 iattrino 0 noverlay 0

de: 1285 0 0 0 0 0 0 0 0 0

des: 3 0 0 0 0 0 0 0 0 0

ie: 0 0 0

ies: 0

#

fsdbにてメタデータを読んでいます。

「読んでいるだけ」ですが、気持ち悪ければfsckを実行してください。

詳しくはman fsdb_vxfsで。

ちなみに、nobodyの場合、どのようなSID/UIDになっているのでしょう?
rawsq
貴重なコントリビューター

ownerIDの確認

> マイナスの場合すべてnobodyになるとか

調べてみました。

利用できるuidの個数は最大で「/usr/conf/h/param.hにあるMAXUID=MAXINT=0x7FFFFFFF」のようですね。

つまり0〜2147483646までですか。

fsdbでuidに0xFFFFFFF0(-16)とセットすると(強引ですが、)

# ll

total 6

-rw-r--r-- 1 4294967280 sys 2451 Apr 16 13:22 test

drwxr-xr-x 2 root root 96 Apr 16 13:22 lost+found

#

となります。

idコマンドでは符号なしでuidが表示されていただけのでしょうか。

よって、今回出力されている4294967294は16進でいうと0xFFFFFFFEがuidとして入っていると思われます。

なぜこうなったかは不明ですが。
rawsq
貴重なコントリビューター

ownerIDの確認

追記

上の例では強引にuidを-16としていますが、通常はinvalid uidという事でfsckにてチェックされます。

nobodyはnfsなどが利用する予約されたユーザなので-2という負の値をuidとして持っていてもfsckでのチェック対象になりません。
ボーボボ
時折のアドバイザー

ownerIDの確認

確証はありませんが。

おそらく、2の補数で負数を表現しているのではないかと。

-2を2の補数であらわすと0xFFFFFFFE になりますので。

-2を格納するときは、2の補数で格納されているが、UIDが整数しかサポートしていないため、符号付のデータと認識せずにそのまま、符号なしとして表示してしまったのではないでしょうか。