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 文件手動將用戶添加到任何組中。

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

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

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

# 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 添加到 mygroup 和 mygroup1 中。

# usermod -a -G mygroup,mygroup1 user2

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

# 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]

在本例中,我們將把 user2 和 user3 添加到 mygroup1 中。

# gpasswd -M user2,user3 mygroup1

讓我使用 getent 命令查看輸出。是的,user2 和 user3 已成功添加到 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 命令將 user2 和 user3 添加到 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 命令的輸出。 是的,user1、user2 和 user3 已成功添加到 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 命令的輸出。 是的,user1、user2 和 user3 已成功添加到 mygroup 中。

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

此外,user1、user2 和 user3 已成功添加到 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中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...