使用 ACL 設定使用者訪問指定檔案/目錄的許可權 | Linux 中國
本文導航◈ 什麼是 ACL?16%◈ 什麼是 setfacl?20%◈ 什麼 getfacl?21%◈ 如何確認是否啟用了 ACL?24%◈ 如何檢視預設的 ACL 值38%◈ 如何為檔案設定 ACL43%◈ 如何為目錄設定 ACL56%◈ 如何為組設定 ACL68%◈ 如何刪除 ACL75%◈ 如何備份並還原 ACL88%編譯自 | https://www.2daygeek.com/how-to-configure-access-control-lists-acls-setfacl-getfacl-linux/
作者 | Magesh Maruthamuthu
譯者 | lujun9972
當提到檔案和目錄的許可權時,你的第一反應可能是“屬主/群組/其它”許可權。 這些許可權可以通過 chmod
、 chown
等命令來修改。
檔案和目錄都有屬主 (檔案所有者 )、群組 (所屬組) 以及其它許可權,這些許可權構成一個集合。 然而這些許可權集合有它的侷限性,無法做到為不同的使用者設定不同的許可權。
Linux 對檔案和目錄有以下預設許可權。
◈ 檔案 ->644
-> -rw-r-r-
(所有者有讀寫許可權,組成員有隻讀許可權, 其他人也只有讀許可權)◈ 目錄 -> 755
-> drwxr-xr-x
比如: 預設情況下,所有者可以訪問和編輯他們自己主目錄中的檔案, 也可以訪問相關同組人的檔案,但他們不能修改這些檔案,因為組成員沒有寫許可權,而且讓組成員有寫許可權也是不明智的。 基於同樣的原因,他/她也不能修改其他人的檔案。 然而在某些情況下,多個使用者想要修改同一個檔案, 那該怎麼辦呢?
假設有個名叫 magi
的使用者,他想要修改 httpd.conf
檔案怎麼辦呢? 這個檔案是歸 root 使用者所有的,這樣如何授權呢? 為了解決這種情況,訪問控制列表Access Control List(ACL)誕生了。
什麼是 ACL?
ACL 表示訪問控制列表Access Control List(ACL),它為檔案系統提供了附加的、更具有彈性的許可權機制。 它被設計來為補充 UNIX 檔案許可權機制。 ACL 允許你賦予任何某使用者/組訪問某項資源的許可權。 setfacl
與 getfacl
命令會幫助你管理 ACL 而不會有任何麻煩。
什麼是 setfacl?
setfacl
用於設定檔案和目錄的 ACL。
什麼 getfacl?
getfacl
- 獲取檔案的 ACL 。對於每個檔案, getfacl
都會顯示檔名、檔案所有者、所屬組以及ACL。 如果目錄有預設 ACL, getfacl
也會顯示這個預設的 ACL。
如何確認是否啟用了 ACL?
執行 tune2fs
命令來檢查是否啟用了 ACL。
#tune2fs-l /dev/sdb1 |grep options
Defaultmount options:(none)
上面的輸出很明顯第說明 /dev/sdb1
分割槽沒有啟用 ACL。
如果結果中沒有列出 acl
,則你需要在掛載選項中加上 acl
。 為了讓它永久生效, 修改 /etc/fstab
中 /app
這一行成這樣:
#more/etc/fstab
UUID=f304277d-1063-40a2-b9dc-8bcf30466a03/ ext4 defaults 11
/dev/sdb1 /app ext4 defaults,acl 11
或者,你也可以使用下面命令將其新增道檔案系統的超級塊中:
#tune2fs-o +acl /dev/sdb1
現在,通過執行以下命令來動態修改選項:
#mount-o remount,acl /app
再次執行 tune2fs
命令來看選項中是否有 acl
了:
#tune2fs-l /dev/sdb1 |grep options
Defaultmount options: acl
嗯,現在 /dev/sdb1
分割槽中有 ACL 選項了。
如何檢視預設的 ACL 值
要檢視檔案和目錄預設的 ACL 值,可以使用 getfacl
命令後面加上檔案路徑或者目錄路徑。 注意, 當你對非 ACL 檔案/目錄執行 getfacl
命令時, 則不會顯示附加的 user
和 mask
引數值。
# getfacl /etc/apache2/apache2.conf
#file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
group::r--
other::r--
如何為檔案設定 ACL
以下面格式執行 setfacl
命令可以為指定檔案設定 ACL。在下面的例子中,我們會給 magi
使用者對 /etc/apache2/apache2.conf
檔案 rwx
的許可權。
#setfacl-m u:magi:rwx /etc/apache2/apache2.conf
仔細分析起來:
◈setfacl
: 命令◈ -m
: 修改檔案的當前 ACL◈ u
: 指明使用者◈ magi
: 使用者名稱◈ rwx
: 要設定的許可權◈ /etc/apache2/apache2.conf
: 檔名稱再檢視一次新的 ACL 值:
# getfacl /etc/apache2/apache2.conf
#file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
user:magi:rwx
group::r--
mask::rwx
other::r--
注意: 若你發現檔案或目錄許可權後面有一個加號(+
),就表示設定了 ACL。
#ls-lh /etc/apache2/apache2.conf
-rw-rwxr--+1 root root 7.1KSep1914:58/etc/apache2/apache2.conf
如何為目錄設定 ACL
以下面格式執行 setfacl
命令可以遞迴地為指定目錄設定 ACL。在下面的例子中,我們會將 /etc/apache2/sites-available/
目錄中的 rwx
許可權賦予 magi
使用者。
#setfacl-Rm u:magi:rwx /etc/apache2/sites-available/
其中:
◈-R
: 遞迴到子目錄中再次檢視一下新的 ACL 值。
# getfacl /etc/apache2/sites-available/
#file: etc/apache2/sites-available/
# owner: root
# group: root
user::rwx
user:magi:rwx
group::r-x
mask::rwx
other::r-x
現在 /etc/apache2/sites-available/
中的檔案和目錄都設定了 ACL。
#ls-lh /etc/apache2/sites-available/
total 20K
-rw-rwxr--+1 root root 1.4KSep1914:56000-default.conf
-rw-rwxr--+1 root root 6.2KSep1914:56default-ssl.conf
-rw-rwxr--+1 root root 1.4KDec802:57 mywebpage.com.conf
-rw-rwxr--+1 root root 1.4KDec719:07 testpage.com.conf
如何為組設定 ACL
以下面格式為指定檔案執行 setfacl
命令。在下面的例子中,我們會給 appdev
組賦予 /etc/apache2/apache2.conf
檔案的 rwx
許可權。
#setfacl-m g:appdev:rwx /etc/apache2/apache2.conf
其中:
◈g
: 指明一個組對多個使用者和組授權,只需要用 逗號
區分開,就像下面這樣。
#setfacl-m u:magi:rwx,g:appdev:rwx /etc/apache2/apache2.conf
如何刪除 ACL
以下面格式執行 setfacl
命令會刪除檔案對指定使用者的 ACL。這隻會刪除使用者許可權而保留 mask
的值為只讀。
#setfacl-x u:magi /etc/apache2/apache2.conf
其中:
◈-x
: 從檔案的 ACL 中刪除再次檢視 ACL 值。在下面的輸出中我們可以看到 mask
的值是讀。
# getfacl /etc/apache2/apache2.conf
#file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
使用 -b
來刪除檔案中所有的 ACL。
#setfacl-b /etc/apache2/apache2.conf
其中:
◈-b
: 刪除所有的 ACL 條目再次檢視刪掉後的 ACl 值就會發現所有的東西都不見了,包括 mask
的值也不見了。
# getfacl /etc/apache2/apache2.conf
#file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
group::r--
other::r--
如何備份並還原 ACL
下面命令可以備份和還原 ACL 的值。要製作備份, 需要進入對應的目錄然後這樣做(假設我們要備份 sites-available
目錄中的 ACL 值)。
#cd/etc/apache2/sites-available/
# getfacl -R *> acl_backup_for_folder
還原的話,則執行下面命令:
#setfacl--restore=/etc/apache2/sites-available/acl_backup_for_folder
via: https://www.2daygeek.com/how-to-configure-access-control-lists-acls-setfacl-getfacl-linux/
作者:Magesh Maruthamuthu[2] 譯者:lujun9972 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
LCTT 譯者lujun9972 ? ? ? ?共計翻譯:51 篇貢獻時間:39 天推薦文章
< 左右滑動檢視相關文章 >
相關推薦
使用 ACL 設定使用者訪問指定檔案/目錄的許可權 | Linux 中國
ACL 表示訪問控制列表(Access Control List,ACL),它為檔案系統提供了附
apache 設定禁止訪問某些檔案或目錄
【apache配置禁止訪問】 1. 禁止訪問某些檔案/目錄 增加Files選項來控制,比如要不允許訪問 .inc 副檔名的檔案,保護php類庫:<Files ~ "\.inc$"> Order allow,deny Deny from all <
ftp設置用戶只能夠訪問指定的目錄
ftp設置用戶只能夠訪問指定的目錄如新建一個admin用戶,若指定admin只能訪問/home /uftp目錄下的administer目錄。則:(1) 首先要存在administer目錄,並且保證administer目錄不具備可寫的權限,否則將造成登錄失敗。可使用“chmod a-w + 目錄”進
mac 進入指定檔案目錄
用了兩年多的mac了,好多東西都還不會,平時也拿來做開發用,但是有種沒有windows順手的感覺。就拿使用maven這件事來說吧。用homebrew安裝了maven,但是想使用安裝的maven來管理專案的時候,卻找不到maven安裝在哪兒,好幾次都問度娘,每次都覺得麻煩,就沒弄成功過。前幾天又試
Linux私房菜:檔案目錄許可權那點事
本文內容精簡、整理、摘抄、有感於《鳥哥的Linux私房菜》第五章 • Linux的檔案許可權與目錄配置。 檔案目錄身份 owner -> u -> 擁有者 group ->
java 刪除指定檔案目錄
今天沒事 回頭看看IO流的問題呢,順便整理下刪除檔案的步驟。畢竟曾經也是讓我頭疼的問題。 本來想將刪除目錄以及子目錄都放在一個方法處理的(在一個方法中只能刪除子目錄,執行完這個方法才會執行刪除最外層目錄的程式碼),但是沒能處理的了,因為時間緊張也就沒往下想(其實這樣也挺好,簡單、易懂)。希望各位
Linux檔案目錄許可權、隱藏屬性、特殊許可權
一、 Linux檔案及目錄許可權概念 1.1 檢視目錄或者檔案的許可權 “ls -al”命令可以檢視 1.2 目錄及檔案許可權分析 從上面的圖中可以看到,目錄或者檔案的屬性欄位為: - - - - - - - - - - 從左至
檔案目錄許可權管理
檔案目錄許可權管理 一、檔案資訊簡介 ls -l/-lR(遞迴) file(檢視檔案資訊) -rw-rw-r–. 1 kiosk kiosk 0 Jan 3 20:16 unit4 1|2 |3 |4 | 5| 6 | 7 |8| 9 | 10 [2] 檔案擁有者對檔案能做什麼操作
玩玩linux下的access函式---探測檔案/目錄許可權
access函式用來探測檔案/目錄許可權, 我們先來看程式: #include <stdio.h> #include <unistd.h> int main(
Sftp只允許使用者訪問指定的目錄
在一些生產環境中,有時,使用者需要傳資料到伺服器,但是配置ftp服務比較麻煩,此時,我們可以為使用者建立sftp賬戶,讓使用者使用sftp來上傳下載所需的資料。Sftp賬號即為系統賬號,將賬戶密碼給使用者,使用者除了能登入sftp上傳下載資料外,還可以訪問系統中的其他目
檔案目錄許可權總結
代表字元 許可權 對檔案的含義 對目錄的含義 4 - r 讀許可權 可以產看檔案內容
安裝資料庫提示"請確保當前使用者具有訪問臨時檔案的許可權"解決方法
SYMPTOMS While installing 11.2 on Unix/Linux platform below errors appear: "INS-30131 initial setup required for the execution of insta
iOS 實現錄音並儲存在指定檔案目錄下面
原理: 進入介面,先遍歷檔案目錄,將所有的檔名,顯示在uitableview中。在錄音時需要設定session以及錄音取樣率。 1.ios錄音主要使用ios自帶的類,是工程中需要手動新增這倆個framework #import <AVFoundati
Linux--檔案/目錄 許可權及修改
首先所有許可權對於三類使用者分別設定: User(所有者) / Group(組群) / Others(其他)。 許可權也是有三種:Read / Write / eXecute,這三種許可權對於文件和目錄有不同的意義。 1. 對於文件: Read:可以檢視文件的內容 Wri
ASP .Net Core 中介軟體的使用(一):搭建靜態檔案伺服器/訪問指定檔案
前言 隨著Asp .Net Core的升級迭代,很多開發者都逐漸傾向於.net core開發。 .net core是一個跨平臺的應用程式,可以在windows、Linux、macOS系統上進行開發和部署,是一個體繫結構更精簡模組化框架。 生成WebUi和WebApi的統一使用場景; 整合新的客戶端框架和開發
linux下目錄許可權檢視與修改以及檔案和目錄訪問許可權設定
檢視檔案許可權的語句: 在終端輸入: ls -l xxx.xxx (xxx.xxx是檔名) 那麼就會出現相類似的資訊,主要都是這些: -rw-rw-r-- 一共有10位數 其中: 最前面那個 - 代表的是型別 中間那三個 rw- 代表的是所有者(user
Koa2學習系列07-處理靜態資源——指定靜態檔案目錄,設定快取
處理靜態資源 無非花開花落,靜靜。 指定靜態資源目錄 這裡我們使用第三方中介軟體: koa-static 安裝並使用 安裝 koa-static: npm i koa-static -S
ossutil釋出1.4.2版本,支援上傳或複製檔案目錄指定儲存型別,支援訪問請求者付費模式的Bucket
ossutil 1.4.2 Release Note lscp命令:支援訪問開啟“請求者付費模式”的Bucket cp命令:上傳、複製檔案或目錄時,支援設定儲存型別 cp命令:上傳下載時,顯示傳輸速度 cp命令:Window版本支援斷點續傳(Linux、Mac版本已經支援) os
Windows 無法訪問指定裝置,路徑或檔案。你可能沒有合適的許可權訪問這個專案。
Windows 無法訪問指定裝置,路徑或檔案。你可能沒有合適的許可權訪問這個專案。 0. 背景 出現這個問題的背景如下: 電腦安裝有金山毒霸 win10 系統 開啟部分.exe檔案情況報上述錯 1. 報錯原因 說實話,這個windows系統,
騰訊雲伺服器centos7.3 配置FTP,每個使用者登入FTP對應不同的檔案目錄,並只能訪問設定的目錄
VSFTPD 安裝: -- 檢視是否已經安裝 VSftpd: rpm -qa | grep vsftp yum install -y vsftpd groupadd ftpuser #建立ftpuser組 useradd -g ftpuser -s /sbin/