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