[Mac] UNIX のユーザとグループの世界観、そしてwheel とは

はじめに

普段あまり意識しないMacのユーザやグループですが、
調べる機会があったのでコラム的な話も交えつつ概要を書いていきます!

世界観・外観を知ることで、
何が分からないか分からない状態から、何が分からないか分かる
くらいになる助けになればと思います。

前提条件

Mac: macOS Catalina 10.15.6

ことの発端

調べ物をしていたとき、adminstaff グループというものが出てきて、
admin とは何だ!となったところから始まります。

管理者なのでroot 的な権限を持てるグループか??などとも思いましたが、
後述しますが実際はけっこう違いました。

ユーザとグループについての僕の当初のイメージ

ユーザにはどんな種類があるでしょうか。
思いつくのは自分のアカウント、root、くらいかな……
サーバで開発していると他の人のアカウントもありますね。

グループは意識したことないのでよく分かりません。
というかなぜグループがあるのかもよく分かりません🤯

とっかかりとしてまず root ユーザについて調べます。

root ユーザとは

Linuxでは、あらゆる権限が与えられているユーザーを「root」あるいは「rootユーザー」「スーパーユーザー」と呼びます。rootというユーザー名でログインすると、あらゆるコマンドの実行やファイル操作ができるようになります。

https://www.atmarkit.co.jp/ait/articles/1706/02/news014_2.html

出典はLinux についての記事ですが、Mac と同じUnix系システムということでご容赦を。

root ユーザは何でもできます。
sudo コマンドを打つとパーミッションを突破して色々操作できるのは
その間だけroot ユーザになっているからなんですね。


ちなみに、sudo は super user do の略と思いきや substitute user do (代理人として実行)の略という説もあるようです。


少し調べると、初期状態では wheel グループに所属するのは root ユーザのみ、という情報がありました。
https://itectec.com/superuser/the-difference-between-the-default-groups-on-mac-os-x/

つまり、所謂 root 的な権限を持つ特権的なグループが wheel ということになりそうです。

微妙に見覚えのある wheel グループですが、本当に root ユーザだけなのか調べます。

wheel グループについて

以下のコマンドを打ちます。
参考) https://superuser.com/a/444218

$ dscacheutil -q group -a name wheel
name: wheel
password: *
gid: 0
users: root

wheel グループについての情報が表示されました。

password はそのままですがパスワードで、 * でマスクされています。
gid はグループIDで0。0なのでいかにも特権的な感じですね。
users がグループに所属しているユーザ。

確かにroot のみ所属しているようです。
やはり強力なグループのようです。

admin や staff グループは?

同じようにコマンドをうちます。

$ dscacheutil -q group -a name admin
name: admin
password: *
gid: 80
users: root <自分のアカウント> ... 
$  dscacheutil -q group -a name staff
name: staff
password: *
gid: 20
users: root <自分のアカウント> _serialnumberd ...

admin グループと staff グループには自分のアカウントが所属していました。

持っているMac が自分専用の場合 admin と staff の違いが実感しづらいかも知れません。

が、やはり admin グループの方が権限が強く
例えばアプリのインストールなどは admin グループの方のユーザしかできないようです。
参考) https://superuser.com/a/20430

自分のMac にはどんなグループやユーザが定義されているのか?

グループ一覧を見てみる

以下のコマンドで見てみます。

 $ dscl . list /GROUPS
_amavisd
_analyticsd
略
utmp
wheel

思っていたよりめっちゃ多かったです。
dscl . list /GROUPS | wc -l でカウントすると131個もありました。

_hogehoge のようなアンダースコアで始まるグループが多かったのですが、
触れるなよ的な圧を感じます。

mail や network や sys などもあり、用途によって色々グループ分けされているようです。

ユーザ一覧を見てみる

以下のコマンドで見てみます。

$ dscl . list /USERS
_amavisd
_analyticsd
略
<自分のアカウント>
root

やはりこちらも思ったより多く、dscl . list /USERS | wc -l でカウントすると103個ありました。

こちらもアンダースコアで始まるユーザが多いです。

daemon や nobody といったユーザがいましたが、
軽く調べたところ古いお作法だったりと個人的にはあまり有効な用途がなさそうに見えます。

ですので僕の場合、ユーザに関しては
root と自分や他人のアカウントのみ意識していればよさそうかなと思いました。

ユーザが所属しているグループ一覧を見てみる

ついでにこちらもコマンドで確認してみます。

$ groups root
wheel daemon kmem sys tty 略

root ユーザについて見てみると、所属グループは20個ほどでした。
131個の全グループに所属していると思ってましたが、そんなことはないんですね。

groups <自分のアカウント> を実行してみるのも面白いかもしれません。

ユーザとグループについての僕の今のイメージ

ユーザは root と自分や他人のアカウント。
あとは nobody とか daemon とか。

グループは権限の持ち方を束ねるもので、そこにユーザを振り分けることで
各ユーザに対する権限を、適切に効率的に管理することができる。

そもそもなぜwheel が特権グループか

けっこう気になるポイントで、
ここが意味不明なので覚えづらいという面があると思います。

wheel はホイール、車輪です。
なぜ車輪が特権グループなのか。

実は英語にはBig Wheel というスラングがあり、
それは大きな車輪の馬車に乗る人、つまり大きな権力を持つ者・組織の重要人物のことを指していたそうです。
参考) https://unix.stackexchange.com/a/1271

Unix はこのスラングを取り入れたと。

なるほどね!
諸説あるようですが、確からしさはありそう。

ということで wheel の意図ができたので、だいぶ覚えやすくなりました。

最後に

以上です。

ユーザとグループについて雲を掴むようなふわふわしたイメージしか持てませんでしたが、
今回調べてみてなんとなく輪郭は分かったと思います。

お疲れ様でした!

[Mac] UNIX のユーザとグループの世界観、そしてwheel とは」に2件のコメントがあります

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。