在 Linux 中把使用者新增到組的四個方法
Linux 組是用於管理 Linux 中使用者帳戶的組織單位。對於 Linux 系統中的每一個使用者和組,它都有惟一的數字標識號。它被稱為 使用者 ID(UID)和組 ID(GID)。組的主要目的是為組的成員定義一組特權。它們都可以執行特定的操作,但不能執行其他操作。
Linux 中有兩種型別的預設組。每個使用者應該只有一個 主要組 和任意數量的 次要組。
- 主要組: 建立使用者帳戶時,已將主要組新增到使用者。它通常是使用者的名稱。在執行諸如建立新檔案(或目錄)、修改檔案或執行命令等任何操作時,主要組將應用於使用者。使用者的主要組資訊儲存在
/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
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 在Linux中, 如何建立一個新使用者和新組?Linux
- linux建立使用者並新增到sudo使用者組中Linux
- 將使用者新增到一個指定組 linux usermodLinux
- 在Linux中,如何建立一個新使用者?Linux
- 在Linux中,如何新增一個使用者到特定的組?Linux
- 【DB2學習】如何把root 使用者新增到DB2 組DB2
- 在 Linux 中無人看守批次建立使用者的方法Linux
- 新建使用者並將使用者新增到root使用者組內
- (四)Linux之使用者管理(使用者和使用者組)Linux
- 用VB寫的一個元件,實現新增系統使用者,並新增到指定組元件
- 在 Linux 中把一個網頁轉換成 PDF的技巧介紹Linux網頁
- 如何把一個ABAP檢視新增到SAP GUI的收藏夾裡GUI
- PHP中把stdClass Object轉array的幾個方法PHPObject
- Win10系統把畫圖工具新增到桌面的方法Win10
- 用於新增新內容的四個 jQuery 方法jQuery
- linux 為使用者增加一個組Linux
- 在Linux中,如何將二進位制檔案新增到 $PATH 變數中?Linux變數
- 在Linux中新增普通新使用者Linux
- 在 Linux 中鎖定和解鎖使用者帳戶的三種方法Linux
- linux中什麼是使用者組?使用者與組的關係是什麼?Linux
- 成為Linux核心高手的四個方法Linux
- SpriteKit 在iOS個版本中的新特性iOS
- Linux如何刪除使用者組?方法有哪些?Linux
- 在linux下oracle kill 使用者程式的方法LinuxOracle
- 在Linux中,如何備份某個使用者的任務計劃?Linux
- 在Linux中,如何把系統中不用服務關掉?Linux
- “使用者組”在 Linux 上到底是怎麼工作的?Linux
- 如何把ABAP檢視新增到SAPGUI的收藏夾裡GUI
- Jquery學習(1):把 jQuery 新增到您的網頁jQuery網頁
- 在RFT中如何通過指令碼獲取已新增到某個指令碼中的測試物件?指令碼物件
- Win7系統中怎麼把資料夾新增到ftp上Win7FTP
- JavaScript 的新陣列分組方法JavaScript陣列
- 1.7.5. 將使用者新增到密碼檔案中密碼
- 一個表單中的資料新增到不同的資料表中
- Linux的使用者和使用者組管理Linux
- Mac“照片”中如何把資料夾中的相簿分組?Mac
- 在ASM磁碟組中刪除一個磁碟ASM
- 一個愚蠢的極客把戲:在linux終端上看電影Linux