• このエントリーをはてなブックマークに追加

【linux豆知識】useraddで一括登録し、自動でパスワードを設定するシェルスクリプト

  • このエントリーをはてなブックマークに追加

pw
zaco muraです。

linuxでユーザを登録するとき、実は面倒なのがパスワードの設定です。useraddでユーザを作ってもそのままではログインできないのでパスワードを設定しますが、passwdコマンドで対話的に設定するとシェルスクリプト化しづらいのです。
そこで一括登録するシェルスクリプトを考えました。そのままコマンドとして入力すればOKなワンライナー版もあります。

前提

・CentOS5、CentOS6で実績あり。たぶんCentOS7でも動く
・perlをインストールする必要があります。(無ければ yum install perlを実行)
・うまくいかなくても責任は取れないので、確認してから使ってください

仕様

・ユーザを作って初期パスワードを設定します。(このコマンドだけでログイン可能になります)
・ユーザ名はechoで与えます。複数ユーザの場合は改行を入れてあげます
・グループIDを指定するとそのグループ内のユーザIDの末尾から連番で作ります
・ユーザ名が既に使われているかどうかを判定し、使われている場合はuseraddしません

ソースコード

シェルスクリプト版

#/bin/bash
  
### 任意のグループIDを設定。(可変値です)
GROUP_ID="1000"

### 登録したいユーザをechoで渡す
echo -e "satou\nsuzuki\nyamada" |while read USERNAME;do

  ### /etc/passwdファイルからユーザIDを取得
  USER_ID=`awk -F ':' '$4=="'${GROUP_ID}'"{ID=$3}END{print ID+1}' /etc/passwd` 

  ### パスワードを生成。( "ユーザ名_pass" という文字列になる)
  PASSWORD=`perl -e "print(crypt('${USERNAME}_pass', 'a5'));"`

  ### 既に登録されてないかのチェック
  grep "${USERNAME}" /etc/passwd > /dev/null 2>&1 

  ### 登録されていない場合、grepの戻り値が1になる
  if [ "$?" == "1" ];then 

    ### useraddを実行
    useradd -u ${USER_ID} -g ${GROUP_ID} -d /home/${USERNAME} -m -p ${PASSWORD} ${USERNAME} 
  fi
done

ワンライナー版

[root@server ~]# export GROUP_ID="1000" ; echo -e "satou\nsuzuki\nyamada" | while read USERNAME;do USER_ID=`awk -F ':' '$4=="'${GROUP_ID}'"{ID=$3}END{print ID+1}' /etc/passwd` ;PASSWORD=`perl -e "print(crypt('${USERNAME}_pass', 'a5'));"`;grep "${USERNAME}" /etc/passwd > /dev/null 2>&1 ;if [ "$?" == "1" ];then useradd -u ${USER_ID} -g ${GROUP_ID} -d /home/${USERNAME} -m -p ${PASSWORD} ${USERNAME} ;fi;done

実行結果

こんな感じで登録されています。

[root@server ~]# tail -3 /etc/passwd
satou:x:1002:1000::/home/satou:/bin/bash
suzuki:x:1003:1000::/home/suzuki:/bin/bash
yamada:x:1004:1000::/home/yamada:/bin/bash

補足・説明

・実はuseraddには-pオプションでパスワードを設定できます。が、暗号化した文字列を入力する必要があるので、perlで暗号化してます。
・エラー処理なんてしません。当たって砕けろです。(賢明なあなたはエラー処理しましょう)
・元々ワンライナーで使っていたのをシェルスクリプト化したので、ツッコミどころ満載です。が、一応使えるはずです。
・ちょっと改修すればファイルから取ってくるとか、引数で渡すとか簡単にできます。がんばって。
・awkの部分がわからなければgoogle先生に確認しましょう。

スポンサーリンク
Sponsords Link
  • このエントリーをはてなブックマークに追加

ZacoDesign

スポンサーリンク
Sponsords Link