「Linux」 CentOS7 文件權限管理詳解

本節所講內容:

  • 文件的基本權限:r w x (UGO+ACL)
  • 文件的高級權限:suid sgid sticky

第1章 文件的基本權限

1.1 權限的作用

通過對文件設定權限可以達到以下三種訪問限制權限:

  • 只允許用戶自己訪問;
  • 允許一個預先指定的用戶組中的用戶訪問;
  • 允許系統中的任何用戶訪問。

1.2 查看文件權限

我們可以通過ls命令來查看一個文件的具體信息,加參數 –l 可以查看這個文件的權限信息

「Linux」 CentOS7 文件權限管理詳解

文件權限基本解釋:


-

rwx

r-x

r-x

user1

group

time

FILENAME

文件類型

擁有者的權限

所屬組的權限

其他人的權限

擁有者

屬組

最後修改時間

對象


「Linux」 CentOS7 文件權限管理詳解

其中:文件類型,可以為p、d、l、s、c、b和 –

  • p表示命名管道文件
  • d表示目錄文件
  • l表示符號連接文件
  • -表示普通文件
  • s表示socket套接口文件,比如我們啟用mysql時,會產生一個mysql.sock文件
  • c表示字符設備文件
  • b表示塊設備文件

1.4 文件擁有者

所有者(屬主)-用戶組(屬組)-其他用戶

所有者: 就是創建文件的用戶,這個用戶擁有對它所創建的文件的一切權限,所有者可以允許其所在的用戶組可以訪問所有者的文件。

用戶組: 用戶組是具有相同特徵用戶的邏輯集合,有時我們需要讓多個用戶具有相同的權限,比如查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問授權,如果有10個用戶的話,就需要授權10次,顯然這種方法不太合理;另一種方法是建立一個組,讓這個組具有查看、修改此文件的權限,然後將所有需要訪問此文件的用戶放入這個組中,那麼所有用戶就具有了和組一樣的權限。這就是用戶組。

其它用戶:系統內的其他所有者用戶就是other用戶類

1.5 舉例說明

1.5.1 常見幾種文件權限組成

  • -rwx------:文件所有者對文件具有讀取、寫入和執行的權限。
  • -rwxr--r--: 文件所有者具有讀、寫與執行的權限,用戶組裡用戶及其他用戶則具有讀取的權限
  • -rw-rw-r-x:文件所有者與同組用戶對文件具有讀寫的權限,而其他用戶僅具有讀取和執行的權限。
  • drwx--x--x: 目錄所有者具有讀寫與進入目錄的權限,其他用戶近能進入該目錄,卻無法讀取任何數據。
  • drwx------: 除了目錄所有者具有完整的權限之外,其他用戶對該目錄完全沒有任何權限。


1.5.2 舉例如下:

每個用戶都擁有自己的專屬目錄,默認放置在/home目錄下

「Linux」 CentOS7 文件權限管理詳解

這些專屬目錄的默認權限為【rwx------】表示目錄所有者本身具有所有權限,其他用戶無法進入該目錄,如下圖所示

「Linux」 CentOS7 文件權限管理詳解

1.5.2 更改文件的屬主和屬組

用到的命令:chown chgrp 如果對目錄操作 -R

==》chown

語法:

  • chown user:group 對象
  • chown user 對象
  • chown :group 對象
  • -R :遞歸(目錄下的所有內容全部更改,否則只修改目錄)

[root@panda home]# chown harry test.txt ----只改文件的屬主

[root@panda home]# chown :market test.txt ---只改文件的屬組

[root@panda home]# chown xuegod-2:xuegod-4 test.txt ---改文件的屬主、屬組

[root@panda home]# chown -R harry:market /backup

==》chgrp

[root@panda home]# chgrp alice-2 test.txt ----n=改文件的屬組


1.6 修改權限

1.6.1使用符號

修改權限的用到的命令:chmod

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

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


u-w

user

擁有者

g+x

group

o=r

other

其他人

a+x

all

所有人


[root@panda mnt]# chmod u-w a.txt -----屬主刪除寫權限

[root@panda san]# chmod g+x b.txt ----屬組添加執行權限

[root@panda san]#chmod a=rwx file1 ----所有人等於讀寫執行

[root@panda san]#chmod a=- file1 ----所有人沒有權限

[root@panda san]#chmod ug=rw,o=r file1 ----屬主屬組等於讀寫,其他人只讀

查看修改的權限可以用ls –l 或 stat

1.6.2 使用數字


rwx

r--

-w-

--x

100

010

001

二進制

4

2

1

十進制

組合

u=rw

4+2=6 u=6

g=rx

4+1=5 g=5

rw-r--r--

rw-=6 r--=4 r--=4 rw-r—r--=644


「Linux」 CentOS7 文件權限管理詳解

擴展示例如下

建一個目錄TEST,要求如下:

1、root用戶和test用戶可以讀寫執行 2、其他用戶沒有任何權限

「Linux」 CentOS7 文件權限管理詳解

1.7 權限對文件和目錄的影響

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


權限

對文件的影響

對目錄的影響

r(讀取)

可以讀取文件的內容

可以列出目錄的內容(文件名)

w(寫入)

可以更改文件的內容

可以創建或刪除目錄中的任意文件

x(執行)

可以作為命令執行文件

可以訪問目錄的內容(取決於目錄中文件的權限)


  1. 對文件的影響

[root@panda ~]#

[root@panda ~]# mkdir /dir1

[root@panda ~]# touch /dir1/file1

[root@panda ~]# chmod 777 /dir1/file1

[root@panda ~]# ll /dir1/file1

-rwxrwxrwx. 1 root root 0 Sep 11 01:59 /dir1/file1

[root@panda ~]# ll -d /dir1/

drwxr-xr-x. 2 root root 18 Sep 11 01:59 /dir1/

[root@panda ~]# su - harry

Last login: Mon Sep 11 01:44:26 CST 2017 on pts/0

[harry@panda ~]$ cat /dir1/file1

[harry@panda ~]$ rm -f /dir1/file1

rm: cannot remove ‘/dir1/file1’: Permission denied

  1. 對目錄的影響

[root@panda ~]#

[root@panda ~]# ll -d /dir1

drwxr-xr-x. 2 root root 18 Sep 11 01:59 /dir1

[root@panda ~]# chmod 777 /dir1/

[root@panda ~]# ll -d /dir1

drwxrwxrwx. 2 root root 18 Sep 11 01:59 /dir1

[root@panda ~]# ll /dir1/file1

-rwxrwxrwx. 1 root root 0 Sep 11 01:59 /dir1/file1

[root@panda ~]# chmod 000 /dir1/file1

[root@panda ~]# ll /dir1/file1

----------. 1 root root 0 Sep 11 01:59 /dir1/file1

[root@panda ~]# su - harry

Last login: Mon Sep 11 02:00:46 CST 2017 on pts/0

[harry@panda ~]$ cat /dir1/file1

cat: /dir1/file1: Permission denied

[harry@panda ~]$ rm -f /dir1/file1

[harry@panda ~]$ touch /dir1/file2

[harry@panda ~]$ ls /dir1/

file2

「Linux」 CentOS7 文件權限管理詳解

1.8 補碼

「Linux」 CentOS7 文件權限管理詳解

為什麼我們創建的文件的權限是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值。

「Linux」 CentOS7 文件權限管理詳解

計算方法:

文件默認權限=666-umask值 666-022=644

目錄默認權限=777-umask 值 777-022=755

Umask表示的是要減掉的權限

永久生效,編輯用戶的配置文件vim .bash_profile

「Linux」 CentOS7 文件權限管理詳解


第2章 特殊權限

其實文件與目錄設置不止這些,還有所謂的特殊權限。由於特殊權限會擁有一些“特權”.

因而用戶若無特殊需求,不應該啟用這些權限,避免安全方面出現嚴重漏洞,造成入侵,甚至摧毀系統!!!

特殊權限:

  • SUID(set uid設置用戶ID):限定:只能設置在二進制可執行程序上面。對目錄設置無效

功能:程序運行時的權限從執行者變更成程序所有者

  • SGID:限定:既可以給二進制可執行程序設置,也可以對目錄設置

功能:在設置了SGID權限的目錄下建立文件時,新創建的文件的所屬組會 繼承上級目錄的所屬組

  • Stickybit:粘滯位權限是針對目錄的,對文件無效,也叫防刪除位
  • s對應的數值為


SUID

SGID

Stickybit

u=4、u+s

g=2、g+s

o=1、o+t


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



分享到:


相關文章: