web-dev-qa-db-ja.com

新しいサーバーにユーザーを作成するためのスクリプト

新しいクライアントを取得しているため、新しいサーバーの束を追加し始めたこの状況にあります。したがって、取得する新しいクライアントごとに新しいサーバーが必要であり、それに続いて、特権を持つサーバー上にユーザーを作成する必要があります。そして、すべてのもの。新しいサーバーごとに基本的に行う必要があるのは、次の手順です。

  1. Sudo adduser John
  2. Sudo usermod -aG Sudo John
  3. Sudo su John
  4. cd /home/John
  5. mkdir .ssh
  6. chmod 700 .ssh/
  7. touch .ssh/authorized_keys
  8. chmod 600 .ssh/authorized_keys

サーバーごとに4〜5人のユーザーを作成する必要がある場合、これは非常に面倒です。私が今取り組んでいるのは、次のような簡単なコマンドでこれらのすべての手順を実行するスクリプトを作成することです

./create_users.sh John Jim Jill Peter

これまでのところ、

for i in "$@"; do
    echo creating user: "$i"
    Sudo adduser $i

    echo add user to Sudo group
    Sudo usermod -aG Sudo $i

    echo creating ssh folder and authorized_keys
    Sudo su $i
    cd /home/$i
    mkdir .ssh
    chmod 700 .ssh/
    touch .ssh/authorized_keys
    chmod 600 .ssh/authorized_keys
done

まだ試していませんが、ユーザーごとにパスワードを渡す必要があるため、機能しないことはわかっています。だから私の質問はどうすればいいですか?とりあえず、1Passwordのような標準のパスワードを設定しても問題ありません。パスワードを変更する必要があるためです。

スクリプトでそれを行うことも可能ですか、そして/またはこれを行うことは推奨されませんか?.

編集1

これを実行すると、実際に各ユーザーのパスワードを設定するように求められますが、「完全に問題なく」機能しているように見えます。問題があるのは、cd /home/$iのステップに進むことだけです。どういうわけか動作しないようです私は次のエラーを受け取ります:

mkdir: cannot create directory ‘.ssh’: Permission denied 
chmod: cannot access '.ssh/': No such file or directory
touch: cannot touch '.ssh/authorized_keys': No such file or directory
chmod: cannot access '.ssh/authorized_keys': No such file or directory

私は正しいディレクトリにいないので、これは理にかなっています。私のcd /home/$iが機能しない理由がわかりません...?

1
Yantes

申し訳ありませんが、数日前に解決策を見つけました。これが私の解決策です:

for i in "$@"; do
    echo creating user: "$i"
    Sudo adduser $i

    echo add user to Sudo group
    Sudo usermod -aG Sudo $i

    echo creating ssh folder and authorized_keys
    Sudo -H -u $i bash -c 'mkdir -p /home/"$0"/.ssh' $i
    Sudo -H -u $i bash -c 'chmod 700 /home/"$0"/.ssh/' $i
    Sudo -H -u $i bash -c 'touch /home/"$0"/.ssh/authorized_keys' $i
    Sudo -H -u $i bash -c 'chmod 600 /home/"$0"/.ssh/authorized_keys' $i
done

もちろん、これには各サーバーで新しいスクリプトを作成する必要がありますが、5人のユーザーがこれらのコマンドをすべて手動で実行するよりもはるかに高速です。だから私は各サーバーで何をします:

  1. touch create_users.sh
  2. chmod +x create_users.sh
  3. vi create_users.shおよび過去の「スクリプトコード」
  4. 最後に./create_users.sh john joe jillを実行します

次に、ユーザーごとにパスワードの入力を求められます。次に、ユーザーごとに単純なパスワードを作成し、できるだけ早く変更させます。これは私にとっては機能し、各ユーザーに対して手動でadduser --> usermod --> mkdir etc.を実行するよりもはるかに高速です。だから今のところこれに固執する。

ソリューションがある場合は、遠慮なく投稿してください。特に、スクリプトを作成し、ubuntuサーバーを操作するのが初めてなので、他のアプローチも教えてください。

1
Yantes