首頁 > 系統教程 > Linux > 主體

Linux 系統中透過使用者群組管理使用者!

王林
發布: 2024-02-22 09:07:22
轉載
888 人瀏覽過

在 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 指令以達到相同的效果)
Linux 系统中通过用户组管理用户!

圖一:我們可以使用剛建立的新使用者群組了。

建立使用者群組後,我們需要將我們的使用者新增至這兩個使用者群組。我們用以下命令來將 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

以上是Linux 系統中透過使用者群組管理使用者!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:linuxprobe.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板