web-dev-qa-db-ja.com

bashスクリプトを介してユーザーアカウントを追加する適切な方法

現在使用しているスクリプトコードは次のとおりです。

getent group $MYGROUP
if [ $? -ne 0 ] ; then
    Sudo su -c "groupadd $MYGROUP"
fi
Sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"

このアプローチはopenSuseでうまく機能します。しかし、Ubuntuで作成されるユーザーアカウントにはいくつかの問題があるため、ここで助けを求めています。

  • 端末のプロンプトが設定されていません(echo $PS1は何も返しません)
  • 端末で矢印キーとタブキーが正しく機能しない
  • パスワードが機能しないようです(この問題が何であるかはまだ明確ではありませんが)
  • この新しいユーザーに設定された/ etc/sudoers権利は尊重されません

代わりにadduser(useraddの代わりに)を使用してユーザーを手動で作成した場合、Ubuntuではこれらの問題は発生しません。しかし、openSuse(afaik)ではadduserを使用できません。そのため、Debian専用ではないスクリプト、またはUbuntuで動作する(そして他のディストリビューションで動作を停止しない)bashスクリプトを介してユーザーアカウントを追加する方法が必要です。

最後に、adduseruseraddの-​​ 違い を理解したいと思います。たとえば、adduserがどのスケルトンディレクトリが使用されているかを知りたいのは、useraddが期待どおりに動作しない理由かもしれません(デフォルトを受け入れたためです)。

ありがとう

14
MountainX

私のソリューションはここに提供されました: https://unix.stackexchange.com/questions/82923/proper-way-to-add-a-user-account-via-bash-script by lrich Schwarz および Joseph R。 。私がしなければならなかった主なことは、既存のuseraddコマンドに-s /bin/bashを追加し、暗号化されたパスワードを要求する-p passwordを削除することでした。

Sudo su -c "useradd mynewuser -s /bin/bash -m -g $PRIMARYGRP -G $MYGROUP"

次にこれを行います:

Sudo chpasswd << 'END'
mynewuser:password
END
12
MountainX

これは動作します。

Sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | Sudo chpasswd
7
Ankur Devani

sshキーログインとパスワードなしでサービスアカウントを自動的に構築するスクリプト

#add service group/user
addgroup service-runner
useradd devops-service --create-home --Shell /bin/bash --groups service-runner
#gpasswd -a devops-service Sudo #allowing Sudo requires password, and not a good idea for a service account.
mkdir /home/devops-service/.ssh
chmod 700 /home/devops-service/.ssh
cat [email protected] >> /home/devops-service/.ssh/authorized_keys
chown devops-service:devops-service /home/devops-service -R
2
JasonS

スクリプトで条件を単純に使用できると思います

if grep -q 'Ubuntu\|Debian' /etc/issue; then
    adduser .....
else
    useradd .....
fi

(ファイル/etc/issueがOpenSUSEに存在するかどうかを確認することはできません。そうでない場合、そのようなファイルの存在に条件を付けることができます)。

0
enzotib