linux權限drwxrwxrwx所代表的意義


[root@app-LT-147 localPartExp]# ll
drwxrwxrwx     2     root     root    4096      11月816:38     excel
drwxr-xr--        2     777     root    4096      11月816:47     zip

共顯示了七列信息,從左至右依次為:權限、文件數、歸屬用戶、歸屬群組、文件大小、創建日期、文件名稱
d :第一位表示文件類型
  d 文件夾
  - 普通文件
  l 鏈接
  b 塊設備文件
  p 管道文件
  c 字符設備文件
  s 套接口文件
 
rwx :第2-4位表示這個文件的屬主擁有的權限。r是讀、w是寫、x是執行 
r-x :第5-7位表示和這個文件屬主所在同一個組的用戶所具有的權限 
r-x :第8-10位表示其他用戶所具有的權限
 
常用的linux文件權限:
 
444 r--r--r--
600 drw-------
644 drw-r--r--
666 drw-rw-rw-
700 drwx------
744 drwxr--r--
755 drwxr-xr-x
777 drwxrwxrwx
1、從左至右,1-3位數字代表文件所有者的權限,4-6位數字代表同組用戶的權限,7-9數字代表其他用戶的權限。
 
 一共有10位數,其中:最前面那個 - 代表的是類型
  中間那三個 rw- 代表的是所有者(user)
  然后那三個 rw- 代表的是組群(group)
  最后那三個 r-- 代表的是其他人(other)
而具體的權限是由數字來表示的,讀取的權限等於4,用r表示;寫入的權限等於2,用w表示;執行的權限等於1,用x表示;
2、通過4、2、1的組合,得到以下幾種權限:
0(沒有權限);4(讀取權限);5(4+1 | 讀取+執行);6(4+2 | 讀取+寫入);7(4+2+1 | 讀取+寫入+執行)
以755為例:
1-3位7等於4+2+1,rwx,所有者具有讀取、寫入、執行權限;
4-6位5等於4+1+0,r-x,同組用戶具有讀取、執行權限但沒有寫入權限;
7-9位5,同上,也是r-x,其他用戶具有讀取、執行權限但沒有寫入權限。
 
3. 改變權限, chmod
權限的設定方法有兩種, 分別可以使用數字或者是符號來進行權限的變更。
 
3.1 數字類型改變檔案權限
Linux檔案的基本權限就有九個,分別是owner/group/others三種身份各有自己的read/write/execute權限
 
舉例:檔案的權限字符為 -rwxrwxrwx  這九個權限是三個三個一組的!其中,我們可以使用數字來代表各個權限,各權限的分數對照表如下:
 
r:4   w:2   x:1
 
每種身份(owner/group/others)各自的三個權限(r/w/x)分數是需要累加的,例如當權限為: [-rwxrwx---] 分數則是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
所以我們設定權限的變更時,該檔案的權限數字就是770啦!變更權限的指令chmod的語法是這樣的:
 
[root@www ~]# chmod [-R] xyz 檔案或目錄 
選項與參數: 
xyz : 就是剛剛提到的數字類型的權限屬性,為 rwx 屬性數值的相加。 
-R : 進行遞歸(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更
舉例來說,如果要將.bashrc這個檔案所有的權限都設定啟用,那么就下達:
 
[root@www ~]# ls -al .bashrc 
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc 
[root@www ~]# chmod 777 .bashrc 
[root@www ~]# ls -al .bashrc 
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
那如果要將權限變成 -rwxr-xr-- 呢?那么權限的分數就成為 [4+2+1][4+0+1][4+0+0]=754 啰!所以你需要下達:
 
[root@www ~]# chmod 754 filename
 
3.2 符號類型改變檔案權限
 
還有一個改變權限的方法呦!從之前的介紹中我們可以發現,基本上就九個權限分別是(1)user (2)group (3)others三種身份啦!那么我們就可以藉由u, g, o來代表三種身份的權限!此外, a 則代表 all 亦即全部的身份!那么讀寫的權限就可以寫成r, w, x啰!也就是可以使用底下的方式來看:
 

來實驗一下吧!假如我們要設定一個檔案的權限成為『-rwxr-xr-x』時,基本上就是:
o user (u):具有可讀、可寫、可執行的權限;
o group 與 others (g/o):具有可讀不執行的權限。
 
所以就是:
 
[root@www ~]# chmod u=rwx,go=rx .bashrc 
# 注意喔!那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空格符! 
[root@www ~]# ls -al .bashrc 
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
那么假如是『 -rwxr-xr-- 』這樣的權限呢?可以使用『 chmod u=rwx,g=rx,o=r filename 』來設定。此外,如果我們知道原先的文件屬性,而我只想要增加.bashrc這個檔案的每個人均可寫入的權限, 那么我就可以使用:
 
[root@www ~]# ls -al .bashrc 
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc 
[root@www ~]# chmod a+w .bashrc 
[root@www ~]# ls -al .bashrc 
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
而如果是要將權限去掉而不改變其他已存在的權限呢?例如要拿掉全部人的可執行權限,則:
 
[root@www ~]# chmod a-x .bashrc 
[root@www ~]# ls -al .bashrc 
-rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc
====================================以下是擴展============================
 
-特殊權限
        a. SUID(s/4)
         應用在可執行文件上(二進制的文件),任何用戶執行文件時都以文件擁有者的身份執行
        b. SGID(s/2)
         應用在可執行文件上(二進制的文件),任何用戶執行文件時都以文件擁有組成員身份執行
        c. SBIT(t/1)
        應用在目錄文件上,在目錄中刪除對象時,只能刪除用戶自己擁有的對象
 
exp:
 
drwxr--r-- 2 wmj wmj       4096 12月 13 17:13 2016.12.13-17.13.48
-rwxr--r-- 1 wmj wmj         57 11月  3 18:47 5h.sh
-rwxr--r-- 1 wmj wmj        271 12月 13 12:15 ado.sh
設置屬性值 :chmod u+s,g+s,o+t 2016.12.13-17.13.48 5h.sh ado.sh
drwsr-Sr-T 2 wmj wmj       4096 12月 13 17:13 2016.12.13-17.13.48
-rwsr-Sr-T 1 wmj wmj         57 11月  3 18:47 5h.sh
-rwsr-Sr-T 1 wmj wmj        271 12月 13 12:15 ado.sh
 
====================================以下是擴展============================
    文件的粘滯位(sticky)位是作什么用的?
    普通文件的sticky位會被linux內核忽略,目錄的sticky位表示這個目錄里的文件只能被owner和root刪除
 
    粘着位(Sticky bit)
    如果用戶對目錄有寫權限,則可以刪除其中的文件和子目錄,即使該用戶不是這些文件的所有者,而且也沒有讀或寫許可。粘着位出現執行許可的位置上,用t表示,設置了該位后,其它用戶就不可以刪除不屬於他的文件和目錄。但是該目錄下的目錄不繼承該權限,要再設置才可使用。
 
    # chmod 1770 xxx
    舉一個linux下的常見目錄來做例子,也就是 /tmp 目錄來說一下粘連位的作用。
    #ls -dl /tmp
    drwxrwxrwt 4 root    root  .........
    注意other位置的t,這便是粘連位。
    我們都知道,/tmp常被我們用來存放臨時文件,是所有用戶。但是我們不希望別的用戶隨隨便便的就刪除了自己的文件,於是便有了粘連位,它的作用便是讓用戶只能刪除屬於自己的文件。
 
    那么原來的執行標志x到哪里去了呢? 系統是這樣規定的, 假如本來在該位上有x, 則這些特別標志 (suid, sgid, sticky) 顯示為小寫字母 (s, s, t). 否則, 顯示為大寫字母 (S, S, T) 。
    3)粘着位(sticky) 
    eg: 
    chmod 777 abc 
    chmod +t abc 
    等價於 
    chmod 1777 abc
    在以前舊的系統當中,如果一個程序文件一旦設置了粘着位,
    那么當該程序中止的時候他的所有指令段將被保存到系統的交換分區當中,
    再次運行時可以更快的調入系統.
 
    不過現在的操作系統已經不再使用這種功能了.
    但這並不表示這一功能已經完全被廢棄.
    當一個目錄設置為粘着位時,它將發揮特殊的作用,
 
    即當一個目錄被設置為"粘着位"(用chmod a+t),則該目錄下的文件只能由
    一、超級管理員刪除
    二、該目錄的所有者刪除
    三、該文件的所有者刪除
    也就是說,即便該目錄是任何人都可以寫,但也只有文件的屬主才可以刪除文件。
 


免責聲明!

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



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