Linux中國

在 Linux 中把用戶添加到組的四個方法

Linux 組是用於管理 Linux 中用戶帳戶的組織單位。對於 Linux 系統中的每一個用戶和組,它都有惟一的數字標識號。它被稱為 用戶 ID(UID)和組 ID(GID)。組的主要目的是為組的成員定義一組特權。它們都可以執行特定的操作,但不能執行其他操作。

Linux 中有兩種類型的默認組。每個用戶應該只有一個 主要組 primary group 和任意數量的 次要組 secondary group

  • 主要組: 創建用戶帳戶時,已將主要組添加到用戶。它通常是用戶的名稱。在執行諸如創建新文件(或目錄)、修改文件或執行命令等任何操作時,主要組將應用於用戶。用戶的主要組信息存儲在 /etc/passwd 文件中。
  • 次要組: 它被稱為次要組。它允許用戶組在同一組成員文件中執行特定操作。例如,如果你希望允許少數用戶運行 Apache(httpd)服務命令,那麼它將非常適合。

你可能對以下與用戶管理相關的文章感興趣。

可以使用以下四種方法實現。

  • usermod:修改系統帳戶文件,以反映在命令行中指定的更改。
  • gpasswd:用於管理 /etc/group/etc/gshadow。每個組都可以有管理員、成員和密碼。
  • Shell 腳本:可以讓管理員自動執行所需的任務。
  • 手動方式:我們可以通過編輯 /etc/group 文件手動將用戶添加到任何組中。

我假設你已經擁有此操作所需的組和用戶。在本例中,我們將使用以下用戶和組:user1user2user3,另外的組是 mygroupmygroup1

在進行更改之前,我希望檢查一下用戶和組信息。詳見下文。

我可以看到下面的用戶與他們自己的組關聯,而不是與其他組關聯。

# id user1
uid=1008(user1) gid=1008(user1) groups=1008(user1)

# id user2
uid=1009(user2) gid=1009(user2) groups=1009(user2)

# id user3
uid=1010(user3) gid=1010(user3) groups=1010(user3)

我可以看到這個組中沒有關聯的用戶。

# getent group mygroup
mygroup:x:1012:

# getent group mygroup1
mygroup1:x:1013:

方法 1:使用 usermod 命令

usermod 命令修改系統帳戶文件,以反映命令行上指定的更改。

如何使用 usermod 命令將現有的用戶添加到次要組或附加組?

要將現有用戶添加到輔助組,請使用帶有 -G 選項和組名稱的 usermod 命令。

語法:

# usermod [-G] [GroupName] [UserName]

如果系統中不存在給定的用戶或組,你將收到一條錯誤消息。如果沒有得到任何錯誤,那麼用戶已經被添加到相應的組中。

# usermod -a -G mygroup user1

讓我使用 id 命令查看輸出。是的,添加成功。

# id user1
uid=1008(user1) gid=1008(user1) groups=1008(user1),1012(mygroup)

如何使用 usermod 命令將現有的用戶添加到多個次要組或附加組?

要將現有用戶添加到多個次要組中,請使用帶有 -G 選項的 usermod 命令和帶有逗號分隔的組名稱。

語法:

# usermod [-G] [GroupName1,GroupName2] [UserName]

在本例中,我們將把 user2 添加到 mygroupmygroup1 中。

# usermod -a -G mygroup,mygroup1 user2

讓我使用 id 命令查看輸出。是的,user2 已成功添加到 myGroupmyGroup1 中。

# id user2
uid=1009(user2) gid=1009(user2) groups=1009(user2),1012(mygroup),1013(mygroup1)

如何改變用戶的主要組?

要更改用戶的主要組,請使用帶有 -g 選項和組名稱的 usermod 命令。

語法:

# usermod [-g] [GroupName] [UserName]

我們必須使用 -g 改變用戶的主要組。

# usermod -g mygroup user3

讓我們看看輸出。是的,已成功更改。現在,顯示user3 主要組是 mygroup 而不是 user3

# id user3
uid=1010(user3) gid=1012(mygroup) groups=1012(mygroup)

方法 2:使用 gpasswd 命令

gpasswd 命令用於管理 /etc/group/etc/gshadow。每個組都可以有管理員、成員和密碼。

如何使用 gpasswd 命令將現有用戶添加到次要組或者附加組?

要將現有用戶添加到次要組,請使用帶有 -M 選項和組名稱的 gpasswd 命令。

語法:

# gpasswd [-M] [UserName] [GroupName]

在本例中,我們將把 user1 添加到 mygroup 中。

# gpasswd -M user1 mygroup

讓我使用 id 命令查看輸出。是的,user1 已成功添加到 mygroup 中。

# id  user1
uid=1008(user1) gid=1008(user1) groups=1008(user1),1012(mygroup)

如何使用 gpasswd 命令添加多個用戶到次要組或附加組中?

要將多個用戶添加到輔助組中,請使用帶有 -M 選項和組名稱的 gpasswd 命令。

語法:

# gpasswd [-M] [UserName1,UserName2] [GroupName]

在本例中,我們將把 user2user3 添加到 mygroup1 中。

# gpasswd -M user2,user3 mygroup1

讓我使用 getent 命令查看輸出。是的,user2user3 已成功添加到 myGroup1 中。

# getent group mygroup1
mygroup1:x:1013:user2,user3

如何使用 gpasswd 命令從組中刪除一個用戶?

要從組中刪除用戶,請使用帶有 -d 選項的 gpasswd 命令以及用戶和組的名稱。

語法:

# gpasswd [-d] [UserName] [GroupName]

在本例中,我們將從 mygroup 中刪除 user1

# gpasswd -d user1 mygroup
Removing user user1 from group mygroup

方法 3:使用 Shell 腳本

基於上面的例子,我知道 usermod 命令沒有能力將多個用戶添加到組中,可以通過 gpasswd 命令完成。但是,它將覆蓋當前與組關聯的現有用戶。

例如,user1 已經與 mygroup 關聯。如果要使用 gpasswd 命令將 user2user3 添加到 mygroup 中,它將不會按預期生效,而是對組進行修改。

如果要將多個用戶添加到多個組中,解決方案是什麼?

兩個命令中都沒有默認選項來實現這一點。

因此,我們需要編寫一個小的 shell 腳本來實現這一點。

如何使用 gpasswd 命令將多個用戶添加到次要組或附加組?

如果要使用 gpasswd 命令將多個用戶添加到次要組或附加組,請創建以下 shell 腳本。

創建用戶列表。每個用戶應該在單獨的行中。

$ cat user-lists.txt
user1
user2
user3

使用以下 shell 腳本將多個用戶添加到單個次要組。

vi group-update.sh

#!/bin/bash
for user in `cat user-lists.txt`
do
usermod -a -G mygroup $user
done

設置 group-update.sh 文件的可執行許可權。

# chmod + group-update.sh

最後運行腳本來實現它。

# sh group-update.sh

讓我看看使用 getent 命令的輸出。 是的,user1user2user3 已成功添加到 mygroup 中。

# getent group mygroup
mygroup:x:1012:user1,user2,user3

如何使用 gpasswd 命令將多個用戶添加到多個次要組或附加組?

如果要使用 gpasswd 命令將多個用戶添加到多個次要組或附加組中,請創建以下 shell 腳本。

創建用戶列表。每個用戶應該在單獨的行中。

$ cat user-lists.txt
user1
user2
user3

創建組列表。每組應在單獨的行中。

$ cat group-lists.txt
mygroup
mygroup1

使用以下 shell 腳本將多個用戶添加到多個次要組。

#!/bin/sh
for user in `more user-lists.txt`
do
for group in `more group-lists.txt`
do
usermod -a -G $group $user
done

設置 group-update-1.sh 文件的可執行許可權。

# chmod +x group-update-1.sh

最後運行腳本來實現它。

# sh group-update-1.sh

讓我看看使用 getent 命令的輸出。 是的,user1user2user3 已成功添加到 mygroup 中。

# getent group mygroup
mygroup:x:1012:user1,user2,user3

此外,user1user2user3 已成功添加到 mygroup1 中。

# getent group mygroup1
mygroup1:x:1013:user1,user2,user3

方法 4:在 Linux 中將用戶添加到組中的手動方法

我們可以通過編輯 /etc/group 文件手動將用戶添加到任何組中。

打開 /etc/group 文件並搜索要更新用戶的組名。最後將用戶更新到相應的組中。

# vi /etc/group

via: https://www.2daygeek.com/linux-add-user-to-group-primary-secondary-group-usermod-gpasswd/

作者:Magesh Maruthamuthu 選題:lujun9972 譯者:NeverKnowsTomorrow 校對:wxy

本文由 LCTT 原創編譯,Linux 中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國