linux中ACL許可權

来源:https://www.cnblogs.com/eternityz/archive/2020/02/29/12386423.html
-Advertisement-
Play Games

1.ACL許可權簡介與開啟 一.ACL許可權是為瞭解決所有者/所屬組/其他人三種身份不足的問題 二.查看分區ACL許可權是否開啟 dumpe2fs命令是查詢指定分區詳細文件系統信息的命令 dumpe2fs h /dev/sda3 Default mount options: user_xattr acl顯 ...


1.ACL許可權簡介與開啟

一.ACL許可權是為瞭解決所有者/所屬組/其他人三種身份不足的問題

二.查看分區ACL許可權是否開啟

dumpe2fs命令是查詢指定分區詳細文件系統信息的命令

dumpe2fs -h /dev/sda3

-h 僅顯示超級塊中信息,而不顯示磁碟塊組的詳細信息
[root@izm5e2q95pbpe1hh0kkwoiz ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   14G   25G  36% /
devtmpfs        911M     0  911M   0% /dev
tmpfs           920M     0  920M   0% /dev/shm
tmpfs           920M  548K  920M   1% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
tmpfs           184M     0  184M   0% /run/user/0
tmpfs           184M     0  184M   0% /run/user/1002
[root@izm5e2q95pbpe1hh0kkwoiz ~]# dumpe2fs -h /dev/vda1
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          eb448abb-3012-4d8d-bcde-94434d586a31
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              2621440
Block count:              10485248
Reserved block count:     524262
Free blocks:              8958387
Free inodes:              2519237
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1021
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
RAID stride:              32639
Flex block group size:    16
Filesystem created:       Sun Oct 15 23:18:59 2017
Last mount time:          Tue Aug 14 10:15:43 2018
Last write time:          Tue Aug 14 18:15:42 2018
Mount count:              6
Maximum mount count:      -1
Last checked:             Wed Jun 27 22:35:57 2018
Check interval:           0 (<none>)
Lifetime writes:          30 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       1050280
Default directory hash:   half_md4
Directory Hash Seed:      2579899c-6862-4625-a8e6-425550384200
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke
Journal size:             128M
Journal length:           32768
Journal sequence:         0x006beeea
Journal start:            22131

Default mount options: user_xattr acl顯示支持acl

三.臨時開啟分區ACL許可權

重新掛載根分區,並掛載加入acl許可權

mount -o remount,acl /

四.永久開啟分區ACL許可權(一定要謹慎)

# 加入acl
vim /etc/fstab
UUID=eb448abb-3012-4d8d-bcde-94434d586a31 /                       ext4    defaults        1 1
修改為
UUID=eb448abb-3012-4d8d-bcde-94434d586a31 /                       ext4    defaults,acl        1 1

# 重新掛載文件系統或重新啟動系統,使修改生效
mount -o remount /

2.查看和設定ACL許可權

一.查看ACL命令

查看acl許可權

getfacle 文件名

二.設定ACL許可權的命令

setfacl 選項 文件名

選項 作用
-m 設定ACL許可權
-x 刪除指定的ACL許可權
-b 刪除所有的ACL全新啊
-d 設定預設ACL許可權
-k 刪除預設ACL許可權
-R 遞歸設定ACL許可權

三.給用戶設定ACL許可權和給組設定ACL許可權

# 進入tmp目錄
[root@izm5e2q95pbpe1hh0kkwoiz /]# cd /tmp

# 創建project目錄
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# mkdir project

# 查看是否創建
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ls
Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>  eternityz  hsperfdata_root  issue.soft  Japan  mysql.sock  php-cgi.sock  project  systemd-private-9255c5ee9ec84f5987c1d9ba485e177e-ntpd.service-eKcnmD  test.txt

# 添加用戶zhangsan
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# useradd zhangsan

# 添加用戶lisi
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# useradd lisi

# 添加組tgroup
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# groupadd tgroup

# 將zhangsan添加到組tgroup中
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# gpasswd -a zhangsan tgroup
Adding user zhangsan to group tgroup

# 將lisi添加到組tgroup中
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# gpasswd -a lisi tgroup
Adding user lisi to group tgroup

# 查看組內的用戶(最後一行)
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# cat /etc/group
root:x:0:eternity
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:30:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
ssh_keys:x:999:
input:x:998:
systemd-journal:x:190:
systemd-network:x:192:
dbus:x:81:
polkitd:x:997:
postdrop:x:90:
postfix:x:89:
chrony:x:996:
sshd:x:74:
ntp:x:38:
tcpdump:x:72:
nscd:x:28:
screen:x:84:
mysql:x:1000:
www:x:1001:
rabbitmq:x:995:
eternity:x:1002:
eternityz:x:1003:
slocate:x:21:
saslauth:x:76:
mailnull:x:47:
smmsp:x:51:
zhangsan:x:1004:
lisi:x:1005:
tgroup:x:1006:zhangsan,lisi

# 將project目錄的所屬組更改為tgroup
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# chown root:tgroup project

# 將project目錄的許可權更改為770
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# chmod 770 project

# 查看更改許可權的project目錄
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll -d project
drwxrwx--- 2 root tgroup 4096 Dec 10 17:00 project

# 增加試聽學員st
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# useradd st

# 修改試聽學員st的密碼
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# passwd st
Changing password for user st.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

# 給試聽學員st設定ACL許可權rx
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -m u:st:rx project

# 查看ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x  #st用戶擁有rx許可權
group::rwx
mask::rwx
other::---

# 切換到st用戶
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# su - st

# 進入/tmp/project目錄
[st@izm5e2q95pbpe1hh0kkwoiz ~]$ cd /tmp/project

# 創建文件test.txt,提示沒有許可權
[st@izm5e2q95pbpe1hh0kkwoiz project]$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

# 退出st用戶
[st@izm5e2q95pbpe1hh0kkwoiz project]$ exit
logout

# 增加組tgroup2
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# groupadd tgroup2

# 給組tgroup2設定ACL許可權rwx
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -m g:tgroup2:rwx project

# 查看ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x # 用戶st擁有ACL許可權rx
group::rwx
group:tgroup2:rwx # 組tgroup2擁有ACL許可權rwx
mask::rwx
other::---

有ACL許可權和沒ACL許可權的文件夾

# 沒有ACL許可權的後面沒有+號
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll -d project
drwxrwx--- 2 root tgroup 4096 Dec 10 17:00 project

[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -m u:st:rx project

# 有ACL許可權的後面帶著+號
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll -d project
drwxrwx---+ 2 root tgroup 4096 Dec 10 17:00 project

3.最大有效許可權和刪除ACL許可權

一.最大有效許可權mask

[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:st:rwx
group:tgroup2:rwx
mask::rwx
other::---

mask是用來指定最大有效許可權的.如果我給用戶賦予了ACL許可權,是需要和mask的許可權"相與"才能得到用戶的真正許可權

A B and
r r r
r - -
- r -
- - -

修改mask的值

setfacl -m m:rx project

# 更改mask的值
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -m m:rx project

# 查詢ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx                      #effective:r-x
group:st:rwx                    #effective:r-x
group:tgroup2:rwx               #effective:r-x
mask::r-x
other::---

    mask的值隻影響具有ACL許可權的,不影響用戶的許可權
    用戶st的許可權為rx
    組st的ACL許可權是rwx,但是實際生效的只是rx許可權
    組tgroup2的ACL許可權是rwx,但是實際生效的是rx許可權

二.刪除ACL許可權

刪除指定用戶的ACL許可權

setfacl -x u:用戶名 文件/文件夾

刪除指定用戶組的ACL許可權

setfacl -x g:組名 文件/文件夾

# 之前的有組tgroup2的ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx                      #effective:r-x
group:st:rwx                    #effective:r-x
group:tgroup2:rwx               #effective:r-x
mask::r-x
other::---

# 移除組tgroup2的ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -x g:tgroup2 project

# 再次查詢,tgroup2的ACL許可權沒有了
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:st:rwx
mask::rwx
other::---

刪除文件或文件假的所有的ACL許可權

sefacl -b 文件/文件夾

# 之前project目錄的ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:st:rwx
mask::rwx
other::---

# 移除所有的ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -b project

# 再次查詢,ACL許可權和mask都沒有了
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
group::rwx
other::---

4.預設ACL許可權和遞歸ACL許可權

一.遞歸ACL許可權

遞歸是父目錄在設定ACL許可權時,所有的子文件和子目錄也會擁有相同的ACL許可權

setfacl -m u:用戶名:許可權 -R 文件夾

# -R必須在後面,否則報錯

# 給文件夾及下麵的所有文件及文件夾設置ACL許可權,運行此命令後,新建的文件不具備ACL許可權

二.預設ACL許可權

預設ACL許可權的作用是如果給父目錄設定了預設ACL許可權,那麼父目錄中所有新建的子文件都會繼承父目錄的ACL許可權

setfacl -m d:u:用戶名:許可權 文件夾

# 運行上面的命令之後,以後此文件夾下新建文件或文件夾都具備ACL許可權

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 修改註冊表,雙擊文件直接打開 string strProject = "Exec"; string p_FileTypeName =".cdb";//文件尾碼 string fileName = System.Windows.Forms.Application.ExecutablePath;// 獲 ...
  • 作者: 魔法軟糖 日期: 2020-02-27 引言 ************************************* .ini 文件是Initialization File的縮寫,即配置文件 。是windows的系統配置文件所採用的存儲格式。 它具有方便易用的特點,和註冊表的鍵值有著類似 ...
  • 最近開始試著玩Unity3D,要為場景中的物體編輯腳本。Unity3D推薦的腳本語言是C#,在Unity打開C#就會使用Visual Studio來進行編輯。 啟動Visual Studio之後註意到,Unity類和方法名都沒有代碼補全,而且Unity似乎也編譯不過: 在網上找了一圈,發現並沒有人遇 ...
  • 在 C 中 Object 是所有類的基類,所有的結構和類都直接或間接的派生自它。前面這段話可以說所有的 C 開發人員都知道,但是我相信其中有一部分程式員並不清楚甚至不知道我們常用的 ToString 、 Equals 和 GetHashCode 虛方法都來自於 Object 類,並且我們可以對它們進 ...
  • 前言 今天這篇博客是接我的上一篇博客 https://www.cnblogs.com/y-yp/p/12191258.html,繼續介紹一下MMF在Linux上的用法 ps:本來本地調試完case,想放到伺服器上跑跑看,結果竟然報"PlatformNotSupportedException",然後仔 ...
  • selinux概念 由美國國家安全局(NSA)和SCC聯合開發的,強制訪問控制的安全模塊。2000年以GPL開源,linux2.6內核後集成在內核里。 不啟用selinux時,訪問模式叫:DAC(discretionary access control)自由訪問控制 在DAC模式下的進程能夠訪問哪些 ...
  • 出現這個錯誤時,這多半是你所編譯的項目是在64位機器上生成32位的項目,你需要安裝對應的gcc 32位的庫;此時檢查gcc一定有-m32的存在; 你系統中gcc沒有安裝multilib 庫;使用這個庫可以在64位的機器上產生32位的程式或者庫文件; 你可以選擇:apt install gcc-mul ...
  • 1.SetUID 一.SetUID的功能 SetUID主要是給命令提供一個root許可權,就是命令運行時擁有root用戶許可權,命令運行結束後root許可權消失 passwd cat 二.設定SetUID的方法 4代表SUID chmod 4755 文件名 chmod u+s 文件名 三.取消SetUID ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...