1

別の命名スキーマを使用して、システム上に新しいユーザーをいくつか作成したいと考えています。

  • 古い: firstname+initial of the second name(例: johnk)
  • 新しい: firstname.surname(例: john.kennedy)

新しいユーザーのパスワードの変更に行き詰まっています。理想的には、ファイルからシャドウ パスワードを取得したいのですが、まだ BASH スクリプトを学習中であり、高度すぎると思うので、今のところ、古いユーザーと対応するシャドウ パスワードのリストを作成しました。新しいユーザーのパスワードを : で更新することを考えていました/usr/sbin/usermod $u -p "$HASH"が、このコマンドで古いユーザーを新しいユーザーに一覧表示して一致させる方法がわかりません。

#!/usr/bin/env bash

OLD="
johnk="shadow_hash"
...
"

NEWUSERS="
john.kennedy
...
"

for u in $NEWUSERS; do

  if [ -z "$(getent passwd $u)" ]; then

    echo "User $u does NOT exist, creating..."

    /usr/sbin/useradd $u
#    /usr/sbin/usermod $u -p "$HASH"
  else
    echo "User $un DOES exist."
  fi
done
4

1 に答える 1

1

本当に新しいユーザーを作成しますか、それとも単に既存のユーザーのログイン エイリアスを追加しますか? (または、さらに簡単に、ユーザー名を変更しますか?)

新しいユーザーを作成する場合は、多くのファイル アクセス許可を修正する必要があり、煩わしい場合があります。

ホーム ディレクトリの名前も処理する必要があります。これは、おそらく古いユーザー名に関連しています。新しい名前から古い名前へのシンボリックリンクを作成することもできます(または、ディレクトリの名前を変更して、古い名前を新しい名前にシンボリックリンクします。ただし、その間、ファイルで何もしていないことを確認してください)。

どのような場合でも、数値のユーザー ID を使用して 2 つの名前を関連付けることができます。エイリアスの場合、同じ数値のユーザー ID を使用して新しい名前を作成し (これを機能させるには、usermod にフラグを指定する必要があります)、ホーム ディレクトリの名前と場合によっては他の名前を処理する必要がありますが、アクセス許可を修正する必要はありません。エイリアスを作成したくない場合は、すべての新しいユーザー名を、古いユーザー ID からの固定オフセット (200 の値に対して 200 高いなど) で数値のユーザー ID を使用して作成できます。getentユーザー名または数値のユーザー ID による検索が可能であることに注意してください。

于 2012-11-28T17:19:11.247 に答える