newgrp
はログインセッション中に現在のグループ ID を変更するために用いられる。
オプションとして - フラグを与えた場合は、
新たにログインしたのと同じ様に環境が再初期化される。
そうでない場合は、現在の作業ディレクトリを含めて、
現在の環境は変化しない。
newgrp
は現在の実グループ ID を、指定したグループに
(グループ名を指定しなかった場合は /etc/passwd
に記載されたデフォルトのグループに) 変更する。
ユーザにはパスワードがなくグループにはある場合、
あるいはユーザがグループのメンバーではなく
グループにパスワードがある場合には、
そのユーザはパスワードの入力を求められる。
グループのパスワードが設定されておらず、
かつユーザがグループのメンバーでない場合は、
アクセスは拒否される。
sg
コマンドは
newgrp
と同様に動作するが、コマンドを受け付ける。
このコマンドは /bin/sh シェルで実行される。
コマンドが複数の単語からなる場合は、
sg の実行元となるであろうシェルのほとんどにおいて、
これらをクォートする必要があるだろう。
newgrp と sg
のもう一つの違いは、
特定のシェルが newgrp を特別に扱う点にある。
このようなシェルは、自分自身を
newgrp
が生成した新しい実体と置き換える。このようなことは
sg
では起きないので、
sg
コマンドから戻った際には以前のグループ ID に戻る。