![一個 Linux 用戶可以屬於多個群組嗎?](https://rvso.com/image/1330217/%E4%B8%80%E5%80%8B%20Linux%20%E7%94%A8%E6%88%B6%E5%8F%AF%E4%BB%A5%E5%B1%AC%E6%96%BC%E5%A4%9A%E5%80%8B%E7%BE%A4%E7%B5%84%E5%97%8E%EF%BC%9F.png)
一個 Linux 用戶可以屬於多個群組嗎?
如果允許的話,那麼一個使用者可以存取兩組文件,那就太好了!
如果沒有,有沒有其他方法可以實現這個功能?
答案1
是的,一個用戶可以是多個群組的成員:
使用者被組織成群組,每個使用者至少屬於一個群組,也可能屬於其他群組。群組成員資格使您可以特殊存取該群組允許的檔案和目錄。
例如,您可以將使用者新增username
至群組中group1
,並group2
使用下列命令usermod
命令:
usermod -a -G group1,group2 username
答案2
是的,一個普通的 UNIX 使用者可以是多個群組的成員。
然而,只有一其中的群組是用戶的主要群體。
新增使用者時,例如使用adduser
,可以使用該--ingroup
選項指定主要群組,並在 Debian/Ubuntu 等中新增多個輔助群組,如下所示:
$ # would create user gert and group gert
$ sudo adduser gert
$ # same, but no group 'gert' will be created, but made member of the existing
$ # group 'adm'
$ sudo adduser gert --ingroup adm
$ # secondary groups
$ sudo adduser gert superusers
Adding user `gert' to group `superusers' ...
Adding user gert to group superusers
Done.
$ sudo adduser gert debianfans
可以使用以下命令檢查您是哪個使用者的成員id
:
$ id
uid=1000(gert) gid=1000(gert) groups=1000(gert),4(superusers),5(debianfans)
^^^ ^^^^^^
primary secondary
group groups
同樣對於其他用戶,只需將他們的用戶名作為第一個參數傳遞給id
.
-g
您可以使用( --gid
) 選項來變更使用者的主要群組usermod
$ usermod -g new_primary_group username
答案3
是的,看其他答案。另一種選擇是存取控制清單。
setfacl
getfacl
每個文件都可以有一個可以存取該文件的使用者和群組的清單。
一個人就是一個使用者和多個群組(群組只能由admin/root使用者設定)。一個檔案通常是一個所有者用戶和一個群組,透過 ACL,它可以是一個所有者用戶,加上許多其他用戶,再加上許多群組。
您使用哪一個取決於您的需求。 ACL 可以是一個要使用的窗格,但不需要管理(除了安裝和啟用之外,我通常不會預設安裝它)。另一種方法較簡單,但功能較弱。