Linux中國

如何在 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 命令來創建用戶,我們不只是簡單地創建一個用戶,而需要同時創建用戶和屬於他們的家目錄,然後給他們設置密碼。

sudo useradd -m olivia
sudo useradd -m nathan

我們現在創建了兩個用戶,如果你看看 /home 目錄,你可以發現他們的家目錄(因為我們用了 -m 選項,可以在創建用戶的同時創建他們的家目錄。

之後,我們可以用以下命令給他們設置密碼:

sudo passwd olivia
sudo passwd nathan

就這樣,我們創建了兩個用戶。

創建用戶組並添加用戶

現在我們將創建 readers 和 editors 用戶組,然後給它們添加用戶。創建用戶組的命令是:

addgroup readers
addgroup editors

(LCTT 譯註:當你使用 CentOS 等一些 Linux 發行版時,可能系統沒有 addgroup 這個命令,推薦使用 groupadd 命令來替換 addgroup 命令以達到同樣的效果)

groups

圖一:我們可以使用剛創建的新用戶組了。

創建用戶組後,我們需要添加我們的用戶到這兩個用戶組。我們用以下命令來將 nathan 用戶添加到 readers 用戶組:

sudo usermod -a -G readers nathan

用以下命令將 olivia 添加到 editors 用戶組:

sudo usermod -a -G editors olivia

現在我們可以通過用戶組來管理用戶了。

給用戶組授予目錄的許可權

假設你有個目錄 /READERS 且允許 readers 用戶組的所有成員訪問這個目錄。首先,我們執行以下命令來更改目錄所屬用戶組:

sudo chown -R :readers /READERS 

接下來,執行以下命令收回目錄所屬用戶組的寫入許可權:

sudo chmod -R g-w /READERS

然後我們執行下面的命令來收回其他用戶對這個目錄的訪問許可權(以防止任何不在 readers 組中的用戶訪問這個目錄里的文件):

sudo chmod -R o-x /READERS

這時候,只有目錄的所有者(root)和用戶組 reader 中的用戶可以訪問 /READES 中的文件。

假設你有個目錄 /EDITORS ,你需要給用戶組 editors 里的成員這個目錄的讀和寫的許可權。為了達到這個目的,執行下面的這些命令是必要的:

sudo chown -R :editors /EDITORS
sudo chmod -R g+w /EDITORS
sudo chmod -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 用戶組添加讀取許可權的命令是:

sudo setfacl -m g:readers:rx -R /DATA

現在 readers 用戶組裡面的每一個用戶都可以讀取 /DATA 目錄里的文件了,但是他們不能修改裡面的內容。

為了給 editors 用戶組裡面的用戶讀寫許可權,我們執行了以下命令:

sudo setfacl -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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國