ユーザ名とパスワードを引数で受け取りLinuxユーザを作成するスクリプト

Bash

はじめに

コマンドライン引数で ユーザ名パスワード を受け取り、Linuxユーザを作成する非インタラクティブなスクリプトをかけないかを思い試してみました。

※複数人がログインするようなサーバ環境で実行した場合、実行されたコマンドがhistoryに残ってしまうためご注意ください。パスワードがバレてしまいます。

検証環境

$ uname -moi
x86_64 x86_64 GNU/Linux

$ bash -version | head -n 1
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

スクリプト

スクリプト名は create_ops_user.sh とでもしておきましょう。

#!/usr/bin/env bash

NAME="${1}"
PASSWORD="${2}"

# Create a passwordless user
useradd "${NAME}"
# Set password
echo "${PASSWORD}" | passwd --stdin "${NAME}"

passwd コマンドは、ログインユーザあるいは指定したユーザのパスワードを変更するコマンドです。

--stdin オプションを指定してやることで、パイプ経由で標準入力に渡された文字列をパスワードとして設定することができます。

実行方法

$ sudo create_ops_user.sh genzouw five_children

# 指定したパスワードでログインできる
$ su genzouw
Password:

ひとこと

取り急ぎ環境構築手順をスクリプト化する必要がありましたが、
AnsibleやTerraform、Dockerfile、Kubernetesマニフェストなどにする時間すらないほど急いでいたのでシェルでやってしまいました。

負の遺産になってしまったらごめんなさい。

Bash