この章ではシステムに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ファイルのシェ
ルに対するパスワードを設定することができます。詳しくはオンラインマニュ
アルを参照してください。