本節所講內容:php
文件的基本權限:r w x (UGO+ACL)html
文件的高級權限:suid sgid stickypython
經過對文件設定權限能夠達到如下三種訪問限制權限:mysql
q 只容許用戶本身訪問;linux
q 容許一個預先指定的用戶組中的用戶訪問;sql
q 容許系統中的任何用戶訪問。shell
咱們能夠經過ls命令來查看一個文件的具體信息,加參數 –l 能夠查看這個文件的權限信息vim
[root@panda mnt]# lswindows
[root@panda mnt]# touch a.txt安全
[root@panda mnt]# ll a.txt
-rw-r--r-- 1 root root 0 Dec 5 20:37 a.txt
[root@panda mnt]# ls -l a.txt
-rw-r--r-- 1 root root 0 Dec 5 20:37 a.txt
[root@panda ~]# ll
total 8
-rw-------. 1 root root 1572 Jul 28 06:40 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jan 1 2017 Desktop
drwxr-xr-x. 2 root root 6 Jan 1 2017 Documents
drwxr-xr-x. 2 root root 6 Jan 1 2017 Downloads
-rw-------. 1 root root 1726 Jul 27 23:13 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Jan 1 2017 Music
drwxr-xr-x. 2 root root 6 Jan 1 2017 Pictures
drwxr-xr-x. 2 root root 6 Jan 1 2017 Public
drwxr-xr-x. 2 root root 6 Jan 1 2017 Templates
drwxr-xr-x. 2 root root 6 Jan 1 2017 Videos
[root@panda mnt]# stat -c %a a.txt
644
[root@panda mnt]# stat -c %A a.txt
-rw-r--r—
[root@panda ~]# getfacl /etc/hosts
getfacl: Removing leading '/' from absolute path names
# file: etc/hosts
# owner: root
# group: root
user::rw-
group::r--
other::r--
文件權限基本解釋:
- |
rwx |
r-x |
r-x |
user1 |
user1 |
time |
FILENAME |
文件類型 |
擁有者的權限 |
所屬組的權限 |
其餘人的權限 |
擁有者 |
屬組 |
最後修改時間 |
對象 |
其中:文件類型,能夠爲p、d、l、s、c、b和 –
q p表示命名管道文件
q d表示目錄文件
q l表示符號鏈接文件
q -表示普通文件
q s表示socket套接口文件,好比咱們啓用mysql時,會產生一個mysql.sock文件
q c表示字符設備文件
q b表示塊設備文件
linux中文件擴展名
windows裏經過擴展名來區分文件類型的。linux裏文件擴展名和文件類型沒有關係。但爲了容易區分和兼容用戶使用windows的習慣,咱們仍是會用擴展名來表示文件類型。舉例以下:
l 源碼.tar、.tar.gz、.tgz、.zip、.tar.bz表示壓縮文件,建立命令通常爲tar,gzip,zip等。
l .sh表示shell腳本文件,經過shell語言開發的程序。
l .pl表示perl語言文件,經過perl語言開發的程序。
l .py表示python語言文件,經過python語言開發的程序。
l .html、.htm、.php、.jsp、.do表示網頁語言的文件。
l .conf表示系統服務的配置文件。
l .rpm表示rpm安裝包文件。
例如:
[root@panda mnt]# ll a.txt
-rw-r-xr-- 1 root root 1 Dec 5 20:37 a.txt
表示文件a.txt是普通文件,文件的全部者是root用戶,而root用戶屬於root組,文件只有1個硬鏈接,長度是5個字節,最後修改時間12月5日20:37。
全部者root對文件有讀寫執行權限,root組的成員對文件有讀和執行權限,其餘的用戶對這個文件只有讀的權限
有三種權限能夠應用:讀取,寫入與執行,這些權限對訪問文件和目錄的影響以下:
權限 |
對文件的影響 |
對目錄的影響 |
r(讀取) |
能夠讀取文件的內容 |
能夠列出目錄的內容(文件名) |
w(寫入) |
能夠更改文件的內容 |
能夠建立或刪除目錄中的任意文件 |
x(執行) |
能夠做爲命令執行文件 |
能夠訪問目錄的內容(取決於目錄中文件的權限) |
對於文件:
q r:讀
q w:寫
q x:執行
對於目錄:
q r:讀(看到目錄裏面有什麼) ls
q w:建文件、刪除、移動 touch mkdir rm mv cp
q x:進入 cd cat
具體說明:
r (Read,讀取):對文件而言,具備讀取文件內容的權限;對目錄來講,具備瀏覽目錄的權限.
w (Write,寫入):對文件而言,具備新增、修改文件內容的權限;對目錄來講,具備刪除、移動目錄內文件的權限。
x (execute,執行):對文件而言,具備執行文件的權限;對目錄了來講該用戶具備進入目錄的權限。
-:表示不具備該項權限
結束:
對於文件的全部者或者是屬主, root能夠將這些權限改變爲任何它想指定的權限;
例如:一個文件只有讀權限,那麼它就禁止任何普通用戶對它的修改;若是文件只有執行權限,那麼系統容許它像一個程序同樣執行。
全部者: 就是建立文件的用戶,這個用戶擁有對它所建立的文件的一切權限,全部者能夠容許其所在的用戶組能夠訪問全部者的文件。
用戶組: 用戶組是具備相同特徵用戶的邏輯集合,有時咱們須要讓多個用戶具備相同的權限,好比查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問受權,若是有10個用戶的話,就須要受權10次,顯然這種方法不太合理;另外一種方法是創建一個組,讓這個組具備查看、修改此文件的權限,而後將全部須要訪問此文件的用戶放入這個組中,那麼全部用戶就具備了和組同樣的權限。這就是用戶組。
其它用戶:系統內的其餘全部者用戶就是other用戶類
u -rwx------:文件全部者對文件具備讀取、寫入和執行的權限。
u -rwxr--r--: 文件全部者具備讀、寫與執行的權限,用戶組裏用戶及其餘用戶則具備讀取的權限
u -rw-rw-r-x:文件全部者與同組用戶對文件具備讀寫的權限,而其餘用戶僅具備讀取和執行的權限。
u drwx--x—x: 目錄全部者具備讀寫與進入目錄的權限,其餘用戶近能進入該目錄,卻沒法讀取任何數據。
u drwx------: 除了目錄全部者具備完整的權限以外,其餘用戶對該目錄徹底沒有任何權限。
每一個用戶都擁有本身的專屬目錄,一般放置在/home目錄下
這些專屬目錄的默認權限爲【rwx------】表示目錄全部者自己具備全部權限,其餘用戶沒法進入該目錄,以下圖所示:
在當前用戶狀態下建立的文件或目錄,自動成爲該用戶的所屬
用到的命令:chown chgrp 若是對目錄操做,-R
[root@panda ~]# ll /home/wang.txt
-rw-r--r--. 1 root root 0 Apr 7 21:16 /home/wang.txt
[root@panda ~]# chown :tom /home/wang.txt
[root@panda ~]# ll /home/wang.txt
-rw-r--r--. 1 root tom 0 Apr 7 21:16 /home/wang.txt
[root@panda ~]# ll /home/*.txt
-rw-r--r--. 1 root tom 0 Apr 7 21:16 /home/wang.txt
-rw-r--r--. 1 tom root 0 Apr 7 21:15 /home/yang.txt
[root@panda ~]# touch /home/li.txt
[root@panda ~]# chown jerry:jerry /home/li.txt
[root@panda ~]# ll /home/*.txt
-rw-r--r--. 1 jerry jerry 0 Apr 7 21:16 /home/li.txt
-rw-r--r--. 1 root tom 0 Apr 7 21:16 /home/wang.txt
-rw-r--r--. 1 tom root 0 Apr 7 21:15 /home/yang.txt
[root@panda ~]# chown .tom /home/li.txt
[root@panda ~]# ll /home/*.txt
-rw-r--r--. 1 jerry tom 0 Apr 7 21:16 /home/li.txt
-rw-r--r--. 1 root tom 0 Apr 7 21:16 /home/wang.txt
-rw-r--r--. 1 tom root 0 Apr 7 21:15 /home/yang.txt
[root@panda ~]# chgrp tom /home/yang.txt
[root@panda ~]# mkdir /home/dir1
[root@panda ~]# touch /home/dir1/test-{01..10}
[root@panda ~]# ls /home/dir1
test-01 test-02 test-03 test-04 test-05 test-06 test-07 test-08 test-09 test-10
[root@panda ~]# chown -R tom /home/dir1d
chown: cannot access ‘/home/dir1d’: No such file or directory
[root@panda ~]# chown -R tom /home/dir1
[root@panda ~]# ll /home/dir1
total 0
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-01
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-02
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-03
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-04
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-05
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-06
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-07
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-08
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-09
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-10
修改權限的相關命令:chmod
做用:修改文件、目錄權限
用法:(中間的+、-、=表示添加仍是刪除該用戶的對應權限)
u-w |
user |
擁有者 |
g+x |
group |
組 |
o=r |
other |
其餘人 |
a+x |
all |
全部人 |
刪除文件的寫權限
[root@panda mnt]# chmod u-w a.txt
[root@panda mnt]# ll
total 0
-r--r--r-- 1 root root 0 Dec 5 20:37 a.txt
讓全部者所在的組用戶擁有執行的權限
[root@panda san]# ll
total 0
drwxr-xr-x 2 san admin 6 Dec 5 21:04 aa
-rw-r--r-- 1 san admin 0 Dec 5 21:04 b.txt
[root@panda san]# chmod g+x b.txt
[root@panda san]# ll
total 0
drwxr-xr-x 2 san admin 6 Dec 5 21:04 aa
-rw-r-xr-- 1 san admin 0 Dec 5 21:04 b.txt
刪除其它用戶對文件的讀權限
[root@panda san]# chmod o-r b.txt
[root@panda san]# ll
total 0
drwxr-xr-x 2 san admin 6 Dec 5 21:04 aa
-rw-r-x--- 1 san admin 0 Dec 5 21:04 b.txt
[root@panda san]# chmod o+rwx b.txt
[root@panda san]# ll
total 0
drwxr-xr-x 2 san admin 6 Dec 5 21:04 aa
-rw-r-xrwx 1 san admin 0 Dec 5 21:04 b.txt
======================================================
chmod u+x file1 //屬主增長執行
chmod a=rwx file1 //全部人等於讀寫執行
chmod a=- file1 //全部人沒有權限
chmod ug=rw,o=r file1 //屬主屬組等於讀寫,其餘人只讀
ll file1 //以長模式方式查看文件權限
=======================================================
用到的命令:chown
做用:修改文件擁有者和所屬組
語法:
q chown user:group 對象
q chown user 對象
q chown :group 對象
q -R :遞歸(目錄下的全部內容所有更改,不然只修改目錄)
舉例以下:
修改文件的全部者和所屬組
修改文件的全部者
修改文件的所屬組
給目錄及其裏面的文件賦權
在目錄下新建兩個文件
擴展:
若是一個文件只有讀的權限,擁有者是否能夠寫入文件內容呢?
[root@panda mnt]# ll
total 0
-rwxr--r-- 1 miao root 0 Dec 5 20:37 a.txt
dr-xr-xr-x 2 san admin 30 Dec 5 21:22 bb
[root@panda mnt]# chmod u-wx a.txt
[root@panda mnt]# ll a.txt
-r--r--r-- 1 miao root 0 Dec 5 20:37 a.txt
[root@panda mnt]# su - miao
Last login: Mon Dec 5 20:13:44 CST 2016 on pts/0
[miao@panda ~]$ cd /mnt
[miao@panda mnt]$ ls
a.txt bb
[miao@panda mnt]$ ll
total 0
-r--r--r-- 1 miao root 0 Dec 5 20:37 a.txt
dr-xr-xr-x 2 san admin 30 Dec 5 21:22 bb
[miao@panda mnt]$ vim a.txt
[miao@panda mnt]$ cat a.txt
nihao
[miao@panda mnt]$ exit
logout
rwx |
|||
r-- |
-w- |
--x |
|
100 |
010 |
001 |
二進制 |
4 |
2 |
1 |
十進制 |
組合 |
值 |
||
rw- |
4+2=6 |
||
r-x |
4+1=5 |
||
rw-r--r-- |
rw-=6 r--=4 r--=4 rw-r—r--=644 |
舉例以下:
建一個目錄TEST,要求以下:
一、root用戶和test用戶能夠讀寫執行
二、其餘用戶沒有任何權限
創建兩個用戶組group1和group2,再創建三個用戶 user一、user二、user3,而且把前兩個用戶分配給組group1,最後一個用戶分給組group2
實驗1:用戶1和2都屬一個組,在1下建立一個文件,2能夠訪問查看嗎?寫入這個文件內容,絕對路徑看能查看到裏面內容嗎?
實驗2:若是不能訪問,有幾種方法設置可讓2訪問?
方法:修改用戶的目錄組權限,讓它容許同組用戶訪問,其它用戶不能夠
[root@panda home]# su - user3
[user3@panda ~]$ ls /home/user1
ls: cannot open directory /home/user1: Permission denied
實驗3:如何讓用戶3能夠訪問用戶1的文件,可是不能修改用戶3的主組
第一種:在user1目錄的其它權限位置給一個權限
第二種狀況:本身下來測試一下附加組
=======================================
一、權限對文件的影響
[root@panda home]# ll dir1/test-01
-rwxrwxrwx. 1 root root 0 Apr 7 21:20 dir1/test-01
[root@panda home]# ll -d dir1
drwxr-xr-x. 2 root root 4096 Apr 7 21:20 dir1
[root@panda home]# su - tom
Last login: Fri Apr 7 21:31:29 CST 2017 on pts/0
[tom@panda ~]$ exit
logout
[root@panda home]# su - tom
Last login: Fri Apr 7 21:51:05 CST 2017 on pts/0
[tom@panda ~]$ cat /home/dir1/test-01
[tom@panda ~]$ rm -f /home/dir1/test-01
rm: cannot remove ‘/home/dir1/test-01’: Permission denied
二、權限對目錄的影響
[root@panda home]# ll -d dir1/
drwxr-xr-x. 2 root root 4096 Apr 7 21:20 dir1/
[root@panda home]# chmod 777 dir1/
[root@panda home]# ll -d dir1/
drwxrwxrwx. 2 root root 4096 Apr 7 21:20 dir1/
[root@panda home]# chmod 000 dir1/test-01
[root@panda home]# ll dir1/test-01
----------. 1 root root 0 Apr 7 21:20 dir1/test-01
[root@panda home]# su - tom
Last login: Fri Apr 7 21:51:19 CST 2017 on pts/0
[tom@panda ~]$ cat /home/dir1/test-01
cat: /home/dir1/test-01: Permission denied
[tom@panda ~]$ rm -f /home/dir1/test-01
[tom@panda ~]$ touch /home/dir1/test-001
首先看一個例子:
爲何咱們建立的文件的權限是644呢?
咱們建立文件的默認權限是怎麼來的?
如何改變這個默認權限呢?
umask命令容許你設定文件建立時的缺省模式,對應每一類用戶(文件屬主、同組用戶、其餘用戶)存在一個相應的umask值中的數字
對於文件來講,這一數字的最大值分別是6;系統不容許你在建立一個文本文件時就賦予它執行權限,必須在建立後用chmod命令增長這一權限(爲了安全考慮)
4 2
對於目錄來講,則容許設置執行權限,這樣針對目錄來講,umask中各個數字最大能夠到7
umask設置了用戶建立文件的默認權限,它與chmod的效果恰好相反.;umask設置的是權限「補碼」,而chmod設置的是文件權限碼。咱們只要記住umask是從權限中拿走相應的位便可 。如:umask值爲022,則默認目錄權限爲755,默認文件權限爲644
該命令的通常形式爲:umask nnn 其中nnn爲umask值000 – 777
umask設置了用戶建立文件的默認權限,它與chmod的效果恰好相反.;umask設置的是權限「補碼」,而chmod設置的是文件權限碼。咱們只要記住umask是從權限中拿走相應的位便可 。如:umask值爲022,則默認目錄權限爲755,默認文件權限爲644
咱們通常在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中設置umask值。
計算方法:
文件默認權限=666-umask值 666-022=644
目錄默認權限=777-umask 值 777-022=755
Umask表示的是要減掉的權限
永久生效,編輯用戶的配置文件vim .bash_profile
其實文件與目錄設置不止這些,還有所謂的特殊權限。因爲特殊權限會擁有一些「特權」.
於是用戶若無特殊需求,不該該啓用這些權限,避免安全方面出現嚴重漏洞,形成入侵,甚至摧毀系統!!!
特殊權限:
q SUID(set uid設置用戶ID):限定:只能設置在二進制可執行程序上面。對目錄設置無效
功能:程序運行時的權限從執行者變動成程序全部者
q SGID:限定:既能夠給二進制可執行程序設置,也能夠對目錄設置
功能:在設置了SGID權限的目錄下創建文件時,新建立的文件的所屬組會 繼承上級目錄的所屬組
q Stickybit:粘滯位權限是針對目錄的,對文件無效,也叫防刪除位
q s對應的數值爲
SUID |
SGID |
Stickybit |
u=四、u+s |
g=二、g+s |
o=一、o+t |
SUID屬性通常用在可執行文件上,當用戶執行該文件時,會臨時擁有該執行文件的全部者權限。使用」ls -l」 或者」ll」 命令瀏覽文件時,若是可執行文件全部者權限的第三位是一個小寫的」s」,就代表該執行文件擁有SUID屬性。好比/usr/bin/passwd文件
注意:
一、若是一個文件被設置了SUID或SGID位,會分別表如今全部者或同組用戶的權限的可執行位上;
二、linux系統規定,若是本來該位上有x,則這些屬性顯示爲小寫字母(有效),不然顯示大寫字母(無效)
三、因爲SUID和SGID是在執行程序(程序的可執行位被設置)時起做用,而可執行位只對普通文件和目錄文件有意義,因此設置其餘種類文件的SUID和SGID位是沒有多大意義的
一、咱們能夠看到/etc/shadow文件是沒有權限的。除了root用戶能夠操做,其它用戶都不能夠。可是由於passwd命令具備s特殊權限,因此咱們切換到普通用戶後,修改普通用戶密碼,它是能夠把信息寫入到這個密碼文件裏面的
一、咱們能夠看到/etc/shadow文件是沒有權限的。除了root用戶能夠操做,其它用戶都不能夠。可是由於passwd命令具備s特殊權限,因此咱們切換到普通用戶後,修改普通用戶密碼,它是能夠把信息寫入到這個密碼文件裏面的
二、看下面的例子,能夠看到cat命令是沒有s特殊權限的,咱們在普通用戶下看密碼文件,提示沒有權限,若是咱們在root用戶下,確是能夠執行的,給cat命令添加s權限,咱們能夠看到它是能夠看到這個密碼文件內容的
其實咱們是借用root用戶的身份執行的
若是咱們刪除s權限後
s(SGID,Set GID):設置在文件上面,其效果與SUID相同,只不過將文件全部者換成用戶組,該文件就能夠任意存取整個用戶組所能使用的系統資源。
強調: SUID通常用在文件上(腳本) SGID用在目錄上比較多
[root@panda ~]# mkdir /tencent
[root@panda ~]# groupadd xuegod
[root@panda ~]# useradd -G xuegod xiaobai
[root@panda ~]# useradd -G xuegod dabai
[root@panda ~]#
[root@panda ~]# chown :xuegod /tencent/
[root@panda ~]# ll -d /tencent/
drwxr-xr-x. 2 root xuegod 6 Oct 11 19:43 /tencent/
[root@panda ~]# chmod 775 /tencent/
[root@panda ~]# chmod g+s /tencent/
[root@panda ~]# ll -d /tencent/
drwxrwsr-x. 2 root xuegod 6 Oct 11 19:43 /tencent/
切換到xiaobai用戶下面:
[root@panda ~]# su - xiaobai
[xiaobai@panda ~]$ cd /tencent/
[xiaobai@panda tencent]$ touch aa
[xiaobai@panda tencent]$ touch bb
[xiaobai@panda tencent]$ ll
total 0
-rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 aa
-rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 bb
[xiaobai@panda tencent]$ exit
logout
退出
切換到dabai用戶下面:
[root@panda ~]# su - dabai
[dabai@panda ~]$ cd /tencent/
[dabai@panda tencent]$ touch cc
[dabai@panda tencent]$ touch dd
[dabai@panda tencent]$ ll
total 0
-rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 aa
-rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 bb
-rw-rw-r--. 1 dabai xuegod 0 Oct 11 19:46 cc
-rw-rw-r--. 1 dabai xuegod 0 Oct 11 19:46 dd
經過上面你們能夠看到儘管用戶變了,可是它的所屬組是沒有變的,所以別人在此目錄中建立的任何目錄和文件,所屬組都是此目錄的所屬組,可是屬主仍是本身,可是任何人在此目錄建立的文件,均可以被刪除
SBIT(Sticky):只針對目錄有效,對文件無效,做用是防止別人刪除掉對方的資料,防止用戶本身的文件被別的用戶誤刪除
[root@panda ~]# mkdir /tencent
[root@panda ~]# chmod 1777 /tencent/
[root@panda ~]# su - test
Last login: Tue Oct 11 20:12:57 CST 2016 on pts/2
[test@panda ~]$ cd /tencent/
[test@panda tencent]$ touch aa
[test@panda tencent]$ touch bb
[test@panda tencent]$ exit
logout
切換用戶
[root@panda ~]# su - xiaobai
Last login: Tue Oct 11 20:11:14 CST 2016 on pts/2
[xiaobai@panda ~]$ cd /tencent/
[xiaobai@panda tencent]$ touch cc
[xiaobai@panda tencent]$ touch dd
[xiaobai@panda tencent]$ ll
total 0
-rw-rw-r--. 1 test test 0 Oct 11 20:14 aa
-rw-rw-r--. 1 test test 0 Oct 11 20:14 bb
-rw-rw-r--. 1 xiaobai xiaobai 0 Oct 11 20:14 cc
-rw-rw-r--. 1 xiaobai xiaobai 0 Oct 11 20:14 dd
[xiaobai@panda tencent]$ rm -f aa
rm: cannot remove ‘aa’: Operation not permitted --提示沒有權限
[xiaobai@panda tencent]$ exit
logout
這就是sticky位的功能
ACL: Access Control List (ACL)訪問控制列表
它是一種權限分配以外的廣泛範式。例如,默認狀況下你須要確認3個權限組:UGO。而使用ACL,你能夠增長權限給其餘用戶或組別,而不單只是簡單的"other"或者是擁有者不存在的組別。能夠容許指定的用戶A、B、C擁有寫權限而再也不是讓他們整個組擁有寫權限
ACL使用狀況:
[root@panda mnt]# ll a.txt
-rw-r--r-- 1 miao miao 0 Dec 5 22:36 a.txt
若是我有一個用戶san,想讓它對文件a.txt有讀寫的權限,而其它用戶不能夠對這個文件有權限操做。有以幾種狀況:
一、 給other權限,存在的問題就是讓全部用戶都對這個文件有讀寫,達不到咱們的目的
二、 把SAN用戶加入一個組,存在的問題就是:若是miao組裏還有其它重要的文件,那麼這個時候san用戶也能夠來這裏隨意訪問,有安全隱患
三、 經過sudo。在普通用戶狀態下:經過sudo命令。存在的問題就是:你須要配置sudo文件,這個配置是有嚴格的格式要求。比較麻煩,也不靈活
經過上面咱們能夠看:在LINUX中。由於對其它其它用戶的權限定義過於寬泛,因此對用戶權限細粒度的劃分使用就比較麻煩,那麼ACL就是用來解決這個問題的
[root@panda ~]# rpm -qf `which getfacl`
acl-2.2.51-12.el7.x86_64
[root@panda ~]# rpm -qf `which setfacl`
acl-2.2.51-12.el7.x86_64
ACL_USER_OBJ: 至關於Linux裏file_owner的權限
ACL_USER: 定義了額外的用戶能夠對此文件擁有的權限
ACL_GROUP_OBJ: 至關於Linux裏group的權限
ACL_GROUP: 定義了額外的組能夠對此文件擁有的權限
ACL_MASK: 定義了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大權限
ACL_OTHER: 至關於Linux裏other的權限
舉例以下:
[root@panda mnt]# getfacl a.txt
# file: a.txt
# owner: miao
# group: miao
user::rw-
group::r--
other::r--
[root@panda mnt]# getfacl --omit-header a.txt
user::rw-
group::r--
other::r—
[root@panda mnt]# setfacl -m u:san:rwx a.txt
[root@panda mnt]# getfacl --omit-header a.txt
user::rw- --定義了ACL_USER_OBJ,說明文件擁有者有讀寫權限
user:san:rw- --定義了ACL_USER,說明用戶SAN也擁有了對此文件的讀執行權限
group::r-- --定義了ACL_GROUP_OBJ,說明文件組擁有了讀寫權限
mask::rw- --定義了ACL_MASK的權限爲讀寫
other::r— --定義了ACL+OTHER,說明其它用戶對此文件沒有任何操做權限
[root@panda mnt]# setfacl -b a.txt
[root@panda mnt]# ll a.txt
-rw-r--r-- 1 miao miao 0 Dec 5 22:36 a.txt
[root@panda mnt]# getfacl a.txt
# file: a.txt
# owner: miao
# group: miao
user::rw-
group::r--
other::r—
u 若是文件系統不支持ACL的話,你可能要從新掛載掛載一下你的文件系統
用的命令:
mount -o remount, acl [mount point]
u ACL中的MASK參數
若是文件有ACL_MASK值,那麼文件的組權限中顯示的權限就是mask的值,而不是組的權限,同時在MASK中,mask規定的是最大權限,也就是說假如你添加了一個普通用戶的ACL權限是rw,可是mask的值確是r。那麼這個用戶對這個文件也只有r權限。
[root@panda mnt]# ll a.txt
-rw-rwxr-- 1 miao miao 0 Dec 5 22:36 a.txt
[root@panda mnt]# getfacl --omit-header a.txt
user::rw-
user:san:rwx-
group::r--
mask::rwx
other::r—
MASK的做用:它是用來臨時的壓制一些用戶或者組的權限。儘可能保證其它人權限設置爲空
setfact -m -x -b -d
ACL權限繼承:
第一種寫法:
[root@panda home]# setfacl -m u:jerry:rwx dir2/
[root@panda home]# setfacl -m d:jerry:rwx dir2/
第二種寫法:
[root@panda home]# setfacl -m d:u:tom:r dir-33/
你們有時候發現用root權限都不能修改某個文件,這種狀況大部分緣由是由於用chattr命令鎖定該文件了。
文件系統屬性權限:chattr(防止誤操做包括root用戶)
chattr命令的做用很大,經過chattr命令修改文件屬性可以提升系統的安全性,可是它並不適合全部的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。
lsattr命令是顯示chattr命令設置的文件屬性
Linux文件系統擴展屬性:chattr lsattr
chattr [+ - =] 選項 對象
q +:增長權限 -:刪除權限 =:等於某個權限
q +a
對文件來講:只能在文件中追加數據,但現有數據不能刪除也不能進行修改,用追加方式,vi沒法判斷你作的操做是屬於哪一種,因此不能用vi來編輯文件
對目錄來講:只容許在目錄中創建和修改文件,可是不容許刪除
q +i
對文件來講:不能修改,刪除文件,也不能添加和修改其內的數據,但能夠查看文件裏面的內容
對目錄來講:只能修改目錄下的文件數據,但不能創建和刪除文件
lsattr 可選參數 -a
舉例:
對文件來講:
建立一個新文件,並寫入數據
[root@xuegod72 mnt]# echo 'xuegod-linux' > b.txt
[root@xuegod72 mnt]# cat b.txt
xuegod-linux
使用chattr添加a屬性,讓這個文件只能增長內容,不能修改內容
[root@xuegod72 mnt]# chattr +a b.txt
[root@xuegod72 mnt]# ll b.txt
-----w----+ 1 root root 13 Oct 12 11:15 b.txt
[root@xuegod72 mnt]# echo 123456 >> b.txt
上面能夠看到是能夠增長內容的
[root@xuegod72 mnt]# echo 78910 > b.txt
-bash: b.txt: Operation not permitted 沒法修改內容
使用chattr添加i屬性,讓文件禁止任何人修改
[root@xuegod72 mnt]# chattr +i b.txt
[root@xuegod72 mnt]# echo 12345 >> b.txt
-bash: b.txt: Permission denied 沒法添加內容
查看文件隱藏屬性
[root@xuegod72 mnt]# lsattr -a b.txt
----ia---------- b.txt
刪除添加的文件隱藏屬性
[root@xuegod72 mnt]# chattr -i b.txt
[root@xuegod72 mnt]# chattr -a b.txt
[root@xuegod72 mnt]# lsattr b.txt
---------------- b.txt
實際應用:
[root@ xuegod72 ~]# chattr +a /etc/passwd
[root@l xuegod72 ~]# chattr +a /etc/shadow
其它還能針對日誌文件進行設置