現在使用しているスクリプトコードは次のとおりです。
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
は何も返しません)代わりにadduser
(useraddの代わりに)を使用してユーザーを手動で作成した場合、Ubuntuではこれらの問題は発生しません。しかし、openSuse(afaik)ではadduser
を使用できません。そのため、Debian専用ではないスクリプト、またはUbuntuで動作する(そして他のディストリビューションで動作を停止しない)bashスクリプトを介してユーザーアカウントを追加する方法が必要です。
最後に、adduser
とuseradd
の- 違い を理解したいと思います。たとえば、adduser
がどのスケルトンディレクトリが使用されているかを知りたいのは、useradd
が期待どおりに動作しない理由かもしれません(デフォルトを受け入れたためです)。
ありがとう
私のソリューションはここに提供されました: 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
これは動作します。
Sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | Sudo chpasswd
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
スクリプトで条件を単純に使用できると思います
if grep -q 'Ubuntu\|Debian' /etc/issue; then
adduser .....
else
useradd .....
fi
(ファイル/etc/issue
がOpenSUSEに存在するかどうかを確認することはできません。そうでない場合、そのようなファイルの存在に条件を付けることができます)。