2021-05-12 14:32:11
如何在 Linux 系統中通過使用者組來管理使用者
本教學可以了解如何通過使用者組和存取控制列表(ACL)來管理使用者。
當你需要管理一台容納多個使用者的 Linux 機器時,比起一些基本的使用者管理工具所提供的方法,有時候你需要對這些使用者採取更多的使用者許可權管理方式。特別是當你要管理某些使用者的許可權時,這個想法尤為重要。比如說,你有一個目錄,某個使用者組中的使用者可以通過讀和寫的許可權存取這個目錄,而其他使用者組中的使用者對這個目錄只有讀的許可權。在 Linux 中,這是完全可以實現的。但前提是你必須先了解如何通過使用者組和存取控制列表(ACL)來管理使用者。
我們將從簡單的使用者開始,逐漸深入到複雜的存取控制列表(ACL)。你可以在你所選擇的 Linux 發行版完成你所需要做的一切。本文的重點是使用者組,所以不會涉及到關於使用者的基礎知識。
為了達到演示的目的,我將假設:
你需要用下面兩個使用者名稱新建兩個使用者:
- olivia
- nathan
你需要新建以下兩個使用者組:
- readers
- editors
olivia 屬於 editors 使用者組,而 nathan 屬於 readers 使用者組。reader 使用者組對 /DATA
目錄只有讀的許可權,而 editors 使用者組則對 /DATA
目錄同時有讀和寫的許可權。當然,這是個非常小的任務,但它會給你基本的資訊,你可以擴充套件這個任務以適應你其他更大的需求。
我將在 Ubuntu 16.04 Server 平台上進行演示。這些命令都是通用的,唯一不同的是,要是在你的發行版中不使用 sudo
命令,你必須切換到 root 使用者來執行這些命令。
建立使用者
我們需要做的第一件事是為我們的實驗建立兩個使用者。可以用 useradd
命令來建立使用者,我們不只是簡單地建立一個使用者,而需要同時建立使用者和屬於他們的家目錄,然後給他們設定密碼。
sudouseradd-m olivia
sudouseradd-m nathan
我們現在建立了兩個使用者,如果你看看 /home
目錄,你可以發現他們的家目錄(因為我們用了 -m
選項,可以在建立使用者的同時建立他們的家目錄。
之後,我們可以用以下命令給他們設定密碼:
sudopasswd olivia
sudopasswd nathan
就這樣,我們建立了兩個使用者。
建立使用者組並新增使用者
現在我們將建立 readers 和 editors 使用者組,然後給它們新增使用者。建立使用者組的命令是:
addgroup readers
addgroup editors
(LCTT 譯註:當你使用 CentOS 等一些 Linux 發行版時,可能系統沒有 addgroup
這個命令,推薦使用 groupadd
命令來替換 addgroup
命令以達到同樣的效果)
圖一:我們可以使用剛建立的新使用者組了。
建立使用者組後,我們需要新增我們的使用者到這兩個使用者組。我們用以下命令來將 nathan 使用者新增到 readers 使用者組:
sudousermod-a -G readers nathan
用以下命令將 olivia 新增到 editors 使用者組:
sudousermod-a -G editors olivia
現在我們可以通過使用者組來管理使用者了。
給使用者組授予目錄的許可權
假設你有個目錄 /READERS
且允許 readers 使用者組的所有成員存取這個目錄。首先,我們執行以下命令來更改目錄所屬使用者組:
sudochown-R :readers /READERS
接下來,執行以下命令收回目錄所屬使用者組的寫入許可權:
sudochmod-R g-w/READERS
然後我們執行下面的命令來收回其他使用者對這個目錄的存取許可權(以防止任何不在 readers 組中的使用者存取這個目錄裡的檔案):
sudochmod-R o-x /READERS
這時候,只有目錄的所有者(root)和使用者組 reader 中的使用者可以存取 /READES
中的檔案。
假設你有個目錄 /EDITORS
,你需要給使用者組 editors 裡的成員這個目錄的讀和寫的許可權。為了達到這個目的,執行下面的這些命令是必要的:
sudochown-R :editors /EDITORS
sudochmod-R g+w/EDITORS
sudochmod-R o-x /EDITORS
此時 editors 使用者組的所有成員都可以存取和修改其中的檔案。除此之外其他使用者(除了 root 之外)無法存取 /EDITORS
中的任何檔案。
使用這個方法的問題在於,你一次只能操作一個組和一個目錄而已。這時候存取控制列表(ACL)就可以派得上用場了。
使用存取控制列表(ACL)
現在,讓我們把這個問題變得棘手一點。假設你有一個目錄 /DATA
並且你想給 readers 使用者組的成員讀取許可權,並同時給 editors 使用者組的成員讀和寫的許可權。為此,你必須要用到 setfacl
命令。setfacl
命令可以為檔案或資料夾設定一個存取控制列表(ACL)。
這個命令的結構如下:
setfacl OPTION X:NAME:Y /DIRECTORY
其中 OPTION 是可選選項,X 可以是 u
(使用者)或者是 g
(使用者組),NAME 是使用者或者使用者組的名字,/DIRECTORY 是要用到的目錄。我們將使用 -m
選項進行修改。因此,我們給 readers 使用者組新增讀取許可權的命令是:
sudosetfacl-m g:readers:rx -R /DATA
現在 readers 使用者組裡面的每一個使用者都可以讀取 /DATA
目錄裡的檔案了,但是他們不能修改裡面的內容。
為了給 editors 使用者組裡面的使用者讀寫許可權,我們執行了以下命令:
sudosetfacl-m g:editors:rwx -R /DATA
上述命令將賦予 editors 使用者組中的任何成員讀取許可權,同時保留 readers 使用者組的唯讀許可權。
更多的許可權控制
使用存取控制列表(ACL),你可以實現你所需的許可權控制。你可以新增使用者到使用者組,並且靈活地控制這些使用者組對每個目錄的許可權以達到你的需求。如果想了解上述工具的更多資訊,可以執行下列的命令:
man usradd
man addgroup
man usermod
man sefacl
man chown
man chmod
via: https://www.linux.com/learn/intro-to-linux/2017/12/how-manage-users-groups-linux
作者:[Jack Wallen] 譯者:imquanquan 校對:wxy
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-12/149227.htm
相關文章