您好,登錄后才能下訂單哦!
Linux系統中可以針對組、用戶、其他人設置不同的讀寫執行權限,但是還不夠精準,若想給某個特定的用戶設置一個獨特的權限呢?而這個用戶又不是該文件或目錄的屬組或屬組,怎么破?
針對特定的某個用戶設置權限的方法如下:
[root@localhost ~]# dmesg | grep -i acl #查看系統是否可以設置ACL,若可以查到下面標紅的字樣,則代表沒問題。
[ 1.173259] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +'ACL' +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[ 2.487295] SGI XFS with 'ACL's, security attributes, no debug enabled
setfacl的常用選項如下:
- -m:設置后續的ACL參數給文件使用,不可與-x一起使用;
- -x:刪除后續的ACL參數,不可與-m一起使用;
- -b:刪除所有的ACL設置參數;
- -k:刪除默認的ACL參數;
- -R:遞歸設置ACL,就是包括子目錄都會被應用;
- -d:設置默認ACL參數,只對目錄有效,在該目錄新建的數據會引用此默認值;
設置舉例:
[root@localhost ~]# touch acl_test1 #創建一個測試文件
[root@localhost ~]# setfacl -m u:lv:rw acl_test1 #單獨賦予用戶“lv”讀寫權限
[root@localhost ~]# ll acl_test1 #查看文件屬性,在權限欄最后多了一個“+”,這就是剛設置的ACL
-rw-rw-r--+ 1 root root 0 9月 3 08:45 acl_test1
[root@localhost ~]# setfacl -m u::rwx acl_test1 #若u后面不寫用戶,則表示設置該文件的屬主權限
[root@localhost ~]# ll acl_test1 #會發現屬主的權限變成了rwx。
-rwxrw-r--+ 1 root root 0 9月 3 08:45 acl_test1
選項和setfacl基本相同,可以通過man手冊來查看具體的使用選項,最主要還是用來查看我們使用setfacl設置的ACL規則;
使用舉例:
[root@localhost ~]# getfacl acl_test1 #使用getfacl查看設置的ACL權限
# file: acl_test1 #文件名
# owner: root #文件屬主
# group: root #文件屬組
user::rwx #屬主的權限
user:lv:rw- #用戶“lv”的權限
group::r-- #文件屬組的權限
mask::rw- #此文件默認的有效權限
#用戶或群組所設置的權限必須要存在于mask的權限設置范圍內才會生效
other::r-- #其他任何人的權限
[root@localhost ~]# ll acl_test1 #使用“ll”命令查看后,進行比較
-rwxrw-r--+ 1 root root 0 9月 3 08:45 acl_test1
#1、針對有效權限mask的設置方式
[root@localhost ~]# setfacl -m m:r acl_test1 #設置該文件的權限僅有讀權限(r)。
[root@localhost ~]# getfacl acl_test1 #查看
# file: acl_test1
# owner: root
# group: root
user::rwx
user:lv:rw- #effective:r-- #注釋為有效權限只有r(讀權限),哪怕用戶后面有w(寫權限),也不生效
group::r--
mask::r-- #是因為這里,這里有并且用戶也具有的權限,才是有效權限,如這里的“r”權限。
other::r--
#2、針對特定群組的方式設置權限(刪除了原本的文件,又新建了一個acl_test1):
[root@localhost ~]# setfacl -m g:mygroup:rx acl_test1 #設置mygroup組有rx權限
[root@localhost ~]# getfacl acl_test1 #查看
# file: acl_test1
# owner: root
# group: root
user::rw-
group::r--
group:mygroup:r-x #這里就是新設置的權限
mask::r-x
other::r--
#3、讓myuser1在/usr/local下面一直具有rx的默認權限
[root@localhost ~]# setfacl -m d:u:myuser1:rx /usr/local/ #設置權限
[root@localhost ~]# getfacl /usr/local/ #查看
getfacl: Removing leading '/' from absolute path names
# file: usr/local/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:myuser1:r-x #就是這行咯
default:group::r-x
default:mask::r-x
default:other::r-x
#創建一個目錄,并查看是否繼承了默認權限
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mkdir test
[root@localhost local]# ls -ld test/ #有“+”的權限,說明繼承默認權限了
drwxr-xr-x+ 2 root root 6 9月 3 09:51 test/
[root@localhost local]# getfacl test #使用getfacl查看
# file: test
# owner: root
# group: root
user::rwx
user:myuser1:r-x
group::r-x
mask::r-x
other::r-x
default:user::rwx
default:user:myuser1:r-x #就是這行咯
default:group::r-x
default:mask::r-x
default:other::r-x
#以下為取消用戶的某些ACL規則
[root@localhost local]# setfacl -x u:myuser1 /usr/local/ #取消myuser1用戶對該目錄的ACL規則
[root@localhost local]# setfacl -x d:u:myuser1 /usr/local/ #取消遞歸的ACL規則
[root@localhost local]# setfacl -m u:myuser1:- /usr/local #使myuser1用戶無法使用該目錄,在權限字段使用“-”表示即可。
———————— 本文至此結束,感謝閱讀 ————————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。