Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日:

Macでもユーザが番号で管理されてるって本当?

著者: 千種菊理

Macでもユーザが番号で管理されてるって本当?

Macのマイナンバー

10月5日、「マイナンバー制度」が施行され、国民一人一人に通し番号が割り当てられ、社会保障や税、災害対策で利用されるようになりました。番号をつける最大のメリットは、「同じか、そうでないか」を判別しやすいということ。つまり名前の場合、同姓同名や表記の揺らぎなどで、同一人物かを判断するのに難しいときがありますが、一人一つの通し番号だったら、同じかそうでないかは数値の比較ですぐにわかるというわけです。

これはUNIXや、Mac、ウィンドウズ、といったコンピュータの分野でも一緒です。UNIXの場合、ユーザ名には空白を含まないアルファベット数文字を使いますが、内部的な処理はすべてユーザIDもしくは「UID」と呼ばれる整数値で行われています。ファイルの所有者なども、実は数値で記録されていて、lsコマンドなどでの表示のときにその数値に対応するユーザ名を出しているのです。

UNIXの流れをくむOS Xでも、同様にユーザはUIDで管理されています。ただ、OS Xでは短いユーザ名(アカウント名)だけではなく、空白や全角を含む長い「フルネーム」も使えます。アルファベットだけの「appletaro」より、日本語で「林檎太郎」など使えるため、こちらのほうがわかりやすいですよね。

UIDはただの数値のため、何番であるかには意味がありませんが、例外がいくつかあります。UNIXおよびOS Xでは、0番だけは特別で、「root」と呼ばれるアカウントで使うものになっています。システム上も、UIDが0のユーザだけが許可される機能があちこちにあります。8月号で解説した「root」アカウントがこれです。

また、UNIXでは慣習的にだいたい100番以下はWEBサーバやメールサーバ用のサービス向けのアカウントに使われ、ユーザが操作する通常のアカウントはそれよりあとの番号になります。サービスが使う番号には、rootのようなシステム上の特別な処理はないのですが、分けておいたほうがわかりやすいといった理由です。

OS Xでも同じで、500以下の番号はサービス向けのアカウントで使われます。Macを使うとき最初に作られるアカウントは、UIDが501になり、それ以降はユーザを作成するごとに502、503…と番号が増えるわけです。また、OS Xではサービス向けのアカウント名は「_(アンダーバー)」から始まる、というルールになっています。ユーザが使う短い名前と極力かぶらないようにしているわけです。

ポイントとして、UNIXも、それを引き継いだOS Xも、数値による区別は原則、そのコンピュータ上でのみ有効だということです。AさんのMacの最初のユーザと、BさんのMacの最初のユーザは同じUID 501番を使いますので、USBメモリ上に記録されたファイルの所有者が、AさんのMacのUID・501なのか、BさんのMacのUID・501なのか、わからないのです。

ウィンドウズの場合は、ユーザなどの識別には「SID」と呼ばれる長い整数が使われます。SIDは「S-1-5-21-2884293347-2994441399-1191775226-2002」といったように非常に長い数値のうえ、いくつかの部分に分けられています。また、SIDはユーザだけではなく、グループやコンピュータの区別にも使われます。ウィンドウズがインストールされると、そのコンピュータのSIDが自動生成されるのです。この数値は乱数を元に決められており、まず重複しないようになっています。各コンピュータごと同じ数値が使われるUNIXやMacと違って、ウィンドウズユーザのSIDは世界で唯一の、1人だけの番号になります。その分、長いのですね。

UIDの確認方法

「システム環境設定」の[ユーザとグループ]にて、ユーザのアイコンを右クリックすると詳細オプションの設定ができ、ここでユーザID(UID)が確認できます。なお、ここの設定を変えるのは大変危険ですので注意してください。

実はMacにもあるSID

OS Xになってからバージョンを経るにつれ、ウィンドウズとの相互運用性が高まってきました。メールはウィンドウズサーバで動作するエクスチェンジサーバをサポートし、アクティブディレクトリによるシステム管理を受け入れるようにも構成できます。ファイル共有に至っては、OS X10・9マーベリックスよりウィンドウズのファイル共有プロトコルであるSMBがデフォルトになっており、アップル独自のファイル共有プロトコルAFPは使われなくなってきています。

さて、OS XでSMBを使ったファイル共有を有効にすると、接続してくるウィンドウズクライアントはファイルの所有権をSIDで識別しようとします。一方、HFS+ファイルシステムにはUIDで所有者を記録しています。この齟齬はどうやって解決するのでしょう?

実は、OS XのユーザはUID以外にも、SIDやUUIDといった一意となる番号を複数用意しています。あるユーザに割り当てられたSIDが何番なのか、UID501の人のSIDは何番か、あるSIDに対応するユーザが誰かは、「dsmemberutil」というコマンドで確認することができます。ソフトウェアからなら、オープンディレクトリフレームワークのAPIで確認ができます。

「dsmemberutil」の実行結果

ターミナルコマンド「getsid」でSID、「getuuid」でUUIDを取得できます。なお、ユーザやグループのSIDは、マシンのSID+連番でできていますが、ウィンドウズの場合は1000から、Macの場合は2000から開始して2ずつ加算されているようです。

ユーザ情報はどこにある?

さて、ユーザアカウントの情報、ユーザ名やUID、SID、UUIDといった番号やアイコンなどはどこに格納されているのでしょう?

先にも出てきましたが、これらの情報を操作するのが「オープンディレクトリフレームワーク」です。オープンディレクトリフレームワークはその下にいくつかのプラグインを保有していて、あるときはローカルのファイル群から、あるときはLDAPを通じてオープンディレクトリサーバ、またあるときはウィンドウズのアクティブディレクトリといったディレクトリサービスから情報を受け取ります。

ほとんどのMacはディレクトリサービスの管理外、単体で管理されています。UNIXの場合は「/etc/passwd」というファイルにユーザの情報が記載されます。

OS Xの場合は、「/var/db/dslocal」というフォルダの下に項目ごと複数プロパティリスト(plist)ファイルに分散して格納されています。もちろん、こちらのファイルを直接編集するのは非常に危険です。ユーザ情報の変更は「システム環境設定」から行うべきでしょう。

【 ディレクトリサービス 】

ユーザやグループ、コンピュータやプリンタなどといった各種情報をまとめて管理して、一意に保つための仕組みを「ディレクトリサービス」と呼びます。企業レベルでのコンピュータの運用では、どのパソコンでもUID・500はAさん、などとIDの番号とユーザが統一されていたほうが都合がいいですし、たとえば「EnterpriseSales」というグループならば、どのパソコンでも法人営業の営業職が全員登録されているほうが便利というわけです。これを実現するのがディレクトリサービスです。ウィンドウズサーバのアクティブディレクトリがその代表になります。また、OS Xサーバにはオープンディレクトリというアップルのディレクトリサービスが付属しています。

【 /etc/passwdとshadowファイル名 】

UNIXでは古くから[etc]フォルダにある[passwd]ファイルにユーザの情報がすべて記載されていました。ただ、90年代後半を境に、パスワードだけはセキュリティ上の理由から、別のファイルに保存されるようになっています。OS Xを含むBSDという系譜のUNIXでは「/etc/master.passwd」にパスワードやその有効期限が記載されています。Linuxでは/etc/shadowというファイルが相当します。OS Xでも互換性のために/etc/passwdファイルはあります。しかし、そこにはシステムサービス向けのアカウントだけが記載されています。

【GID】

UNIXやMacでは、ユーザIDだけでなくグループもGID(グループID)と呼ばれる番号で管理されています。ウィンドウズの場合は、こちらもユーザと同じくSIDで区別されます。

【MDM】

もっとも、ディレクトリサービスによる集中管理より、昨今はプロファイルベースでMDM(Mobile Dveice Management:モバイル端末管理)による管理のほうが主流になりつつある。

文●千種菊理

本職はエンタープライズ系技術職だが、一応アップル系開発者でもあり、二足の草鞋。もっとも、近年は若手の育成や技術支援、調整ごとに追い回されコードを書く暇もなく、一体何が本業やら…。