この章ではシステムにShadow Suiteをインストールした後に知って おくべきだと思われることを説明します。より詳しい説明は各コマンドのオン ラインマニュアルを参照してください。
Shadow Suite にはユーザを追加、変更、削除するためのプログラム
が含まれています。既にadduser
プログラムも持っているかもしれません。
useradd
コマンドはシステムにユーザを追加するために用います。標
準の設定を変えるときにもこのコマンドを実行します。
最初に行なうべきことは標準設定を確認してあなたのシステムに合わせて変更 を加えることです:
useradd -D
GROUP=1 HOME=/home INACTIVE=0 EXPIRE=0 SHELL= SKEL=/etc/skel
標準設定はおそらく気に入らないでしょうから、ユーザを加えるときに各ユー ザに対して全ての項目をいちいち指定するよりも、標準の設定を変えてしまい ましょう。
筆者のシステムでは以下のような設定に変えています:
/bin/bash
に
useradd -D -g100 -e60 -f0 -s/bin/bash
この状態で useradd -D
を実行すると以下の結果を得ます:
GROUP=100 HOME=/home INACTIVE=0 EXPIRE=60 SHELL=/bin/bash SKEL=/etc/skel
もし知りたければ、これらの標準設定は/etc/default/useradd
ファ
イルで確認できます。
これでユーザの追加に useradd
を使えるようになりました。例えば、
標準の設定を使ってユーザ fred
を追加するためには以下のような
操作を行ないます:
useradd -m -c "Fred Flintstone" fred
このコマンドは/etc/passwd
ファイル内に以下のようなエントリー
を作ります:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash
また、/etc/shadow
ファイル内に以下のエントリーを作ります:
fred:!:0:0:60:0:0:0:0
-m
オプションがついているので、ユーザfred
のホームディ
レクトリも生成され、/etc/skel
ディレクトリの内容がコピーされます。
UID は指定していなくても適当に決めてくれます。
これでfred
のアカウントができましたが、アカウントのロックを解
除しない限りfred
はログインすることはできません。ロックの解除
はパスワードを変えることによって行ないます。
passwd fred
Changing password for fred Enter the new password (minimum of 5 characters) Please use a combination of upper and lower case letters and numbers. New Password: ******* Re-enter new password: *******
/etc/shadow
は以下のような内容になります:
fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0
そして、fred
はシステムにログインできるようになります。
他のプログラムでなく useradd
を使う利点は/etc/passwd
と/etc/shadow
の変更が不可分に行なわれることです。つまり、あな
たがユーザを登録するのと同時に他のユーザがパスワードを変更したとしても、
両方とも正しく実行されます。
直接 /etc/passwd
や /etc/shadow
を編集するのはやめて、
用意されたコマンドを利用するべきです。あなたが /etc/passwd
を
編集している間に、あるユーザがパスワードを変更したとすると、そのユーザ
のパスワード変更はあなたがファイルをセーブした時に失われてしまいます。
以下に示すのはuseradd
とpasswd
を使った簡単な対話的ユー
ザ追加スクリプトです。
#!/bin/bash # # /sbin/newuser - A script to add users to the system using the Shadow # Suite's useradd and passwd commands. # # Written my Mike Jackson <mhjack@tscnet.com> as an example for the Linux # Shadow Password Howto. Permission to use and modify is expressly granted. # # This could be modified to show the defaults and allow modification similar # to the Slackware Adduser program. It could also be modified to disallow # stupid entries. (i.e. better error checking). # ## # Defaults for the useradd command ## GROUP=100 # Default Group HOME=/home # Home directory location (/home/username) SKEL=/etc/skel # Skeleton Directory INACTIVE=0 # Days after password expires to disable account (0=never) EXPIRE=60 # Days that a passwords lasts SHELL=/bin/bash # Default Shell (full path) ## # Defaults for the passwd command ## PASSMIN=0 # Days between password changes PASSWARN=14 # Days before password expires that a warning is given ## # Ensure that root is running the script. ## WHOAMI=`/usr/bin/whoami` if [ $WHOAMI != "root" ]; then echo "You must be root to add news users!" exit 1 fi ## # Ask for username and fullname. ## echo "" echo -n "Username: " read USERNAME echo -n "Full name: " read FULLNAME # echo "Adding user: $USERNAME." # # Note that the "" around $FULLNAME is required because this field is # almost always going to contain at least on space, and without the "'s # the useradd command would think that you we moving on to the next # parameter when it reached the SPACE character. # /usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \ -f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME ## # Set password defaults ## /bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1 ## # Let the passwd command actually ask for password (twice) ## /bin/passwd $USERNAME ## # Show what was done. ## echo "" echo "Entry from /etc/passwd:" echo -n " " grep "$USERNAME:" /etc/passwd echo "Entry from /etc/shadow:" echo -n " " grep "$USERNAME:" /etc/shadow echo "Summary output of the passwd command:" echo -n " " passwd -S $USERNAME echo ""
ユーザの追加にスクリプトを利用することは直接/etc/passwd
や
/etc/shadow
を編集したり、Slackware の adduser
プログ
ラムを利用するよりも望ましいです。このスクリプトをあなたのシステムに合
わせて変更して使ってください。
useradd
についてのより詳しい説明はオンラインマニュアルを参照し
てください。
usermod
プログラムはユーザについての情報を変更するためのもので
す。オプションはuseradd
とほとんど同じです。
fred
のシェルを変えようと思ったら、以下のような操作をします:
usermod -s /bin/tcsh fred
これによって、/etc/passwd
のfred
のエントリーは次のよ
うに変更されます:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/tcsh
次に、fred
のアカウントの期限を 1997年9月15日に設定してみましょ
う:
usermod -e 09/15/97 fred
これで/etc/shadow
のfred
のエントリーは次のよ
うに変更されます:
fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0
usermod
についてのより詳しい説明はオンラインマニュアルを参照し
てください。
userdel
は名前の通り、ユーザのアカウントを抹消します。使い方は
単に
userdel -r username
と入力するだけです。
-r
オプションをつけるとユーザのホームディレクトリを(ホームディ
レクトリそのものも含めて)消去します。異なるファイルシステム上にあるファ
イルは手作業で消去しなければなりません。
アカウントを消すのではなく、単にロックするだけの場合には
passwd
コマンドを使います。
passwd
コマンドは普通のパスワード変更の機能を持っています。こ
れに加えて、ユーザrootで実行した場合には、以下のことができま
す。
-l
と -u
)-x
)-n
)-w
)-i
)-S
)
例として、再びユーザfred
を見てみましょう。
passwd -S fred
fred P 03/04/96 0 60 0 0
これは、fred
のパスワードは有効であること、前回の変更は1996年3
月4日であったこと、いつでも変更可能であること、60日後に期限切れになる
こと、fred には警告はなされないこと、パスワードが期限切れになってもア
カウントは無効とならないことを意味しています。
これは、パスワードが期限切れになってからfred
がログインすると
新しいパスワードを要求するプロンプトが出てくるということです。
もし、fred
のパスワードが期限切れになる14日前に警告を出し、期
限切れの14日後にはアカウントが停止となるようにするためには次のような命
令を与えます。
passwd -w14 -i14 fred
このとき、fred
の情報は次のようになります。
fred P 03/04/96 0 60 14 14
詳細についてはpasswd
のオンラインマニュアルを参照してください。
/etc/login
ファイルはlogin
プログラムとShadow
Suite全体の設定ファイルです。
/etc/login
ファイルはプロンプト表示から、ユーザがパスワード変
更をした時に標準のパスワード期限はどうなるかまでの幅広い設定を持ってい
ます。
/etc/login.defs
内に詳しいコメントがありますが、いくつか注意
すべき点があります。
これらのことから重要なファイルであることがわかると思います。ですから、 ファイルがそのものが存在することと正しい設定になっているかどうかを必ず 確認してください。
/etc/groups
ファイルは特定のグループのメンバになるためのパスワー
ドを含むことがあります。この機能はコンパイル時に
/usr/src/shadow-YYMMDD/config.h
ファイル内で
定数SHADOWGRP
を定義していれば有効になっています。
この定数を定義してコンパイルを行なったならば、/etc/gshadow
ファ
イルを作り、グループのパスワード及びグループ管理者についての情報を保持
させなければなりません。
/etc/shadow
ファイルを作った時には pwconv
と呼ばれる
プログラムを使いましたが、/etc/gshadow
に対してはこれに相当す
るものはありません。しかし、このファイルは特に編集する必要はないので問
題にはなりません。
最初に /etc/gshadow
ファイルを作るためには以下の操作を行ない
ます。
touch /etc/gshadow
chown root.root /etc/gshadow
chmod 700 /etc/gshadow
新しいグループを作ると自動的に/etc/group
及び
/etc/gshadow
ファイルに追加されます。ユーザの追加や削除、グルー
プのパスワードの変更などの修正が行なわれた場合には
/etc/gshadow
ファイルも変更されます。
Shadow Suite に含まれるグループを変更するためのプログラムとし
てgroups
, groupadd
, groupmod
,
groupdel
があります。
/etc/group
ファイルのフォーマットは次のようになっています。
groupname:!:GID:member,member,...
各フィールドの内容は次のようになっています:
groupname
グループ名
!
通常はパスワードを保持するフィールドであるが、
Shadow Suite ではパスワードは/etc/gshadow
ファイルに
格納される
GID
グループID(数値)
member
グループのメンバのリスト
/etc/gshadow
ファイルのフォーマットは次のようになります。
groupname:password:admin,admin,...:member,member,...
各フィールドの内容はは以下のようになっています:
groupname
グループの名前
password
エンコードされたパスワード
admin
グループの管理者のリスト
member
グループのメンバのリスト
gpasswd
コマンドはグループに対して管理者やユーザの追加及び削除
を行なう時にだけ使います。root
やグループの管理者リストに入っ
ているユーザはグループのメンバの追加や削除を行なうことができます。
グループのパスワードは root かグループの管理者リストに入って
いるユーザがpasswd
コマンドを使用することで変更できます。
現在のところ、gpasswd
コマンドのオンラインマニュアルはありませ
んが、パラメータなしてgpasswd
を実行することでオプション一覧を
確認することができます。ファイルのフォーマットと意味を理解していればコ
マンドがどのように動作するのかを把握することは簡単です。
プログラムpwck
は/etc/passwd
と/etc/shadow
の内容に一貫性があるかどうかを調べるためのものです。このプログラムはそ
れぞれのユーザ名について以下の項目を調べます:
また、パスワード無しのアカウントがあれば警告します。
Shadow Suiteをインストールしたら、pwck
を実行するとい
うのは良い考えです。定期的(たとえば毎月、毎週)に実行するのもいいでしょ
う。-r
オプションを使えば、cron
を使って定期的に実行さ
せ、結果をメールで報告させることができます。
grpck
は/etc/group
と /etc/gshadow
の一貫性
を確認するプログラムです。このプログラムは以下のチェックを行ないます:
pwck
コマンド同様に、-r
オプションを使って自動的に結
果報告をさせることができます。
ダイアルアップ・パスワードはダイアルインのアクセスを許可しているシステ
ムの、通常のパスワード認証とは別の防衛線です。ローカルあるいはネットワー
ク経由で接続できるユーザは多くいるけれどダイアルインで接続できるユーザ
は制限したい場合には、ダイアルアップ・パスワードが役に立ちます。ダイア
ルアップ・パスワードを有効にするには、/etc/login.defs
を編集し、
DIALUPS_CHECK_ENAB
を yes
にします。
ダイアルアップについての設定は2つのファイルで行います。一つは
/etc/dialups
で、tty の設定を記述します。(回線一つに対して一行
書き、デバイス名の最初の"/dev/"を取り除いたものを記述します。) tty が
書かれていれば、ダイアルアップの接続に対するチェックが行われます。
もう一つのファイルは /etc/d_passwd
です。このファイルには適切
なシェルのパス名と追加のパスワードを記述します。
もし、/etc/dialups
に書かれている回線からユーザがログインし、
/etc/d_passwd
にこのユーザのログインシェルが書かれているなら
ば、正しいパスワードを入力することでアクセス許可を得ることができます。
ダイアルアップ・パスワードは回線に特定のタイプ(PPPやUUCPなど)の接続だ けを許す場合にも有効に利用できます。ユーザが他のタイプの接続(例えばリ ストに載っているシェルを使う)を行う場合にはこの回線のパスワードを知っ ている必要があります。
ダイアルアップ・パスワードを使う前には、前述の設定ファイルを作成する必 要があります。
コマンド dpasswd
を使って /etc/d_passwd
ファイルのシェ
ルに対するパスワードを設定することができます。詳しくはオンラインマニュ
アルを参照してください。