天天看點

Linux基礎指令四:檔案及目錄權限、特殊權限

1.概念

linux 有三種權限:r(讀權限),w(寫權限),x(執行權限)

權限 數字 檔案 目錄
r 4 讀取檔案的内容 檢視目錄下的檔案與目錄名稱
w 2 修改檔案内容,不能删除檔案 在目錄下增、删、改檔案與目錄結構
x 1 可被系統執行 可以進入該目錄

使用ll檢視檔案或目錄資訊

[[email protected] ~]# ll /
total 104
dr-xr-xr-x.   2 root root  4096 Aug 24  2017 bin
dr-xr-xr-x.   4 root root  4096 Aug 24  2017 boot
drwxr-xr-x   17 root root  3420 Nov  7 18:50 dev
drwxr-xr-x.  74 root root  4096 Nov  7 22:25 etc
drwxr-xr-x.   2 root root  4096 Sep 23  2011 home
dr-xr-xr-x.   9 root root  4096 Aug 24  2017 lib
dr-xr-xr-x.   9 root root 12288 Aug 24  2017 lib64
drwx------.   2 root root 16384 Aug 24  2017 lost+found
drwxr-xr-x.   2 root root  4096 Sep 23  2011 media
drwxr-xr-x.   2 root root  4096 Sep 23  2011 mnt
drwxr-xr-x.   2 root root  4096 Sep 23  2011 opt
dr-xr-xr-x  101 root root     0 Nov  7 18:49 proc
dr-xr-x---.   5 root root  4096 Nov  9 16:32 root
drwxr-xr-x    3 root root  4096 Nov  7 18:45 run
dr-xr-xr-x.   2 root root 12288 Aug 24  2017 sbin
drwxr-xr-x.   2 root root  4096 Aug 24  2017 selinux
drwxr-xr-x.   2 root root  4096 Sep 23  2011 srv
drwxr-xr-x   13 root root     0 Nov  7 18:49 sys
drwxr-xr-x    3 root root  4096 Nov  8 16:17 temp
drwxrwxrwt.   3 root root  4096 Nov 10 09:54 tmp
drwxr-xr-x.  13 root root  4096 Aug 24  2017 usr
drwxr-xr-x.  19 root root  4096 Nov  7 19:47 var
           

2. drwxr-xr-x 17 root root 3420 Nov 7 18:50 dev

第一行的第一個字元代表這個檔案的類型

d:目錄
-:普通檔案
l:連結檔案
b:裝置檔案,可供存儲的接口裝置
c:裝置檔案,串行端口裝置,如鍵盤、滑鼠
           

rwxr-xr-x代表檔案所有者、所屬使用者組、其他使用者對該檔案的權限

rwx:檔案所有者,可讀可寫可執行。權限為4+2+1=7
r-x:所屬組,可讀可執行。權限為4+0+1=5
r-x:其他使用者,可讀可執行。權限為4+0+1=5
           

17

代表連結數量或者子目錄的個數
           

root root

第一個是檔案的所有者
第二個是檔案的所屬使用者組
           

3420

檔案大小,預設機關為B
           

Nov 7 18:50

檔案最後被修改的時間
           

dev

檔案名,如果檔案名前多一個“.”則代表這個檔案為隐藏檔案
           

3.chmod 改變檔案權限

第一種:使用數字來改變權限。r:4,w:2,x:1。

chmod 權限對應數字 檔案或目錄
-R    遞歸更改,即子目錄的權限也會修改
           
[[email protected] ~]# ll
-rw-r--r-- 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chmod 777 test
[[email protected] ~]# ll
-rwxrwxrwx 1 root root 0 Nov 10 14:48 test
           

第二種:通過符号類型來改變權限

chmod who=權限 檔案或目錄
u:擁有者的權限
g:所屬組的
o:其他使用者的
a:全部的身份
           
[[email protected] ~]# ll
-rw-r--r-- 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chmod u=rwx,go=rx test  
[[email protected] ~]# ll
-rwxr-xr-x 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chmod a=rx test
[[email protected] ~]# ll
-r-xr-xr-x 1 root root 0 Nov 10 14:48 test
           

第三種:在原有的基礎上進行+、- 權限的方法

chmod who+/- 檔案或目錄
           
[[email protected] ~]# ll
-r-xr-xr-x 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chmod u+w,g-x,o-rx test
[[email protected] ~]# ll
-rwxr----- 1 root root 0 Nov 10 14:48 test
           

4.chown 更改檔案所有權

chown  所有者:所屬組 檔案或目錄
-R     遞歸修改,包括其子目錄下的所有檔案
           
[[email protected] ~]# ll
-rwxr----- 1 root root 0 Nov 10 14:48 test
[[email protected] ~]# chown mysql test              #僅修改所有者。将test檔案的所有者修改為MySQL
[[email protected] ~]# ll
-rwxr----- 1 mysql root 0 Nov 10 14:48 test
[[email protected] ~]# chown :mysql test             #僅修改所屬組。将test檔案的所屬組修改為MySQL
[[email protected] ~]# ll
-rwxr----- 1 mysql mysql 0 Nov 10 14:48 test
[[email protected] ~]# chown root:root test          #同時修改所有者與所屬組。将test檔案的所有者和所屬組修改為root
[[email protected] ~]# ll
-rwxr----- 1 root root 0 Nov 10 14:48 test
           

5.umask 檔案預設權限

umask就是指定目前使用者在建立檔案或目錄時的權限預設值,預設為0022。建立檔案預設沒有執行權限,目錄預設權限都開放

[[email protected] ~]# umask
0022                      
#與一般權限有關的是後三位,第一位與特殊權限有關
           

umask的數字指的是需要減掉的權限。

“0022”指的是所有者不需要拿掉權限,所屬組和其他使用者需要拿掉2(w)的權限
           

umask為0022時,建立的檔案預設權限為644,建立的目錄權限為755

[[email protected] ~]# touch test
[[email protected] ~]# ll
-rw-r--r-- 1 root root 0 Nov 10 17:33 test
[[email protected] ~]# mkdir test1
[[email protected] ~]# ll
-rw-r--r-- 1 root root    0 Nov 10 17:33 test
drwxr-xr-x 2 root root 4096 Nov 10 17:42 test1
           

修改umask對權限的影響

将umask修改為007
[[email protected] ~]# umask 007
[[email protected] ~]# touch test2
[[email protected] ~]# mkdir test3
[[email protected] ~]# ll
-rw-rw---- 1 root root    0 Nov 10 17:47 test2
drwxrwx--- 2 root root 4096 Nov 10 17:47 test3
将umask修改為0
[[email protected] ~]# umask 0
[[email protected] ~]# touch test1
[[email protected] ~]# mkdir test2
[[email protected] ~]# ll
-rw-rw-rw- 1 root root    0 Nov 10 17:49 test1
drwxrwxrwx 2 root root 4096 Nov 10 17:49 test2
           

練習完成後,恢複umask為002

[[email protected] ~]# umask 002
           

6.特殊權限

SUID:u+s。僅用在二進制程式

運作程式時,程序的屬主是程式檔案自身的權限,而不是程序發起者
           
[[email protected] ~]# chmod u=rwxs test
[[email protected] ~]# ll
-rwsrwxr-x 2 root root 4096 Nov 10 18:18 test
           

SGID:g+s。可用在二進制程式,目錄

運作程式時,程序的屬組是程式檔案自身的屬組,而不是程序發起者的基本組
           
[[email protected] ~]# chmod g+s test1
[[email protected] ~]# ll
drwxrwsr-x 2 root root 4096 Nov 10 18:18 test1
           

SBIT:o+t

在一個公共目錄,每個使用者都可以建立檔案,删除自己的檔案,但不能删除别人的檔案。

這個公共目錄要具有w,x權限,則這個公共目錄隻有檔案的建立者和root可删除

建立一個共享目錄,并設定權限
[[email protected] ~]# mkdir test1
[[email protected] ~]# chmod 777 /var/test
[[email protected] ~]# chmod o+t /var/test
[[email protected] ~]# ll -d /var/test
drwxrwxrwt. 2 root root 20 Nov 20 05:25 /var/test
建立兩個使用者test1,test2
[[email protected] ~]# useradd test1
[[email protected] ~]# useradd test2
設定兩個使用者的密碼
[[email protected] ~]# echo "123456" | passwd --stdin test1
[[email protected] ~]# echo "123456" | passwd --stdin test2
在共享目錄下建立一個檔案
[[email protected] ~]# cd /var/test
[[email protected] test]# touch root1
[[email protected] test]# ll
-rw-r--r--. 1 root  root   0 Nov 20 05:27 root1
切換到test1目錄,對root使用者建立的目錄進行删除,不能删除
[[email protected] test]# su test1
[[email protected] test]$ touch test11
[[email protected] test]$ ll
-rw-r--r--. 1 root  root   0 Nov 20 05:27 root1
-rw-rw-r--. 1 test1 test1 13 Nov 20 05:25 test11
[[email protected] test]$ rm -rf root1
rm: cannot remove ‘root1’: Operation not permitted
切換到test2使用者,對test1使用者建立的檔案進行删除,不能删除
[[email protected] test]$ su test2 
[[email protected] test]$ ll
-rw-r--r--. 1 root  root   0 Nov 20 05:27 root1
-rw-rw-r--. 1 test1 test1 13 Nov 20 05:25 test11
[[email protected] test]$ rm -rf test11
rm: cannot remove ‘test11’: Operation not permitted
           

特殊權限對應的數字,更改檔案的特殊權限時,在那三個數字之前加上特殊權限的數字

SUID:4
SGID:3
SBIT:1