Linuxの仕組みについて質問です。

あるファイルが存在して、所有者がhogeだとして、その所有者hogeをuserdelしたとします。
すると、所有者名と所有グループ名が数字になるのですが、これは一体どういう状態なのでしょうか。


sudo /usr/sbin/useradd hoge -m
sudo /usr/sbin/userdel hoge

% ls -l /home
合計 12
drwx------ 2 502 502 4096 2月 24 15:18 2013 hoge

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/03/02 17:46:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:windofjuly No.2

回答回数2625ベストアンサー獲得回数1149

ポイント60pt

名称じゃなくてUIDやGIDが出ちゃってますね。

ファイルを管理しているテーブルには、
所有者名hogeはなく所有者ID(UID:今回は502)が保存されます。

lsコマンドがファイル管理用のテーブルから所有者IDを取得して、
ユーザー管理用のテーブルから所有者名を取得しようとしても、
userdelで所有者hogeを削除してしまったので、所有者名はわかりません。
だからしかたなく所有者IDの502を表示してます。

所属グループもファイル管理用のテーブルから探るのですが、
これもグループ管理用のテーブルから消えてますから、
グループIDを検索することができず、しかたなくGIDを表示します。

他2件のコメントを見る
id:windofjuly

利用しているファイルシステムがinodeを使うファイルシステムならinodeですが、
内部を直接見る方法までは知らないですし、そこまで求められるとは想像してませんでした。
すみません。

既に知ってそうなので不要でしょうけど他の人のためにinodeの概要をwikipediaで・・・。
http://ja.wikipedia.org/wiki/Inode

2013/02/24 16:18:21
id:DQNEO

すみません。
好奇心で聞いてみただけでした。
あとは自分で調べます。
ありがとうございました。

2013/02/24 17:28:00

その他の回答1件)

id:oil999 No.1

回答回数1728ベストアンサー獲得回数320

ポイント40pt

その数字は、削除したユーザーのuidとgidが表示されている状態です。

【参考】UIDとGID

http://www.linux-beginner.com/linux_kihon22.html

【参考】Linux ユーザーアカウントの削除 - userdel

http://kazmax.zpp.jp/linux_beginner/userdel.html

他1件のコメントを見る
id:oil999

uderdel は /etc/passwd からユーザー名を削除します。ファイルシステムへは影響しません。
ls は uid や gid と /etc/passwd にあるユーザー名をマッチングして表示するので、ユーザー名がなくなると、uidとgidしか表示できなくなるわけです。

2013/02/24 16:39:24
id:DQNEO

なるほど、/etc/passwdとファイルシステムは独立してるのですね。

2013/02/24 17:27:06
id:windofjuly No.2

回答回数2625ベストアンサー獲得回数1149ここでベストアンサー

ポイント60pt

名称じゃなくてUIDやGIDが出ちゃってますね。

ファイルを管理しているテーブルには、
所有者名hogeはなく所有者ID(UID:今回は502)が保存されます。

lsコマンドがファイル管理用のテーブルから所有者IDを取得して、
ユーザー管理用のテーブルから所有者名を取得しようとしても、
userdelで所有者hogeを削除してしまったので、所有者名はわかりません。
だからしかたなく所有者IDの502を表示してます。

所属グループもファイル管理用のテーブルから探るのですが、
これもグループ管理用のテーブルから消えてますから、
グループIDを検索することができず、しかたなくGIDを表示します。

他2件のコメントを見る
id:windofjuly

利用しているファイルシステムがinodeを使うファイルシステムならinodeですが、
内部を直接見る方法までは知らないですし、そこまで求められるとは想像してませんでした。
すみません。

既に知ってそうなので不要でしょうけど他の人のためにinodeの概要をwikipediaで・・・。
http://ja.wikipedia.org/wiki/Inode

2013/02/24 16:18:21
id:DQNEO

すみません。
好奇心で聞いてみただけでした。
あとは自分で調べます。
ありがとうございました。

2013/02/24 17:28:00
  • id:JULY
    重箱の隅をつつく話になりますが、UID の番号から該当するアカウント名を探す際、参照するのは /etc/passwd だけとは限りません。古くは NIS、今時だと LDAP 上にアカウント情報を持たせている場合もあります。

    これらの複数の情報源をまとめて扱うための処理が、UNIX 系 OS には古くから用意されていて、Name Service Switch と呼ばれます。

    で、Name Service Switch 経由でユーザ情報等を取得する手段が予め用意されていて、アカウント名から各種情報を取得するのは、C 言語用の関数で getpwnam というのが用意されています。
    http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/getpwnam.3.html
    ls で表示するのは UID 番号からアカウント名の取得なので、getpwuid が使われていると思われます。

    あと、今回と同じような現象は Linux にかぎらず Windows でも起きます。よくあるのは、他の PC につながっていたハードディスクをつないで、そのディスク上にあるファイルやフォルダのプロパティで「セキュリティ」タブを表示すると、「S-1-....」といった番号が表示される事があります。

    UNIX 系 OS では、UID は単純な番号ですが、Windows では SID と呼ばれる識別子が使われます。
    http://www.atmarkit.co.jp/fwin2k/win2ktips/307sid/sid.html
    ディスク上に保存されている情報はこの SID で、それを表示する時に OS が認識しているアカウント名やグループ名を表示し、見つからなければそのまま表示する、というのは、DQNEO さんが Linux 上で体験したのと、基本的に同じ現象になります。
  • id:DQNEO
    ありがとうございます!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません