web-dev-qa-db-ja.com

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

私はこの質問を AskUbunt にクロス投稿しました。私の問題はDebian/Ubuntuで最も深刻に思われるためですが、ここで質問することが提案されました。この問題を解決するために提案されている方法は、ほとんどのディストリビューション(openSuseやUbuntuなど)で機能します。これが私が現在使用しているスクリプトコードです。

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"

Ubuntuで作成するユーザーアカウントにはいくつかの問題があります。

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

代わりに(useraddではなく)adduserを使用して手動でユーザーを作成した場合、これらの問題は発生しません。しかし、私はbashスクリプトを介してユーザーアカウントを追加する非Debian専用のスクリプトまたは方法が必要です。

私はこのトピックについて 前の質問 も持っていましたが、この問題に関係がないほど十分に異なっていました。

7
MountainX

問題は、Debianの新しいユーザーのデフォルトのシェルが/bin/shであるため、bashで使用していたほとんどの機能がそこにないことです。 useraddコマンドに-s /bin/bashを追加してみてください。

/etc/default/useraddを編集して、デフォルトのシェルを永続的に変更することもできます。

編集:

(MountainXによって検出された)パスワードを自動的に変更するソリューションは here です。

7
Joseph R.

カーソルキーとプロンプトの問題は、スケルトンファイルが正しくコピーされていないように聞こえます。新しいユーザーのホームディレクトリには.bashrcがありますか?

パスワードについては、Slackのman useraddが教えてくれます

-p、--password PASSWORD crypt(3)によって返される暗号化されたパスワード。デフォルトでは、パスワードは無効になっています。

したがって、プレーンテキストのパスワードをそこに置くことはおそらくないでしょう。現在、cryptを手動で呼び出す便利な方法が見つからないため、Sudo passwd $mynewuserへの追加の呼び出しが必要になる場合があります。

3
Ulrich Schwarz