Linux系統文件權限體系詳解


改變權限屬性的命令chmod

  chmod是來改變文件或者目錄權限的命令,但只有文件的屬主和超級用戶root才有這樣的權限,通過chmod來改變文件或目錄的權限有倆種方式,一種是通過權限字母和操作符表達式的方法,來設置權限,另一種是使用數字方法來設置權限。

  chmod    [數字組合]  文件名

r  read  4
w write 2
x execute 1
-   0
 

  舉例子:創建一個ett.txt文件,並查看文件的權限。

  

  此文件的權限屬主位代表的數字為4+2+0=6;屬組位代表的數字為4+0+0=4,其他用戶組代表的是4+0+0=4,所以數字組合為644

  例一,用chmod命令的數字方法來設置權限,如下:(次數字方法最為常用)

  

  例子二,用touch創建一個.sh文件,測試屬主的權限,屬組和其他用戶組的權限不在一一測試。。。

  

  權限字母和操作符表達式

標識 u(user) g(group) o(others) a(all) + - =
含義 用戶 其他 所有用戶 增減權限 減少權限 重新分配權限

  

 

  

  小結:針對目錄跟文件權限對比說明

  文件 目錄
r(read)讀取權限 表示具有讀取閱讀文件內容的權限 表示具有瀏覽目錄的權限(注意:與進入目錄的權限不同)
w(write)寫入權限 表示具有新增,修改文件內容的權限(注意:刪除和移動文件和文件本身無關,看上級目錄) 表示具有新增,刪除,移動目錄的內文件權限(需要有x權限配合,要不沒有r 有x ls -l 查看文件會顯示文件名 ,但是文件屬性都是一堆????)
x(execute)(執行權限) 表示具有執行文件權限(普通用戶同時還需要r權限,root用戶不用r也能執行,文件本身也能執行才可以哦) 表示具有進入目錄的權限

 

既然我們可以更改權限了,那么有沒有想過我們創建的文件或目錄默認權限呢?umask可以分配默認權限,文件的默認安全權限為644,目錄為755(Linux)

  

 

在linux下我們查看的方式有兩種,一種可以直接輸入umask,就可以看到數字形態的權限設置分數,一種則是加-S(Symbolic)參數,就能以符號類型的方式來顯示出權限了,如下:

   

  Umask的設置很簡單,只需要在umask命令后加想要拿掉的權限數字就行:

  

        Linux下的etc/profile和etc/bashrc中都有默認的umask設置,我們來看一下:

1 if [ SUID -gt 99] && [ " 'id -gn' " =" 'id =un' "];then
2     umask 002
3 else
4     umask 022
5 fi

 

         這個是在etc/profile中的一部分內容,可以看到根據不同的uid設置了不同的umask,其實在etc/bashrc文件中也有基本相同的這部分代碼,我們可以在這兩個文件中設置umask,那么二者有什么區別呢?如果實在etc/profile中修改,只有在重新登錄用戶的時候才會發生改變,而在etc/bashrc中修改的話要是切換目錄就會發生改變,因為profile是在登錄用戶的時候調用的。一般不常永久改umask,只是臨時更改用,沒啥較大用途的命令(個人觀點)

  Linux系統是如何計算出文件或目錄權限的呢?

   默認最大權限 umask值 用戶創建文件的權限
文件 創建文件umask為偶數的時候 666[-rw-rw-rw-] 022(全偶數)[-----w--w-] 644 [-rw-r--r--](說明:偶數加減法  默認的最大權限 —umask 值=用戶創建文件的權限)

創建文件umask為奇數的時候

(umask部分或者全部都為奇數)

666[-rw-rw-rw-] 123(部分位為奇數) [--x--w--wx] 644(以為umask的值123中又個都是奇數,因此在計算543的基礎上加上101,即奇數對應的文件數字權限位分別加1即可)
目錄  umask為奇數偶數都一樣 777[-rwxrwxrwx] 022[-----w--w-] 755[-rwxr-xr-x](說明:默認最大權限—umask值=用戶創建目錄的權限)

 

 可以看到上面在計算創建的文件和目錄的默認權限的時候,我是這樣認為的:666-022=644;777-022=755.,這樣數字相減正好是用戶創建的目錄或文件的權限,(說明:如果是文件的話umask為奇數的話,需要在做減法后,奇數對應的文件數字權限上加1,目錄則不需要,博主親測望采納!)更多計算方法請參考Linux默認權限的計算公式

如何設置UID、GID、STICK_BIT

SUID:置於 u 的 x 位,原位置有執行權限,就置為 s,沒有了為 S .

chmod u+s  xxx # 設置setuid權限

chmod 4551 file // 權限: r-sr-x—x

 

SGID:置於 g 的 x 位,原位置有執行權限,就置為 s,沒有了為 S .

chmod g+s  xxx # 設置setgid權限

chmod 2551 file // 權限: r-xr-s--x

 

STICKY:粘滯位,置於 o 的 x 位,原位置有執行權限,就置為 t ,否則為T .

chmod o+t  xxx # 設置stick bit權限,針對目錄

chmod 1551 file // 權限: r-xr-x--t

說明:suid修改的是執行命令,而不是處理的目標文件,且僅對二進制文件或程序有效,二進制命令或程序需要有可執行權限,

loading....

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM