3.3.3 群組

除了使用者帳號以外,Un*x 系統裡面也有群組帳號 (group account),利用群組可以讓一群人對某些檔案有共同的存取權限,在 RedHat 系統底下,當新增一位使用者的時候,useradd 指令也會同時新增一個與使用者帳號同名的群組,作為使用者的預設群組,有需要時可以再加入其他的群組,一個使用者可以隸屬於多個不同的群組。

底下是一些跟群組有關的指令:

groupadd [GROUP]                 新增群組
groupdel [GROUP]                 刪除群組
gpasswd [-adr][USER][GROUP]    管理群組與群組密碼
    -a                 增加使用者到群組中
    -d                 從群組中刪除某一個使用者
    -r                 取消群組密碼
newgrp [GROUP]        登入到新的群組

groupadd 跟 groupdel 跟 useradd、userdel 用法相同,可以用來新增與刪除系統上的群組設定。

"gpasswd" 指令只有 root 或群組的管理員才可以執行,可以用來作群組的管理,不加參數的時候,gpasswd 用來設定群組的密碼,設定密碼以後,就必須要用 "newgrp" 登入這個群組才可以取得屬於這個群組的權限,"gpasswd -a" 可以用來將使用者加入到某個群組裡面,"gpasswd -a platin floppy" 這個指令可以將使用者 platin 加入 floppy 群組裡面,取得寫入軟碟機的權限:

[root@h2 platin]# chmod 660 /dev/fd0
[root@h2 platin]# exit
exit
[platin@h2 platin]$ mdir a:
Can't open /dev/fd0: Permission denied
Cannot initialize 'A:'
[platin@h2 platin]$ su
Password:
[root@h2 platin]# gpasswd -a platin floppy
Adding user platin to group floppy
[root@h2 platin]# exit
exit
[platin@h2 platin]$ mdir a:
Can't open /dev/fd0: Permission denied
Cannot initialize 'A:'
[platin@h2 platin]$ newgrp floppy
[platin@h2 platin]$ mdir a:
Volume in drive A is LINUX BOOT
Volume Serial Number is 2410-07EF
Directory for A:/

No files
1 457 664 bytes free

[platin@h2 platin]$

上面這個範例裡面,因為 RedHat 預設只有 root 可以用軟碟機,所以一開始先用 root 帳號讓 floppy 群組可以使用軟碟;使用者 platin 本來沒有使用軟碟的權限,無法使用 mdir 看軟碟的內容,su 成 root 並把 platin 加入 floppy 群組以後,只要 platin 用 "newgrp" 登入 floppy 群組,就可以存取軟碟了,注意一下 platin 在用 "newgrp" 改變群組之前還沒辦法看軟碟內容,這是因為這次登入時 platin 還沒有 floppy 群組的身分,才需要從新登入一次,下次 platin 登入系統後,無須 "newgrp" 就可以存取軟碟了。

"gpasswd -d username groupname" 可以用來將使用者從群組中剔除,剔除以後,該使用者登入後就不再具有這個群組的身分了,假如曾經用 "gpasswd" 設定過群組的密碼,可以用 "gpasswd -r" 來取消密碼的設定。