ユーザ管理

ユーザ ユーザ毎の設定 シェルとシェルスクリプト 特別なユーザ
ユーザ管理 ユーザの変更

グループ グループの確認


ユーザ

UNIX システムではユーザを管理することによって、 ファイルやディレクトリにアクセス権などを設定し、 ファイルを共有したりアクセスを制限できます。

コンピュータを利用する前には、 必ずログインと言う利用者を認証する手続きを行います。 またコンピュータを利用後は、 他人に自分のユーザ権限でコンピュータを利用されないよう、 ログアウトをしなければいけません。

ユーザ毎の設定

UNIX ではユーザを区別して管理しています。 一般的にユーザはホームディレクトリを持ち、 基本的にそのディレクトリより下に、 ファイルやディレクトリを作成できます。 このホームディレクトリには通常ユーザ毎の設定ファイルを置きます。 ($HOME)


> ls -aCF
./                 .desksetdefaults   .lsof_ozzy         .wastebasket/
../                .dt/               .oit/              2629522/
.TTauthority       .dtprofile*        .profile           Support/
.Xauthority        .fm/               .rhosts            app/
.cshrc             .hotjava/          .sh_history        patchset/
.dbxrc             .login             .solregis/

シェルとシェルスクリプト

コンピュータとユーザの間で処理を仲介するソフトウェアが シェルです。 シェルには sh(Bourne Shell)、cshtcshksh などがあります。

シェルにはテキストファイルに記述した処理を実行する機能もあります。 これはシェルが理解できる形式で記述されているテキストファイルで、 特にシェルスクリプトとよびます。

シェルスクリプトであることを示すために、ファイルの先頭行には "#!/bin/csh" を入れます。

  1. 以下を today というファイルに書きます。

    #!/bin/csh
    date +"%y/%m/%d %H:%M:%S" 

  2. today に実行権限を設定します。

    > chmod a+x today
    > ls -l
    合計 2
    -rwxrwxr-x   1 pro817   dba           37  4月 28日  16:18 today 

  3. today を実行します

    > today
    05/04/18 11:29:22

特別なユーザ

UNIX には始めからいくつかのユーザが用意されています。 これらはコンピュータの利用を助けるための、 プログラムを実行したり管理するためのもので、 ログインできないユーザもあります。
特に気をつけなければいけないのは root ユーザです。 このユーザはシステム管理用のユーザで全ての設定を変更できる権限を持ちます。 一般のユーザが利用して、 操作ミスなどでコンピュータ全体の設定を変えてしまわないよう充分注意します。 root ユーザはシステムの変更などを行う場合のみ一時的に利用し、 終了後はただちにログアウトします。




ユーザ管理

ユーザの変更

ユーザがシステムを利用しようとすると、 ユーザ名とパスワードを求められます。 システムを利用できるときそのシステムに対するアカウント があるといいます。

アカウント毎にアクセス権限が設定されており、 利用できるファイルなどに制限が設定されています。 そこで、状況に応じてユーザの権限(アカウント)を変更する必要があります。 アカウントを変更するにはsu (run a shell with substitute user and group IDs)コマンドを使います。 student というアカウントでログインした後 otheruser というアカウントに変更する場合には次のようにします。

  $  su otheruser             

このコマンドを使って root になることもできます。 通常は一般のアカウントで作業を行いますが、 途中でシステムの設定を変更したいときや、 リモートログインで直接 root でログインできないときなどに利用できます。 この場合ユーザ名を指定せずに su コマンドを実行します。

一方 - を付けて実行すると環境設定も root の設定に変更されます。 この場合 root を抜けるには ^D または exit コマンドを使います。

ユーザ情報に関するファイルは "/etc/passwd" です。 ユーザの追加や削除を行うとこのファイルに情報が書き込まれます。

以下は ozzy の /etc/passwd の一部です。


root:x:0:1:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
listen:x:37:4:Network Admin:/usr/net/nls:
nobody:x:60001:60001:Nobody:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x Nobody:/:
pro806:x:500:100::/home13/pro806:/usr/bin/csh
pro816:x:501:100::/home13/pro816:/usr/bin/csh
pro817:x:502:100::/home13/pro817:/usr/bin/csh
pro901:x:504:100::/home14/pro901:/usr/bin/csh

ユーザ情報は 1 行毎に 1 ユーザの情報が記述されています。 設定内容は ":" (コロン)で区切られ、それぞれ次の内容を示します。

項目 1 ユーザ名
項目 2 暗号化したパスワード
項目 3 ユーザID
項目 4 ユーザが所属するグループID
項目 5 ユーザのコメント
項目 6 ユーザのホームディレクトリ
項目 7 ユーザが利用するシェル

例えば pro806 というユーザを見ると次のような事が分かります。




グループ

各アカウントは必ず何らかのグループに属します。 このグループによってもディレクトリやファイルへのアクセスを制限できます。 adduser コマンドによってユーザを作成すると、 標準では同名のグループに属するようになります。 また複数のグループに属することも可能です。

グループに関しての操作は次のものがあります。

グループの確認

グループを確認するには groups コマンドを使います。

> groups
dba

グループ情報に関するファイルは "/etc/group" です。

以下は ozzy の /etc/group です。


root::0:root
other::1:
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
staff::10:
daemon::12:root,daemon
sysadmin::14:
nobody::60001:
noaccess::60002:
nogroup::65534:
dba::100:
http::80:
oinstall::101:

グループ情報も 1 行に 1 グループの情報が記述され、 設定内容は ":" (コロン)で区切られ、それぞれ次の内容を示します。

項目 1 グループ名
項目 2 未使用
項目 3 グループID
項目 4 このグループに所属するユーザ名

例えば daemon というグループを見ると、次のようなことが分かります。

ユーザ、グループを知るコマンドは id です。 たとえば、pro806 のユーザ、グループ id は以下のとおりです。

> id -a
uid=500(pro806) gid=100(dba) groups=100(dba)


【まとめ】

【コマンド】
ls(1) id(1M) su(1M) groups(1) useradd(1M),adduser(8)