グループからユーザーを削除するにはどうすればよいですか?


343

Debianのグループからユーザーを削除するには、どのコマンドを使用する必要がありますか?

ユーザーをグループに追加するときは、次の方法で実行できます。

usermod -a -G group user

しかし、グループからユーザーを削除するための同様のコマンド(グループとユーザーを引数として受け入れる)が見つかりませんでした。私が得ることができる最も近いものは:

usermod -G all,existing,groups,except,for,group user

usermod OPTION group userOPTIONのようなオプションusermod(または同様のプログラム)がグループからユーザーを削除するコマンドはありますか?


1
ここで終わるFedoraユーザーの場合、man usermodは-Gオプションのコメントで、現在のすべてのグループを保持したいリストがグループを削除する方法であることを明らかにします。Fedoraには-Rオプションはありません。あなたは彼が避けようとしているLekensteynのアプローチを使わなければなりません。
スティーブン

回答:


404

以下を使用できますgpasswd

# gpasswd -d user group

少なくともDebianでは、次回のログイン時に新しいグループ構成が割り当てられます。ユーザーがログインしている場合、コマンドの効果はすぐには表示されません。


9
感謝します!gpasswd -a user groupユーザーをグループに追加することも、特にタイプミスが発生して-aオプションが削除された場合、より良いようです。
レーケンシュタイン

1
私にはうまくいきません。2つのメッセージが表示されます。a)ユーザーをグループから削除しています。b)gpasswd:ユーザーはグループのメンバーではありません。その後、「メンバーグループ」を実行しても変更はありません。
測地線14

1
@geoidesic効果を確認するには、ログアウトして再度ログインする必要があります
Wasif Hossain

1
再ログインせずに変更を有効にする方法はありますか?
アンディフスニアック

2
@geoidesic Centos 7でこれらのエラーが発生しました。デフォルトグループからユーザーを削除しようとした場合、このエラーが発生しました。でデフォルトグループを切り替えてusermod -g user userから、それらを削除してみてください。
パンパイプ

175

Debianでは、adduserパッケージには、deluser引数として両方を渡すとグループからユーザーを削除するプログラムが含まれています。

deluser user group

お使いのディストリビューションは持っていない場合adduser、あなたは編集することができます/etc/groupし、/etc/gshadow手動で。

vigr
vigr -s

10
vigrやなどのプログラムは知りませんでしたvipw。マンページが遠すぎる場合に非常に便利です:)
Lekensteyn

3
または、/etc/group実行grpconv/etc/gshadow編集するのではなく更新するように変更した後。
シリル14年

sudo deluser jenkins admin/ usr / sbin / deluser:プライマリグループからユーザーを削除することはできません。
ジョナサン14年

@JonathanLeadersすべてのユーザーは少なくとも1つのグループに属している必要があります。usermodまたはvipwを使用して、ユーザーのプライマリグループを変更します。この質問は補足グループに関するものでした。
ジル14年

いいね のadduser $user $group代わりに、よりシンプルなコマンドもありusermod -x -y -z -...ます。
イゴー14

65
usermod -G "" username

ユーザー名からすべてのセカンダリ/補足グループを削除し、それらをプライマリグループのみのメンバーとして残します。これはSolaris 5.9で機能しました


5
CentOS 6.4でテスト済み。動作します。
集計

1
Ubuntu 12.04でも動作します。
集計

そして、これはリストにないすべてのグループを除外して、グループのリストにセカンダリグループを強制する最良の方法のようです。
セージ

CentOS 7でテストおよび動作しています。ありがとう!
トリッキー

14

これは「古い学校」のアプローチです...

ほとんどの* nixシステムは、グループ情報をプレーンテキストファイル/etc/groupに保持します。

  • 各行にはフィールドが含まれています

    • グループ名
    • パスワード
    • GID、および
    • user_list

    文字で区切られ:ます。

  • user_listフィールドは、コンマで区切られたユーザー名のリストです。

ここで、という名前thisuser のグループからという名前のユーザーを削除するとしますthatgroup。バックアップから開始し、su特権/etc/group使用して好みのエディターを使用してファイルを編集し、行エントリーから参照 を削除します。/etc/groupthisuserthatgroup

元の行は次のようなものです。

thatgroup:x:1274:someuser,thisuser,anotheruser

編集後は次のようにしてください。

thatgroup:x:1274:someuser,anotheruser

他のすべての回答と同様に、これはユーザーの現在のセッションに影響しません(ある場合)(つまり、ユーザーが現在ログインしている場合)。変更は、ユーザーが次回ログインしたときに有効になります。


1
vigr/etc/group手動での編集についてはすでに言及しました。私のマニュアルページでは、ユーザー名はコロンではなくコンマで区切られていると書かれています。再起動は必要ありませんnewgrp。再ログイン(またはを使用)するだけです。
Lekensteyn

手がかりを求めてこれらの海岸を打つ非Debianユーザーを支援するために...これはOPの質問の範囲に従ってDebianにとって十分かもしれませんが、これを* BSD OSに使用している場合、プレーンテキストファイルを変更する必要がありますここで述べたように、pwd_mkdb -p /etc/master.passwdを発行して、実際にそのリストを使用します。
だんの

3

SUSEディストリビューションで以下のコマンドを使用できます(明らかに、他のコマンドはありません)。

usermod -R グループ user_name

groupユーザーを削除するグループと、グループから削除するユーザーはどこにありますuser_name。例えば、

usermod -R root imnottheroot

1
どのパッケージがusermodバイナリを提供しますか?shadow-utils-4.1.4.3のバージョンでは-Rオプションが提供されていないため、バージョンを確認するよう求めています。
myroslav

3
私のシャドウ4.1.5.1-5パッケージ(Arch Linux)には-Rオプションがありますが、それは何か他のものを意味します。Linuxではないでしょう。
-Lekensteyn

3
これがうまくいくかどうかはわかりません。manページには、それは言って-Rいる:「-R、--root CHROOT_DIRはCHROOT_DIRディレクトリの変更を適用し、CHROOT_DIRディレクトリから設定ファイルを使用しています。」
MikeKusold

2
私が見つけることができた関連するものはこのオラクルのマンページだけでしたが、それはまだ同じものではないので、この答えはおそらく削除すべきです。
kyrias 14年

sudo usermod -R admin jenkinsusermod:無効なchrootパス 'admin'
ジョナサン14年

1

考慮してください:

  • ユーザー名: abc2
  • グループ名: newgroup11

  • タスク:abc2グループからユーザーを削除するnewgroup11

[root@home1 ~]# groups abc2
abc2 : abc2
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# groups abc2
abc2 : abc2 newgroup11
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# usermod -G abc2 abc2
[root@home1 ~]# groups abc2
abc2 : abc2

**私が間違っている場合は親切に修正してください。**


1
これは「機能します」が、これは単一のセカンダリグループがあるためだけです。usermod -G newgroup11 abc2あなたを二次グループに入れますnewgroup11。プライマリグループはabc2なので、両方のグループになります。usermod -g abc2 abc2結果は、newgroup11第二のグループから削除されているので、それはもはや言及されていません。したがって、3つ以上の異なるグループの場合、この方法は機能しません。gpasswdより良いコマンドについては、他の回答をご覧ください。
-Lekensteyn

1

usermodコマンドを-aオプションなしで実行することにより、グループからユーザーを削除できます。たとえば、「usermod -G group1 username」を実行すると、ユーザーがgroup1に追加され、それが存在する他のグループから削除されます。グループの名前をコンマで区切ってリストすることにより、ユーザーをさまざまなグループにまとめることができます。


1
この情報はすでに複数回提示されています。
スコット

0

削除オプションを持たないディストリビューション(Fedoraなど)でusermodを引き続き使用するには、user = bobおよびgroup = deletethisgroupで、コマンドは次のようになります。

usermod -G `cat /etc/group |  grep bob | grep -v deletethisgroup | cut -d ':' -f 1 | tr '\n' ',' | sed 's/,$//'` bob

パイプは、(1)ユーザーが属するすべてのグループエントリを取得し、(2)削除する必要があるものを取り出し、(3)最初の列(グループ名)を返し、改行をコンマに置き換え、末尾のコンマを削除します。

もちろん、ユーザーとグループをパラメーターとして削除するbashスクリプトにすべてを入れることもできます。awkは終わりを短くするために使用できますが、grep、cut、tr、sedに固執したかったです。


このマニュアルページによると、gpasswd -d bob deletethisgroupも利用可能です。使用しない理由は何ですか?
-Lekensteyn

誰もがグループパスワードを設定したいわけではありません。特定のディストリビューションに関する質問で参照されているコマンドを使用してソリューションを提供していました。Fedora / RHEL / Centosでgpasswd -dを使用すると、削除されたユーザーはパスワードにアクセスできる場合でもグループに参加できます。実際には、グループアクセスを拒否するのではなく、グループアクセスを増やします。
スティーブン

ユーティリティはにgpasswd密接に関連しているため/etc/passwd、その名前が付けられていることを理解しましたが、代わりにグループを管理しています。passwdパスワードを制御するだけの単純なコマンドとは異なり、gpasswdグループのメンバーシップを管理するためにも使用できます。rootまたはグループ管理者である場合、グループパスワードは必要ありません。
-Lekensteyn

gpasswdマニュアルを読みましたか?Fedora / RHEL / CentOSの場合、マニュアルを読むと、コマンドは「/ etc / groupおよび/ etc / gshadowを管理するために使用される」と述べられています。実際には/ etc / passwdには影響しません。マニュアルには、「グループパスワードは、複数の人がパスワードを知ることを許可されているため、固有のセキュリティ問題です。」実際にグループのメンバーシップを管理するのではなく、パスワードを使用して任意のユーザーにグループを開きます。すでにグループのメンバーである場合、グループパスワードは必要ありません。
スティーブン

密接に関連するのは、同様の命名と目的という意味で、/ etc / passwdファイルが実際にgpasswdによって管理されていることを意味しませんでした。最初のコメントの「manページ」は、Fedora 13のgpasswdマニュアルページを指していることに注意してください。これを使用gpasswd $groupすると、言及したセキュリティ問題の原因となるグループパスワードを設定できます。ただし、最初のコメントと受け入れられた回答で説明されているように、パスワードを使用してユーザーを削除することもできませんgpasswd -d $user $group。このコマンドは、グループパスワードの入力を求めたり、変更したり要求したりしないことに注意してください。
-Lekensteyn

0

仮定し、ユーザ名=学生グループ名=研究ので削除するには、studentからユーザーをresearch、それは次のことを行う必要がありますグループ:

gpasswd -d student research

何かを繰り返す理由、それは6年前にここにあったのですか 承認済みとしてマークされています!
ベトリスタ

-1
pw groupmod "groupname|gid" -d "username|uid"

何らかの理由でCSHを使用している場合の解決策。


-1

グループからユーザーを削除するには、gpasswdがこのIMOに最適なユーティリティです。

コマンドの例:

sudo gpasswd -d group user

*ヘルプ情報*

Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -h, --help                    display this help message and exit
  -Q, --root CHROOT_DIR         directory to chroot into
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...
                                set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.

1
グループとユーザーの引数は交換されます。また、これは受け入れられた答えが提案したものとまったく同じです、この投稿は本当に役に立ちませんか?
-Lekensteyn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.