以下のスクリプトは私が試したものですが、実行時にまだユーザーパスワードとその他の情報を求めます。
#!/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に変更してください。これは簡単な攻撃から保護されます。
それから:
私が見た最初の問題は、adduser
else部分を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