[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:03313] Re: why groupname = username?



小島基靖です.

「adduser のユーザー登録で ユーザーと同じ名前のグループ登録をすると
  なんのメリットがあるか」 を Q & A 形式でまとめてみました.
# まとめる努力はしたんです時間切れ.もうちょい簡潔にしたいなあ.

結局,マルチユーザーで,ファイルをグループで管理するときに
役に立つということらしいです.


<Q>
なぜ,Debian(or RedHat)で普通に adduser で ユーザー登録すると ユーザー
名と同じグループになるの?
</Q>
<A> 
従来は,主にファイル(ディレクトリ)の所有者の許可モードでファイルの
読み込み,書き込み,実行許可の管理をしていました.これを,ファイルの所
属するグループの許可モードでの管理へ移行するための布石の一つです.
だから,そのまま使っていても特に害はありせん.

(RedHat Linuxでは,各ユーザーだけの所属するグループのことを
ユーザープライベートグループ(UPG:User PrivateGroups)と表記しています.)
</A> 

<Q>
ファイルを所属グループで管理すると,なんのメリットがあるの?
</Q>
<A>
UNIX のファイルのグループ属性を活かして,グループ別にファイル管理をす
るとき,手間を減らすことができます.
例えば,複数のグループに所属するユーザーは,新規ファイル
の作成時におこなっていた,ファイルの所属グループの変更作業から解放され
ます.ただし,初期設定をきちんとおこなうと必要があります.
1つのグループにしか所属してないユーザーは,特に何も変わりません.
</A>

<Q>
ファイルを所属グループで管理するって,どんな設定をしているの?
</Q>
<A>
ファイル(ディレクトリ)の所属グループとその許可モードを変更します.
これにより,ファイルをグループ単位で管理できます.
このためには,ユーザープライベートグループ(UPG)の設定,umask 002の設定,
ディレクトリへの SGID ビットの付加が必要です.
(従来の UNIXのデフォルトは,ファイルの所有ユーザーの「書き込み許可」
でファイル管理していたため,グループ管理がやりにくかった.)
</A>

<Q>   
どうすれば,ファイルを所属グループで管理することができるの?
</Q>
<A>
* 取扱うディレクトリとその下のファイルの所属グループを変える.
* 同じグループのユーザーが書き込みできるように,ディレクトリの設定を
  する.
  (chmod 2775: ユーザー,グループでの属性の書き込み可,Set GroupID ON.)
* 新規作成したファイルが,同じグループのユーザーからは変更できる
  ファイル属性にする. 各ユーザーの設定を  umask 002 とするためには,
  /etc/profile 又は /etc/cshrc.cshrc で umask 002 を設定する.
* 各ユーザーは,そのユーザーだけが所属するグループ(User Private
  Groups)をもつ.ホームディレクトリのグループは,各ユーザーの UPG に
  設定する. これは,adduser が自動作成する.
  (ホームディレクトリへの他人からの書き込みを防止するため.)
</A>

<Q>
ファイルを所属グループで管理するための具体例は?
</Q>

<A>
以下,
"http://www.redhat.com/support/docs/rhl/RHL-4.2-Users-Guide-HTML/manual/doc072.html";
より抜粋し,訳したもの.

* 例えば,/usr/lib/emacs/site-lisp ディレクトリのファイルを取り扱う人の
  グループを作るとする.ユーザーのうち何人かだけは信頼できるとする.
* そんなときは,

  chown -R root.emacs /usr/lib/emacs/site-lisp
  そして,信頼できる人を グループ emacs へ追加する.

* ユーザーがディレクトリの中にファイルを作ることができるように,

  chmod 775 /usr/lib/emacs/site-lisp

* けれども,ユーザーが新規にファイルを作成すると,ファイルはそのユーザー
  のデフォルトのグループに所属する.それを防ぐために

  chmod 2775 /usr/lib/emacs/site-lisp

  これで, /usr/lib/emacs/site-lisp のディレクトリでは,``emacs'' グルー
  プに所属した 新規ファイルが作成される. 
* けれど,新規ファイルは ``emacs'' グループに所属する他のユーザーにも
  編集できるように,ファイルのモードが 664 でなければならない.
  だから,デフォルトの umask は 002 にする.
* これで全部うまくいく.もしも,デフォルトグループを ``users'' に設定
  したとすると,ホームディレクトリの作ったファイルは,``users''に属
  した他の全ての人(たいてい 全員)に書き込み可能になってしまう.
* これを防ぐため,各ユーザーとも``private group'' がデフォルトのグルー
  プになっている.

  まず,デフォルトを umask 002 とし,ユーザー全員を private group に所
  属させることで,簡単にグループ管理ができるし,ユーザーは余計なことを
  せずにグループを利用することができる.
  グループをつくり,そこへユーザーを登録し,そのグループのディレクトリを
  先に書いたように chown と chmod すればよいのです.
</A>

<Q>
なぜ,従来のように全ユーザーが,グループ users にだけ所属していると
だめなのか?
</Q>
<A>
全ユーザーが グループ users にだけ所属している場合,
umask 002 を設定すると,ユーザーのプライベートなファイルも,グループ 
users 全員から書き込み可能になってしまいます.
(従来の UNIXの設定では, umask 022 (ユーザーのみ書き込み可)に設定して
回避していた.)
</A>

<Q>
それでも,adduser で 新規ユーザー登録する時,みな共通のグループにしたい.
</Q>
<A>
/etc/adduser.conf で,以下を変更する.
USERGROUPS=no	# ユーザー登録時の所属グループを USERS_GID にする.
USERS_GID=100	# USERS_GID の番号の設定

/etc/profile or /etc/cshrc.cshrc で umask 022 を設定する.
</A>

-----
    小島基靖    Private E-mail: mkojima@xxxxxxxxxxxx