web-dev-qa-db-ja.com

Linuxでユーザーのデフォルトグループを変更するにはどうすればよいですか?

Linux管理の初心者なので、次のコマンドについて少し混乱しています。

useradd
usermod
groupadd
groupmod

Linux/Unix Administrator's handbookのユーザー管理の本を読み終えたところですが、いくつかのことはまだ少し濁っています。

基本的にuseraddは十分簡単なようです:

useradd -c "David Hilbert" -d /home/math/hilbert -g faculty -G famous -m -s /bin/sh hilbert

「David Hilbert」をユーザー名hilbertで追加し、デフォルトのディレクトリ、シェル、グループを設定できます。そして-gは彼のプライマリ/デフォルトグループであり、-Gは彼の他のグループです。

これらは私の次の質問です:

  1. グループfacultyおよびfamousが存在しない場合でも、このコマンドは機能しますか?作成するだけですか?
  2. そうでない場合、どのコマンドを使用して新しいグループを作成しますか?
  3. ユーザーhilbertを削除し、それらのグループに他のユーザーがいない場合でも、それらは存在しますか?それらを削除する必要がありますか?
  4. 上記のuseraddコマンドを実行した後、famousグループからDavidを削除し、彼のプライマリグループをまだ存在しないhilbertに再割り当てするにはどうすればよいですか?
42
cwd

usermodコマンドを使用すると、ユーザーのプライマリグループ、補足グループ、またはその他のいくつかの属性を変更できます。 -gスイッチは、プライマリグループを制御します。

他の質問について...

  1. groupnameステージ中に存在しないグループuseraddを指定すると、エラーが表示されます-seradd:unknown group groupname

  2. groupaddコマンドは、新しいグループを作成します。

  3. 含まれているすべてのユーザーを削除すると、グループは残ります。空のグループを削除する必要はありません。

  4. groupadd hilbertを介してhilbertグループを作成します。次に、usermod -g hilbert hilbertを使用して、Davidのプライマリグループを移動します。 (最初のhilbertはグループ名、2番目のhilbertはユーザー名です。これは、ユーザーを別の名前のグループに移動する場合に重要です)

ただし、少し複雑になるかもしれません。多くのLinuxディストリビューションでは、単純なuseradd hilbertでユーザーhilbertとプライマリと同じ名前のグループを作成します。 -Gスイッチを使用して、一緒に指定された補足グループを追加します。

28
ewwhite

さまざまなオプションで何が起こるかを説明するman usermodを読む必要があります。

usermod -g hilder hilder

「hilder」グループが存在する限り、ログイングループは「faculty」から「hilder」に置き換えられます。存在しない場合は、最初にgroupaddで作成する必要があります。

-Gオプションを使用する場合は、-aオプションを使用して、ユーザーが「所属する」所属する補助グループの現在のリストに新しいグループを追加する必要があります。 -aオプションがない場合は、現在の補足グループを新しいグループセットに置き換えます。したがって、これは慎重に使用してください。

9
Mick

Linuxでユーザーのプライマリグループを変更するには:

  • usermod -g new_group user_name
  • 終了すべてuser_nameのアクティブセッション

変更をテストするには、idを実行してgid=の値を確認します

コマンドがエラーなしで実行されてもgidが変更されない場合は、手順2の太字の部分を見逃しています。

5
ndemou

回答#1は適切ですが、次のコマンドを発行して新しいグループを追加することもできます。

# nano /etc/group

/etc/groupを直接編集することの欠点は、未使用のGID(グループID番号)を考え出す必要があることです。

以下では、ユーザーのプライマリグループを変更できます。 # nano /etc/passwd

ユーザーの行を見つけて、GID(グループ番号、/etc/groupで検索)を変更します。構文は次のとおりです。

 <name>:*:<UID>:<GID>:<comment>:<directory>:<Shell>

私がこのアプローチに考えられる欠点はありません(GIDを知っている場合)。これは、主にusermodadduser、およびuseraddコマンドオプション。

それは少し手作業ですが、仕事をします。 viがわかっている場合は、nano iso viを使用してファイルを編集できます。

ユーザーのプライマリグループを永続的に変更するには、次のコマンドを実行します。

  • usermod -g groupname usernameコマンド

または、小さな環境や一時的な状況ではnewgrpを使用できます。

新しいユーザーbobと新しいグループdodoを作成します。

useradd bob

したがって、RedHat/CentosにはUID =(ID_number)bobがあります。 GID =(ID_number)bobをデフォルトでプライマリグループとして

groupadd dodo

ユーザーbobをdodoグループに追加します。

usermod -aG dodo bob -make sure to use "a"

次に、newgrpを使用して所有権を変更します。

newgrp dodo

アカウントにパスワードを設定し、将来のプライマリグループのメンバーになるように注意してください。そして、newgrpは新しいシェルを開きます。ユーザーがそのシェルにとどまっている限り、プライマリグループは変更されません。プライマリグループを元のグループに戻すには、exitコマンドを実行して新しいシェルを終了します。

0
Dragos Alexe