您好,登錄后才能下訂單哦!
本篇內容主要講解“如何在Linux中使用訪問控制列表保護文件或目錄”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何在Linux中使用訪問控制列表保護文件或目錄”吧!
作為系統管理員,我們的首要任務就是切實保護數據的安全,以免被未授權的人訪問。我們都很清楚使用一些大有幫助的Linux命令設置的權限,比如chmod、chown和chgrp等命令,可是這些默認的權限集有一定的局限性,有時可能還滿足不了我們的要求。比如說,我們就無法針對同一目錄或文件為不同用戶設置不同的權限集。因而,訪問控制列表(ACL)應運而生。
Linux訪問控制列表
比如說,你有三個用戶,分別是“tecmint1”、“tecmint2”和“tecmint3”。每個用戶都有一個共同的用戶組,比如說“acl”。用戶“tecmint1”希望,只有“tecmint2”用戶才能讀取和訪問歸“tecmint1”用戶所有的文件,其他人都無權訪問該文件。
訪問控制列表(ACL)讓我們可以做到同樣這點。這些ACL讓我們可以為某個用戶、用戶組或不在用戶組列表中的任何用戶的任何組授予權限。
注意:按照紅帽產品說明文檔,它為ext3文件系統和NFS導出文件系統提供了ACL支持。
如何檢查Linux系統中的ACL支持?
在繼續下一步之前,你應確保ACL在現有的內核和已掛載的文件系統上得到支持。
1. 檢查內核是否支持ACL。
運行下面這個命令,檢查是否為文件系統提供ACL支持,是否有POSIX_ACL=Y選項(如果出現的是N,而不是Y,那么這意味著內核并不支持ACL,需要重新加以編譯)。
[root@linux ~]# grep -i acl /boot/config*
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_GENERIC_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CIFS_ACL=y
CONFIG_9P_FS_POSIX_ACL=y
2. 檢查所需的程序包。
在開始處理ACL之前,要確保你已安裝了所需的程序包。下面是所需的程序包,需要使用yum或apt-get命令加以安裝。
[root@linux ~]# yum install nfs4-acl-tools acl libacl [on RedHat based systems] [tecmint@linux ~]$ sudo apt-get install nfs4-acl-tools acl [on Debian based systems]
3. 檢查已掛載的文件系統是否支持ACL。
現在,檢查已掛載的文件系統是否使用ACL選項掛載的。我們可以使用“mount”命令來進行同樣的檢查,如下所示。
[root@linux ~]# mount | grep -i root /dev/mapper/fedora-root on / type ext4 (rw,relatime,data=ordered)
但在本例中,它在默認情況下沒有顯示acl。所以,接下來我們可以再次使用acl選項,重新掛載已掛載的分區。但在繼續下一步之前,我們還有另一個選項:確保有沒有使用acl選項來掛載,因為對較新系統而言,它可能整合了默認的掛載選項。
[root@linux ~]# tune2fs -l /dev/mapper/fedora-root | grep acl Default mount options: user_xattr acl
在上面的輸出結果中,你能看到默認的掛載選項已經支持acl。另一個選項是,重新掛載分區,如下所示。
[root@linux ~]# mount -o remount,acl /
下一步,將下面這一項條目添加到/etc/fstab文件,讓其具有***性。
/dev/mapper/fedora-root / ext4 defaults,acl 1 1
再次重新掛載分區。
[root@linux ~]# mount -o remount /
4. 針對NFS服務器。
在NFS服務器上,如果NFS服務器導出的文件系統支持ACL,ACL又可以被NFS客戶機讀取,那么客戶機系統就能使用ACL。
想禁用NFS共享區上的ACL,你就得在NFS服務器的“/etc/exportfs”文件中添加選項“no_acl”。想在NSF客戶端禁用它,那么在掛載期間再次使用“no_acl“選項。
如何在Linux系統中實現ACL支持?
ACL有兩種類型:
?訪問ACL:訪問ACL用于授予針對任何文件或目錄的權限。
?默認ACL:默認ACL用于授予/設置只針對特定目錄的訪問控制列表。
訪問ACL與默認ACL之間的區別如下:
?默認ACL只能用在目錄級別。
?在該目錄里面創建的任何子目錄或文件將從父目錄那里繼承ACL。另一方面,文件繼承默認ACL作為其訪問ACL。
?我們使用“–d”來設置默認ACL,默認ACL是可選的。
在設置默認ACL之前
想為特定的文件或目錄設置默認ACL,可以使用“getfacl”命令。在下面這個例子中,getfacl用于為文件夾“Music”獲得默認ACL。
[root@linux ~]# getfacl Music/ # 文件:Music/ # 所有者:root # 用戶組:root user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:other::rw-
設置默認ACL之后
想為特定的文件或目錄設置默認ACL,使用“setfacl”命令。在下面這個例子中,setfacl命令將為文件夾“Music”設置新的ACL(讀取和執行)。
[root@linux ~]# setfacl -m d:o:rx Music/ [root@linux ~]# getfacl Music/ # 文件:Music/ # 所有者:root # 用戶組:root user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:other::r-x
如何設置新的ACL
使用“setfacl”命令用于設置或修改任何文件或目錄。比如說,想為用戶“tecmint1”授予讀取和寫入權限。
# setfacl -m u:tecmint1:rw /tecmint1/example
如何查看ACL
使用“getfacl”命令用于查看任何文件或目錄的ACL。比如說,想查看“/tecmint1/example”上的ACL,使用下面這個命令。
# getfacl /tecmint1/example
# 文件:tecmint1/example/
# 所有者:tecmint1
# 用戶組:tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---
如何刪除ACL
想刪除任何文件/目錄的ACL,我們可以使用x和b這兩個選項,如下所示。
# setfacl -x ACL file/directory # 只刪除文件/目錄的指定ACL
# setfacl -b file/directory # 刪除文件/目錄的所有ACL
不妨將ACL實現到下列場景。
兩個用戶(tecmint1和tecmint2)都有共同的輔助組,名為“acl”。我們將創建歸“tecmint1”用戶所有的一個目錄,并為用戶“tecmint2”提供針對該目錄的讀取和執行權限。
第1步:創建兩個用戶,并清除兩個用戶的密碼。
[root@linux ~]# for user in tecmint1 tecmint2
> do
> useradd $user
> passwd -d $user
> done
Removing password for user tecmint1.
passwd: Success
Removing password for user tecmint2.
passwd: Success
第2步:為輔助組創建用戶組和用戶。
[root@linux ~]# groupadd acl [root@linux ~]# usermod -G acl tecmint1 [root@linux ~]# usermod -G acl tecmint2
第3步:創建目錄/tecmint,并將所有權改為tecmint1。
[root@linux ~]# mkdir /tecmint1
[root@linux ~]# chown tecmint1 /tecmint1/[root@linux ~]# ls -ld /tecmint1/
drwxr-xr-x 2 tecmint1 root 4096 Apr 17 14:46 /tecmint1/[root@linux ~]# getfacl /tecmint1
getfacl: Removing leading '/' from absolute path names
# 文件:tecmint1
# 所有者:tecmint1
# 用戶組:root
user::rwx
group::r-x
other::r-x
第4步:以tecmint1身份登錄,在/tecmint文件夾下創建一個目錄。
[tecmint@linux ~]$ su - tecmint1
Last login: Thu Apr 17 14:49:16 IST 2014 on pts/4[tecmint1@linux ~]$ cd /tecmint1/
[tecmint1@linux tecmint1]$ mkdir example[tecmint1@linux tecmint1]$ ll
total 4
drwxrwxr-x 2 tecmint1 tecmint1 4096 Apr 17 14:50 example[tecmint1@linux tecmint1]$ whoami
tecmint1
第5步:現在使用“setfacl”設置ACL,那樣“tecmint1”用戶會擁有所有的rwx(讀取、寫入和執行)權限,“tecmint2”用戶只有“example”文件夾上的讀取權限,其他用戶沒有任何權限。
$ setfacl -m u:tecmint1:rwx example/
$ setfacl -m u:tecmint2:r-- example/
$ setfacl -m other:--- example/
$ getfacl example/# 文件:example
# 所有者:tecmint1
# 用戶組:tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::r-x
mask::rwx
other::---
第6步:現在以另一用戶(即“tecmint2”)的身份在另一個終端上登錄,將目錄改為“/tecmint1”。現在試著使用“ls”命令,查看內容,然后試著更改目錄,看看有什么區別,如下所示。
[tecmint@linux ~]$ su - tecmint2
Last login: Thu Apr 17 15:03:31 IST 2014 on pts/5[tecmint2@linux ~]$ cd /tecmint1/
[tecmint2@linux tecmint1]$ ls -lR example/
example/:
total 0[tecmint2@linux tecmint1]$ cd example/
-bash: cd: example/: Permission denied[tecmint2@linux tecmint1]$ getfacl example/
# 文件:example
# 所有者:tecmint1
# 用戶組:tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---
第7步:現在為“tecmint2”用戶授予針對“example”文件夾的“執行”權限,然后使用“cd”命令看看有什么效果。現在,“tecmint2”用戶擁有查看和更改目錄的權限,但沒有寫入任何內容的權限。
[tecmint1@linux tecmint1]$ setfacl -m u:tecmint2:r-x example/
[tecmint1@linux tecmint1]$ getfacl example/# 文件:example
# 所有者:tecmint1
# 用戶組:tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r-x
group::rwx
mask::rwx
other::---[tecmint@linux ~]$ su - tecmint2
Last login: Thu Apr 17 15:09:49 IST 2014 on pts/5[tecmint2@linux ~]$ cd /tecmint1/
[tecmint2@linux tecmint1]$ cd example/
[tecmint2@linux example]$ getfacl .[tecmint2@linux example]$ mkdir test
mkdir: cannot create directory 'test': Permission denied[tecmint2@linux example]$ touch test
touch: cannot touch 'test': Permission denied
注意:實現ACL后,你會看到“ls –l”輸出有一個額外的“+”符號,如下所示。
[root@linux tecmint1]# ll
total 4
drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example
到此,相信大家對“如何在Linux中使用訪問控制列表保護文件或目錄”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。