中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Linux中使用訪問控制列表保護文件或目錄

發布時間:2021-07-27 22:29:11 來源:億速云 閱讀:292 作者:chen 欄目:數據安全

本篇內容主要講解“如何在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中使用訪問控制列表保護文件或目錄”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东兰县| 通榆县| 时尚| 将乐县| 山西省| 阿克| 夏邑县| 财经| 南澳县| 维西| 砀山县| 区。| 曲麻莱县| 逊克县| 大足县| 兴城市| 茶陵县| 辛集市| 公主岭市| 沂源县| 奉新县| 南平市| 自治县| 吴堡县| 大渡口区| 祁东县| 调兵山市| 佛坪县| 宜城市| 凌海市| 思茅市| 瑞金市| 读书| 南京市| 马尔康县| 北宁市| 湘潭市| 阳曲县| 鲁山县| 达孜县| 海原县|