Linuxで管理者ユーザーを自動的に生成する機能的なbashスクリプトの作成

Linuxで管理者ユーザーを自動的に生成する機能的なbashスクリプトの作成

以下のスクリプトは私が試したものですが、実行時にまだユーザーパスワードとその他の情報を求めます。

#!/bin/bash

PASSWORD="somepassword"
USERNAME="default"

if id -u "$USERNAME" >/dev/null 2>&1; then
    userdel -r -f $USERNAME
    adduser --disabled-password --gecos "" $USERNAME
    usermod -a -G sudo $USERNAME
    echo $USERNAME:$PASSWORD | chpasswd

else
    adduser $USERNAME
    adduser --disabled-password --gecos "" $USERNAME 
    usermod -a -G sudo $USERNAME
    echo $USERNAME:$PASSWORD | chpasswd
fi

ベストアンサー1

警告する:スクリプトでパスワードを暗号化されていないままにするのは非常に悪い考えです。それでもこれを選択した場合は、少なくともルートを介してファイルの権限を600に変更してください。これは簡単な攻撃から保護されます。

それから:

私が見た最初の問題は、adduserelse部分を2回呼び出すことです。

これにより、すべての質問を求める最初の実行が始まります。
2番目の呼び出しはうまく機能します。

さらに、thenとelse部分の間には多くの共通オプションがあります。スクリプトは次のように書くことができます。

#!/bin/bash

$PassWord="somepassword"
UserName="default"

if id -u "$UserName" >/dev/null 2>&1; then
    userdel -r -f "$UserName"
fi

adduser --disabled-password --gecos "" "$UserName"
userdir=/home/"$UserName"
[[ -d $userdir ]] || mkdir "$userdir"   # only needed for system users.
                                        # which usually do not have a password.
usermod -a -G sudo "$UserName"
echo "$UserName:$PassWord" | chpasswd

おすすめ記事