シェルスクリプトマガジン

第4回 ファイルサーバーを作る

 以上で、Sambaのインストールおよび環境構築は完了です。35~39行目は、ユーザー登録処理のステップに進むことの確認処理です。「read」コマンドで入力を受け付けます。「-p」オプションで入力を促すメッセージを付与できます。36~39行目の「case」文で、「y」または「Y」が入力されたときに下のスクリプトに進むようにしています。case文については、第2回を参照してください。

 41~47行目は、ユーザー名とパスワードが書き込まれたファイルからSambaのユーザーを登録する処理です。ファイルから1行ずつ読み出した行を変数に格納する処理は、次のように記述します。

 43行目で「samba_user」変数にユーザー名を格納しています。「awk ‘{print $列番号}’」は、半角スペースで区切った列を取り出す「awk」コマンドです。元のファイルは次のようにタブ区切りですが、1行ずつ変数に格納したときにタブ文字が半角スペースに変更されています。

 44行目では、そのユーザー名で、Linuxのユーザーとして登録しています。設定にもよりますが、SambaのユーザーはLinuxのユーザーでなくてはいけません。なお、ホームディレクトリもLinuxへのログインも不要なので、「-M」と、「-s /bin/false」のオプションを指定しています。「-p」オプションでパスワードとして適当な文字列(noneuse、本来はエンコードした文字列でパスワードを記述する必要があり)を指定しています。これがないと、パスワードの入力が求められます。

 45行目で「samba_password」変数にパスワードを格納しています。パスワードの取り出し方は43行目と同様です。

 46行目で、Sambaのユーザーとして登録します。「pdbedit」が、Sambaのユーザーを登録するコマンドです。「-a」オプションが追加です。「-t」オプションを指定すると、標準入力からパスワードを受け付けられます。パスワードは2回入力する必要があるので、「${samba_password}\n${samba_password}」としてsamba_password変数から2回パスワードを取り出しています。「\n」は[Enter]キーの入力です。「-u」オプションでユーザー名を指定します。

 Sambaのユーザー登録が完了したので、49~51行目で登録完了のメッセージと、現在Sambaに登録されているユーザーのユーザー名を表示しています。「pdbedit –list」で登録ユーザーの情報を一覧で表示できます。ユーザー名は「:」で区切られた列の1列目なので「cut」コマンドで取り出しています。cutコマンドについては、第1回を参照してください。