1-9 RHEL7-文件權限管理

 

本節所講內容:php

  文件的基本權限:r w x (UGO+ACL)html

  文件的高級權限:suid sgid stickypython

第1章 文件的基本權限

1.1 權限的做用

經過對文件設定權限能夠達到如下三種訪問限制權限:mysql

q  只容許用戶本身訪問;linux

q  容許一個預先指定的用戶組中的用戶訪問;sql

q  容許系統中的任何用戶訪問。shell

1.2 查看文件權限

咱們能夠經過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組的成員對文件有讀和執行權限,其餘的用戶對這個文件只有讀的權限

1.3 權限說明

有三種權限能夠應用:讀取,寫入與執行,這些權限對訪問文件和目錄的影響以下:

權限

對文件的影響

對目錄的影響

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能夠將這些權限改變爲任何它想指定的權限;

例如:一個文件只有讀權限,那麼它就禁止任何普通用戶對它的修改;若是文件只有執行權限,那麼系統容許它像一個程序同樣執行。

1.4 文件擁有者

全部者-用戶組-其餘用戶

全部者: 就是建立文件的用戶,這個用戶擁有對它所建立的文件的一切權限,全部者能夠容許其所在的用戶組能夠訪問全部者的文件。

用戶組: 用戶組是具備相同特徵用戶的邏輯集合,有時咱們須要讓多個用戶具備相同的權限,好比查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問受權,若是有10個用戶的話,就須要受權10次,顯然這種方法不太合理;另外一種方法是創建一個組,讓這個組具備查看、修改此文件的權限,而後將全部須要訪問此文件的用戶放入這個組中,那麼全部用戶就具備了和組同樣的權限。這就是用戶組。

其它用戶:系統內的其餘全部者用戶就是other用戶類

1.5 舉例說明

1.5.1 常見幾種文件權限組成

u  -rwx------:文件全部者對文件具備讀取、寫入和執行的權限。

u  -rwxr--r--: 文件全部者具備讀、寫與執行的權限,用戶組裏用戶及其餘用戶則具備讀取的權限

u  -rw-rw-r-x:文件全部者與同組用戶對文件具備讀寫的權限,而其餘用戶僅具備讀取和執行的權限。

u  drwx--x—x: 目錄全部者具備讀寫與進入目錄的權限,其餘用戶近能進入該目錄,卻沒法讀取任何數據。

u  drwx------: 除了目錄全部者具備完整的權限以外,其餘用戶對該目錄徹底沒有任何權限。

1.5.2 舉例以下:

每一個用戶都擁有本身的專屬目錄,一般放置在/home目錄下

 

 

這些專屬目錄的默認權限爲【rwx------】表示目錄全部者自己具備全部權限,其餘用戶沒法進入該目錄,以下圖所示:

 

 

在當前用戶狀態下建立的文件或目錄,自動成爲該用戶的所屬

 

 

1.5.2 更改文件的全部者和屬組

用到的命令: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

 

1.6 修改權限

修改權限的相關命令:chmod

做用:修改文件、目錄權限

用法:(中間的+、-、=表示添加仍是刪除該用戶的對應權限)

       u-w

user

擁有者

g+x

group

o=r

other

其餘人

a+x

all

全部人

1.6.1 對文件權限的修改

刪除文件的寫權限

[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 //以長模式方式查看文件權限
=======================================================

 

1.6.2 對目錄的權限修改

 

 

1.6.3 一次修改多個權限

 

 

1.7 修改文件的擁有者及所屬組

用到的命令: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

1.8 使用數字表示權限

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用戶能夠讀寫執行

二、其餘用戶沒有任何權限

1.9 綜合案例

創建兩個用戶組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

 

 

1.10 補碼

首先看一個例子:

 

 

爲何咱們建立的文件的權限是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

 

 

第2章 特殊權限

       其實文件與目錄設置不止這些,還有所謂的特殊權限。因爲特殊權限會擁有一些「特權」.

於是用戶若無特殊需求,不該該啓用這些權限,避免安全方面出現嚴重漏洞,形成入侵,甚至摧毀系統!!!
特殊權限:

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位是沒有多大意義的

2.1.1  SUID舉例以下

       一、咱們能夠看到/etc/shadow文件是沒有權限的。除了root用戶能夠操做,其它用戶都不能夠。可是由於passwd命令具備s特殊權限,因此咱們切換到普通用戶後,修改普通用戶密碼,它是能夠把信息寫入到這個密碼文件裏面的

一、咱們能夠看到/etc/shadow文件是沒有權限的。除了root用戶能夠操做,其它用戶都不能夠。可是由於passwd命令具備s特殊權限,因此咱們切換到普通用戶後,修改普通用戶密碼,它是能夠把信息寫入到這個密碼文件裏面的

 

 

 

 

二、看下面的例子,能夠看到cat命令是沒有s特殊權限的,咱們在普通用戶下看密碼文件,提示沒有權限,若是咱們在root用戶下,確是能夠執行的,給cat命令添加s權限,咱們能夠看到它是能夠看到這個密碼文件內容的

 

 

其實咱們是借用root用戶的身份執行的         

若是咱們刪除s權限後

 

 

 

2.1.2  SGID舉例以下

       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

       經過上面你們能夠看到儘管用戶變了,可是它的所屬組是沒有變的,所以別人在此目錄中建立的任何目錄和文件,所屬組都是此目錄的所屬組,可是屬主仍是本身,可是任何人在此目錄建立的文件,均可以被刪除

2.1.3  粘滯位舉例以下:

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位的功能

 

2.1.4 擴展:ACL

       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參數解釋

Ÿ   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的權限

舉例以下:

  • 查看ACL權限

[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—

  • 添加ACL權限

[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,說明其它用戶對此文件沒有任何操做權限

  • 刪除ACL權限

[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/

第3章: 實戰:建立一個讓root都沒法刪除的文件

       你們有時候發現用root權限都不能修改某個文件,這種狀況大部分緣由是由於用chattr命令鎖定該文件了。

       文件系統屬性權限:chattr(防止誤操做包括root用戶)

       chattr命令的做用很大,經過chattr命令修改文件屬性可以提升系統的安全性,可是它並不適合全部的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。

       lsattr命令是顯示chattr命令設置的文件屬性

Linux文件系統擴展屬性:chattr  lsattr

chattr [+ - =] 選項 對象

+增長權限   -:刪除權限     =:等於某個權限

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

其它還能針對日誌文件進行設置

相關文章
相關標籤/搜索