歡迎光臨
每天分享高質量文章

在 Linux 中把使用者新增到組的四個方法 | Linux 中國

Linux 組是用於管理 Linux 中使用者帳戶的組織單位。組的主要目的是為組的成員定義一組特權。

— Magesh Maruthamuthu

 

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

Linux 中有兩種型別的預設組。每個使用者應該只有一個主要組primary group 和任意數量的 次要組secondary group

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

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

◈ 在 Linux 中建立使用者帳戶的三種方法?[1]
◈ 如何在 Linux 中建立批次使用者?[2]
◈ 如何在 Linux 中使用不同的方法更新/更改使用者密碼?[3]

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

◈ usermod:修改系統帳戶檔案,以反映在命令列中指定的更改。
◈ gpasswd:用於管理 /etc/group 和 /etc/gshadow。每個組都可以有管理員、成員和密碼。
◈ Shell 指令碼:可以讓管理員自動執行所需的任務。
◈ 手動方式:我們可以透過編輯 /etc/group 檔案手動將使用者新增到任何組中。

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

在進行更改之前,我希望檢查一下使用者和組資訊。詳見下文。

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

  1. # id user1
  2. uid=1008(user1) gid=1008(user1) groups=1008(user1)
  3. # id user2
  4. uid=1009(user2) gid=1009(user2) groups=1009(user2)
  5. # id user3
  6. uid=1010(user3) gid=1010(user3) groups=1010(user3)

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

  1. # getent group mygroup
  2. mygroup:x:1012:
  3. # getent group mygroup1
  4. mygroup1:x:1013:

方法 1:使用 usermod 命令

usermod 命令修改系統帳戶檔案,以反映命令列上指定的更改。

如何使用 usermod 命令將現有的使用者新增到次要組或附加組?

要將現有使用者新增到輔助組,請使用帶有 -g 選項和組名稱的 usermod 命令。

語法:

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

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

  1. # usermod -a -G mygroup user1

讓我使用 id 命令檢視輸出。是的,新增成功。

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

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

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

語法:

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

在本例中,我們將把 user2 新增到 mygroup 和 mygroup1 中。

  1. # usermod -a -G mygroup,mygroup1 user2

讓我使用 id 命令檢視輸出。是的,user2 已成功新增到 myGroup 和 myGroup1 中。

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

如何改變使用者的主要組?

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

語法:

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

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

  1. # usermod -g mygroup user3

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

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

方法 2:使用 gpasswd 命令

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

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

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

語法:

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

在本例中,我們將把 user1 新增到 mygroup 中。

  1. # gpasswd -M user1 mygroup

讓我使用 id 命令檢視輸出。是的,user1 已成功新增到 mygroup 中。

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

如何使用 gpasswd 命令新增多個使用者到次要組或附加組中?

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

語法:

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

在本例中,我們將把 user2 和 user3 新增到 mygroup1 中。

  1. # gpasswd -M user2,user3 mygroup1

讓我使用 getent 命令檢視輸出。是的,user2 和 user3 已成功新增到 myGroup1 中。

  1. # getent group mygroup1
  2. mygroup1:x:1013:user2,user3

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

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

語法:

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

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

  1. # gpasswd -d user1 mygroup
  2. Removing user user1 from group mygroup

方法 3:使用 Shell 指令碼

基於上面的例子,我知道 usermod 命令沒有能力將多個使用者新增到組中,可以透過 gpasswd 命令完成。但是,它將改寫當前與組關聯的現有使用者。

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

如果要將多個使用者新增到多個組中,解決方案是什麼?

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

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

如何使用 gpasswd 命令將多個使用者新增到次要組或附加組?

如果要使用 gpasswd 命令將多個使用者新增到次要組或附加組,請建立以下 shell 指令碼。

建立使用者串列。每個使用者應該在單獨的行中。

  1. $ cat user-lists.txt
  2. user1
  3. user2
  4. user3

使用以下 shell 指令碼將多個使用者新增到單個次要組。

  1. vi group-update.sh
  2. #!/bin/bash
  3. for user in `cat user-lists.txt`
  4. do
  5. usermod -a -G mygroup $user
  6. done

設定 group-update.sh 檔案的可執行許可權。

  1. # chmod + group-update.sh

最後執行指令碼來實現它。

  1. # sh group-update.sh

讓我看看使用 getent 命令的輸出。是的,user1user2 和 user3 已成功新增到 mygroup 中。

  1. # getent group mygroup
  2. mygroup:x:1012:user1,user2,user3

如何使用 gpasswd 命令將多個使用者新增到多個次要組或附加組?

如果要使用 gpasswd 命令將多個使用者新增到多個次要組或附加組中,請建立以下 shell 指令碼。

建立使用者串列。每個使用者應該在單獨的行中。

  1. $ cat user-lists.txt
  2. user1
  3. user2
  4. user3

建立組串列。每組應在單獨的行中。

  1. $ cat group-lists.txt
  2. mygroup
  3. mygroup1

使用以下 shell 指令碼將多個使用者新增到多個次要組。

  1. #!/bin/sh
  2. for user in `more user-lists.txt`
  3. do
  4. for group in `more group-lists.txt`
  5. do
  6. usermod -a -G $group $user
  7. done

設定 group-update-1.sh 檔案的可執行許可權。

  1. # chmod +x group-update-1.sh

最後執行指令碼來實現它。

  1. # sh group-update-1.sh

讓我看看使用 getent 命令的輸出。是的,user1user2 和 user3 已成功新增到 mygroup 中。

  1. # getent group mygroup
  2. mygroup:x:1012:user1,user2,user3

此外,user1user2 和 user3 已成功新增到 mygroup1 中。

  1. # getent group mygroup1
  2. mygroup1:x:1013:user1,user2,user3

方法 4:在 Linux 中將使用者新增到組中的手動方法

我們可以透過編輯 /etc/group 檔案手動將使用者新增到任何組中。

開啟 /etc/group 檔案並搜尋要更新使用者的組名。最後將使用者更新到相應的組中。

  1. # vi /etc/group

 

已同步到看一看
贊(0)

分享創造快樂