Linux 文件或目錄的屬性主要包括:文件或目錄的節(jié)點、種類、權限模式、鏈接數量、所歸屬的用戶和用戶組、最近訪問或修改的時間等內容;
[root@localhost ~]# ls -lih
總計 104K
2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh
2408830 drwxr-xr-x 2 root root 4.0K 04-21 12:46 mkuml-2004.07.17
2408260 drwxr-xr-x 2 root root 4.0K 04-21 22:15 mydir
2408258 lrwxrwxrwx 1 root root 7 04-21 22:16 sun001.txt -> sun.txt
2408263 -rw-r--r-- 2 root root 11 04-20 14:17 sun002.txt
2408263 -rw-r--r-- 2 root root 11 04-20 14:17 sun.txt
解釋:
第一字段:inode
第二字段:文件種類和權限;
第三字段: 硬鏈接個數;
第四字段: 屬主;
第五字段:所歸屬的組;
第六字段:文件或目錄的大小;
第七字段和第八字段:最后訪問或修改時間;
第九字段:文件名或目錄名
我們以lsfile.sh為例:
2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh
inode 的值是:2408949
文件類型:文件類型是-,表示這是一個普通文件; 關于文件的類型,請參考:《Linux 文件類型和文件擴展》
文件權限:文件權限是rwxr-xr-x ,表示文件屬主可讀、可寫、可執(zhí)行,文件所歸屬的用戶組可讀可執(zhí)行,其它用戶可讀可執(zhí)行;
硬鏈接個數: lsfile.sh這個文件沒有硬鏈接;因為數值是1,就是他本身;
文件屬主:也就是這個文件歸哪于哪個用戶 ,它歸于root,也就是第一個root;
文件屬組:也就是說,對于這個文件,它歸屬于哪個用戶組,在這里是root用戶組;
文件大?。?/strong>文件大小是7個字節(jié);
訪問可修改時間 :這里的時間是最后訪問的時間,最后訪問和文件被修改或創(chuàng)建的時間,有時并不是一致的;
當然文檔的屬性不僅僅包括這些,這些是我們最常用的一些屬性。我們把比較重要的說一說,比如文件所歸屬的種類、權限、硬鏈接個數 ... ...
2、 關于inode;
inode 譯成中文就是索引節(jié)點。每個存儲設備或存儲設備的分區(qū)(存儲設備是硬盤、軟盤、U盤 ... ... )被格式化為文件系統(tǒng)后,應該有兩部份,一部份是inode,另一部份是Block,Block是用來存儲數據用的。而inode呢,就是用來存儲這些數據的信息,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權限等。inode為每個文件進行信息索引,所以就有了inode的數值。操作系統(tǒng)根據指令,能通過inode值最快的找到相對應的文件。
做個比喻,比如一本書,存儲設備或分區(qū)就相當于這本書,Block相當于書中的每一頁,inode 就相當于這本書前面的目錄,一本書有很多的內容,如果想查找某部份的內容,我們可以先查目錄,通過目錄能最快的找到我們想要看的內容。雖然不太恰當,但還是比較形象。
當我們用ls 查看某個目錄或文件時,如果加上-i 參數,就可以看到inode節(jié)點了;比如我們前面所說的例子;
[root@localhost ~]# ls -li lsfile.sh
2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh
lsfile.sh 的inode值是 2408949 ; 查看一個文件或目錄的inode,要通過ls 命令的的 -i參數。
2.10 inode 相同的文件是硬鏈接文件;
在Linux 文件系統(tǒng)中,inode值相同的文件是硬鏈接文件,也就是說,不同的文件名,inode可能是相同的,一個inode值可以對應多個文件。理解鏈接文件并不難,看看例子就會了。在Linux中,鏈接文件是通過ln工具來創(chuàng)建的。
2.11 創(chuàng)建硬鏈接,硬鏈接和源文件關系;
用ln 創(chuàng)建文件硬鏈接的語法:
# ln 源文件 目標文件
下面我們舉一個例子,在這個例子中,我們要為sun.txt 創(chuàng)建其硬鏈接sun002.txt。然后看一下sun.txt和sun002.txt的屬性的變化;
[root@localhost ~]# ls -li sun.txt 注:查看sun.txt的屬性;
2408263 -rw-r--r-- 1 root root 29 04-22 21:02 sun.txt 注:這是sun.txt的屬性;
[root@localhost ~]# ln sun.txt sun002.txt 注:我們通過ln 來創(chuàng)建sun.txt的硬鏈接文件sun002.txt
[root@localhost ~]# ls -li sun* 注:我們列一下sun.txt 和sun002.txt
2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun002.txt
2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun.txt
我們可以看到sun.txt在沒有創(chuàng)建硬鏈接文件sun002.txt的時候,其鏈接個數是1(也就是-rw-r--r--后的那個數值),創(chuàng)建了硬鏈接sun002.txt創(chuàng)建后,這個值變成了2。也就是說,我們每次為sun.txt創(chuàng)建一個新的硬鏈接文件后,其硬鏈接個數都會增加1。
inode值相同的文件,他們的關系是互為硬鏈接的關系。當我們修改其中一個文件的內容時,互為硬鏈接的文件的內容也會跟著變化。如果我們刪除互為硬鏈接關系的某個文件時,其它的文件并不受影響。比如我們把sun.txt刪除后,我們還是一樣能看到sun002.txt的內容,并且sun02.txt仍是存在的。
可以這么理解,互為硬鏈接關系的文件,他們好象是克隆體,他們的屬性幾乎是完全一樣;
下面的例子,我們把sun.txt刪除,然后我們看一下sun002.txt 是不是能看到其內容。
[root@localhost ~]# rm -rf sun.txt
[root@localhost ~]# more sun002.txt
注意:硬鏈接不能為目錄創(chuàng)建,只有文件才能創(chuàng)建硬鏈接。
2.12 軟鏈接的創(chuàng)建,及軟接與源文件的關系;
創(chuàng)建軟鏈接(也被稱為符號鏈接)的語法;
# ln -s 源文文件或目錄 目標文件或目錄
軟鏈接也叫符號鏈接,他和硬鏈接有所不同,軟鏈接文件只是其源文件的一個標記。當我們刪除了源文件后,鏈接文件不能獨立存在,雖然仍保留文件名,但我們卻不能查看軟鏈接文件的內容了。
[root@localhost ~]# ls -li linuxsir001.txt
2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt
[root@localhost ~]# ln -s linuxsir001.txt linuxsir002.txt
[root@localhost ~]# ls -li linuxsir001.txt linuxsir002.txt
2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt
2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -> linuxsir001.txt
解釋
上面的例子,首先我們查看 linuxsir001.txt 的屬性,比如inode 、所屬文件種類、創(chuàng)建或修改時間等... ...我們來對比一下:
首先 對比一下節(jié)點:兩個文件的節(jié)點不同;
其次 兩個文件的歸屬的種類不同 linuxsir001.txt是-,也就是普通文件,而linuxsir002.txt 是l,它是一個鏈接文件;
第三 兩個文件的讀寫權限不同 linuxsir001.txt 是rw-r--r-- ,而linuxsir002.txt的讀寫權限是 rwxrwxrwx
第三 兩者的硬鏈接個數相同;都是1
第四 兩文件的屬主和所歸屬的用戶組相同;
第五 修改(或訪問、創(chuàng)建)時間不同;
我們還注意到了linuxsir002.txt 后面有一個標記 ->,這表示linuxsir002.txt 是linuxsir001.txt的軟鏈接文件。
值得我們注意的是:當我們修改鏈接文件的內容時,就意味著我們在修改源文件的內容。當然源文件的屬性也會發(fā)生改變,鏈接文件的屬性并不會發(fā)生變化。當我們把源文件刪除后,鏈接文件只存在一個文件名,因為失去了源文件,所以軟鏈接文件也就不存在了。這一點和硬鏈接是不同的;
[root@localhost ~]# rm -rf linuxsir001.txt 注:刪除linuxsir001.txt
[root@localhost ~]# ls -li linuxsir002.txt 注:查看linuxsir002 的屬性;
2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -> linuxsir001.txt
[root@localhost ~]# more linuxsir002.txt 注:查看linuxsir002.txt的內容;
linuxsir002.txt: 沒有那個文件或目錄 注:得到提示,linuxsir002.txt不存在。
上面的例子告訴我們,如果一個鏈接文件失去了源,就意味著他已經不存在了;
我們可以看到軟鏈接文件,其實只是源文件的一個標記,當源文件失去時,他也就是存在了。軟鏈接文件只是占用了inode來存儲軟鏈接文件屬性等信息,但文件存儲是指向源文件的。
軟件鏈接,可以為文件或目錄都適用。無論是軟鏈接還是硬鏈接,都可以用rm來刪除。rm工具是通用的。
3、文件類型;
當用ls指令的長格式顯示文件或目錄的屬性時;比如:
[root@localhost ~]# ls -lih
總計 104K
2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh
2408830 drwxr-xr-x 2 root root 4.0K 04-21 12:46 mkuml-2004.07.17
2408260 drwxr-xr-x 2 root root 4.0K 04-21 22:15 mydir
2408258 lrwxrwxrwx 1 root root 7 04-21 22:16 sun001.txt -> sun.txt
2408263 -rw-r--r-- 2 root root 11 04-20 14:17 sun002.txt
2408263 -rw-r--r-- 2 root root 11 04-20 14:17 sun.txt
我們來看一下lsfile.sh這行,其中有這樣一個字段 -rwxr-xr-x 。這個字段包括兩個信息,一是文件類型,二是文件的權限;文件類型就第一個字符,lsfile.sh的文件所歸屬的文件種類是- 。同理 mkuml-2004.07.17的這段是drwxr-xr-x,它所歸屬的文件種類應該是d;sun001.txt文件呢,對應的lrwxrwxrwx,sun001.txt所歸屬的文件種類應該是-l 。
我們可以知道Linux文件可以分為如普通文件、目錄、符號鏈接文件、字符和塊設備文件、套接口文件等。
詳情請參考 :《Linux 文件類型和文件的擴展名》
4、文件的權限;
Linux文件或目錄的權限是和用戶和用戶組聯(lián)系在一起的,所以理解這部份內容,您首先得了解一下Linux用戶管理方面的知識 。請參考 :《Linux 用戶(user)和用戶組(group)管理概述》。如果您是新手,要把這篇文檔的相關文檔也了解一下,這對您理解本文真的很重要;
每個文件或目錄都有一組9個權限位,每三位被分為一組,他們分別是屬主權限位(占三個位置 )、用戶組權限位(占三個位置)、其它用戶權限位(占三個位置)。比如rwxr-xr-x ,我們數一下就知道是不是9個位置了,正是這9個權限位來控制文件屬主、用戶組以及其它用戶的權限。
4.1 關于權限位;
Linux文件或目錄的權限位是由 9 個權限位來控制,每三位為一組,它們分別是文件屬主(Ower)的讀、寫、執(zhí)行,用戶組(Group)的讀、寫、執(zhí)行以及(Other)其它用戶的讀、寫、執(zhí)行;
文件屬主: 讀r、寫w、執(zhí)行x 用 戶 組 : 讀r、寫w、執(zhí)行x 其它用戶: 讀r、寫w、執(zhí)行x 如果權限位不可讀、不可寫、不可執(zhí)行,是用-來表示。
對于普通文件的讀、寫、執(zhí)行權限可以這樣理解:
可讀:意味著我們可以查看閱讀;
可寫:意味著,可以修改或刪除(不過刪除或修改的權限受父目錄上的權限控制);
可執(zhí)行:意味著如果文件就可以運行,比如二進制文件(比如命令),或腳本(要用腳本語言解釋器來解釋運行)。
比如:
[root@localhost ~]# ls -l lsfile.sh
-rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh
第一個字段 -rwxr-xr-x中的第一個字符是-,表示lsfile.sh是一個普通文件;
lsfile.sh的權限是 rwxr-xr-x。表示lsfile.sh文件,文件的屬主root,擁有rwx(可讀、可寫、可執(zhí)行)權限,用戶組root,擁有 r-x(可讀、可寫)權限 ,其它用戶擁有 r-x(可讀、可寫)權限。這9個權限連在一起就是 rwxr-xr-x,也就是說,lsfile.sh 文件,文件屬主root擁有可讀、可寫、可執(zhí)行權限,用戶組root下的所有用戶擁有可讀可執(zhí)行權限,其它用戶擁有可讀可執(zhí)行權限。
查看文件的屬性用 ls -l 文件 ;查看目錄的屬性是 ls -d 目錄。請參考 :
4.2 改變權限的命令 chmod ;
chmod 是用來改變文件或目錄權限的命令,但只有文件的屬主和超級權限用戶root才有這種權限。通過chmod 來改變文件或目錄的權限有兩種方法,一種是通過八進制的語法,另一種是通過助記語法;
舉例:
[root@localhost ~]# touch linuxsir007.txt 注:創(chuàng)建linuxsir007.txt文件;
[root@localhost ~]# touch linuxsir008.txt 注:創(chuàng)建linuxsir008.txt 文件;
[root@localhost ~]# ls -lh linuxsir007.txt linuxsir008.txt 注:查看linuxsir007.txt和linuxsir008.txt文件屬性;
-rw-r--r-- 1 root root 0 04-23 20:11 linuxsir007.txt 注:linuxsir007.txt 文件屬性;
-rw-r--r-- 1 root root 0 04-23 20:11 linuxsir008.txt 注:linuxsir008.txt 文件屬性;
[root@localhost ~]# chmod 755 linuxsir007.txt 注:通過八進制語法來改變linuxsir007.txt的權限;
[root@localhost ~]# chmod u+x,og+x linuxsir008.txt 注:通過助記語法來改變linuxsir008.txt的權限;
[root@localhost ~]# ls -lh linuxsir007.txt linuxsir008.txt 注:查看linuxsir007.txt和linuxsir008.txt文件屬性;
-rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir007.txt
-rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir008.txt
上 面例子是一個演示通過chmod的兩種語法來改變權限的例子,我所要說明的是,兩種方法都能達到同一目的。
這個過程是:
首先:創(chuàng)建linuxsir007.txt和linuxsir008.txt兩個文件;
其次:查看兩個文件的屬性;他們的權限都是一樣的,都是 rw-r--r-- ,表示文件屬主可讀可寫、文件所歸屬的用戶組對文件可讀、其它用戶可讀;
第三:通過chmod的八進制語法來改變linuxsir007.txt 的權限;通過chmod的助記語法來改變linuxsir008.txt的權限; 我們用兩種方法來改變linuxsir007.txt和linuxsir008.txt 文件,通過chmod的兩種不同的語法來讓兩個文件的權限達以一致。在八進制語法中,我們用了 755 ,而在助記語法中,我們用了 u+x,og+x。雖然用了兩種不同的語法,但達到的目的是一樣的,最后的結果,我們可以看到兩個文件的權限都是 rwxr-xr-x。也就是說文件的屬主對文件有可讀可寫可執(zhí)行的權限,文件所歸屬的用戶組有可讀可執(zhí)行的權限,其它用戶有可讀可執(zhí)行的權限。
由此我們引出了通過chmod 工具來改變文件或目錄權限的的兩種方法:chmod 的八進制語法,chmod的助記語法;
4.21 通過 chmod 八進制語法來改變文件或目錄的權限;
我們前面已經說了,文件或目錄的權限位總共有9個位置 ,文件屬主、文件所歸屬的組占用三位和其它用戶各占用三個位置??磦€例子:
-rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir007.txt
說明:
屬主權限位:占用三個位置,三個位置的順序是讀r、寫w、執(zhí)行x。如果是沒有權限,則為-。在這個例子中,我們看到rwx,表示屬主在三個權位上都有權限,也就是可讀可寫可執(zhí)行;
屬組權限位:占用三個位置,三個位置的順序是讀r、寫w、執(zhí)行x。如果是沒有權限,則為-。在這個例子中,我們看到的是r-x,在寫的位置上是-,表示沒有寫權限,文件所歸屬的組對文件擁有的是可讀可執(zhí)行,但沒有寫的權限。
其它用戶權限位:占用三個位置 ,三個位置的順序是讀r、寫w、執(zhí)行x,如果是沒有權限,則為-。在這個例子中,我們看其它用戶的權限位是r-x,在寫的位置上是-,表示沒有寫權限,文件所歸屬的組對文件擁有的是可讀可執(zhí)行,但沒有寫的權限。
chmod 的八進制語法的數字說明;
r 4 w 2 x 1 - 0
屬主的權限用數字表達:屬主的那三個權限位的數字加起來的總和。比如上面的例子中屬主的權限是rwx ,也就是4+2+1 ,應該是7;
屬組的權限用數字表達:屬組的那個權限位數字的相加的總和。比如上面的例子中的r-x ,也就是4+0+1 ,應該是5;
其它用戶的權限數字表達:其它用戶權限位的數字相加的總和。比如上面例子中是 r-x ,也就是4+0+1 ,應該是5;
[root@localhost ~]# ls -l sun.txt
-rwxr-xr-x 2 root root 29 04-22 21:02 sun.txt 注:查看sun.txt的屬性,我們看到sun.txt的權限位是rwxr-xr-x,用八進制數字表示是755 ;
[root@localhost ~]# chmod 644 sun.txt 注;我們改變它的權限為屬主可讀可寫、屬組可讀、其它用戶可讀,也就是rw-r--r--,用數字表示就是644;
[root@localhost ~]# ls -l sun.txt
-rw-r--r-- 2 root root 29 04-22 21:02 sun.txt 注:是不是達到目的了?是的!
每個三位的權限代碼(分別是屬主、屬組,其它用戶)組合,有8種可能;
八進制數字 權限 0 --- 1 --x 2 -w- 3 -wx 4 r-- 5 r-x 6 rw- 7 rwx
注解:我們可以根據上面的數字列表來組合權限,比如我想讓屬主擁有 rwx(所對應的數字是7),屬組擁有 --x(所對應的數字是1),其它用戶擁有 ---(所對應的數字是0),這樣我們把各組的權限組合起來就是是 rwx--x---(對應的數字是710)。
[root@localhost ~]# ls -l sun.txt
-rw-r--r-- 2 root root 29 04-22 21:02 sun.txt
[root@localhost ~]# chmod 710 sun.txt
[root@localhost ~]# ls -l sun.txt
-rwx--x--- 2 root root 29 04-22 21:02 sun.txt
如果我們想改變的僅僅是打開目錄的權限 ,不用加任何參數。如果想把目錄以下的所有文件或子目錄改變,應該加-R參數;
[root@localhost ~]# ls -ld testdir/
drwxr-xr-x 3 root root 4096 04-24 11:01 testdir/
[root@localhost ~]# ls -lr testdir/
總計 4
-rw-r--r-- 1 root root 0 04-24 11:01 sir01.txt
drwxr-xr-x 2 root root 4096 04-24 11:01 linuxsir
我們僅僅改變testdir的權限,讓其擁有屬主可讀可寫、屬組可讀、其它用戶可讀,也就是rw-r--r-- ,用八進制的算數應該是644。
[root@localhost ~]# ls -ld testdir/ 注:我們查看到的testdir目錄的權限是rwxr--r--;
drwxr-xr-x 3 root root 4096 04-24 11:01 testdir/
[root@localhost ~]# chmod 644 testdir/
[root@localhost ~]# ls -ld testdir/
drw-r--r-- 3 root root 4096 04-24 11:01 testdir/ 注:改變成功;
[root@localhost ~]# ls -lr testdir/ 注:我們查看一下testdir目錄下的子目錄是否改變了?
嘗試一下改變testdir及其子目錄和文件權限都要改變?yōu)?rw-r--r--權限。我們要用到-R參數;
[root@localhost ~]# chmod -R 644 testdir/ 注:我們改變testdir下所有的文件或子目錄的權限都為 rw-r--r--
[root@localhost ~]# ls -ld testdir/
drw-r--r-- 3 root root 4096 04-24 11:01 testdir/
[root@localhost ~]# ls -lr testdir/
總計 4
-rw-r--r-- 1 root root 0 04-24 11:01 sir01.txt
drw-r--r-- 2 root root 4096 04-24 11:01 linuxsir
值得注意的是:chmod 改變一個目錄下的所有.file時,要小心操作。比如我們要改變testdir下的所有.file 的權限為 rwxr--r--,但我們不想改變testdir目錄的權限 。下面的例子操作是錯誤的。
[root@localhost ~]# ls -ld testdir/
drw-r--r-- 3 root root 4096 04-24 11:01 testdir/
[root@localhost ~]# ls -lr testdir/
總計 4
-rw-r--r-- 1 root root 0 04-24 11:01 sir01.txt
drw-r--r-- 2 root root 4096 04-24 11:01 linuxsir
[root@localhost ~]# chmod -R 755 testdir/.* 注:這樣操作,會把testdir目錄的權限一并改為 rwxr--r--
[root@localhost ~]# ls -ld testdir/
drwxr-xr-x 3 root root 4096 04-24 11:01 testdir/
所以當您想改變一個目錄下的所有.file權限,并且想保留該目錄的原有權限時,請不要用.*通配符。至于應該怎么做,我想大家都明白。比如下面的匹配;
[root@localhost ~]# chmod -R 644 testdir/.[a-z]*
上面的例子chmod 會匹配所有以.a到.z 開頭的文件。
4.22 通過 chmod 助記語法來改變文件或目錄的權限;
chmod 的助記語法相對簡單,對文件或目錄權限的改變時,是通過比較直觀的字符的形式來完成;在助記語法中,相關字母的定義;
用戶或用戶組定義:
u 代表屬主
g 代表屬組
o 代表其它用戶
a 代表屬主、屬組和其它用戶,也就是上面三個用戶(或組)的所有;
權限定義字母:
r 代表讀權限;
w 代表寫權限;
x 代表執(zhí)行權限;
權限增減字符;
- 代表減去相關權限;
+ 代表增加相關權限;
示例一:
[root@localhost ~]# ls -l linuxsir007.txt
-rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir007.txt
[root@localhost ~]# chmod ugo-x linuxsir007.txt 注:把屬主、用戶組及其它用戶的執(zhí)行權限都減掉;
[root@localhost ~]# ls -l linuxsir007.txt
-rw-r--r-- 1 root root 0 04-23 20:11 linuxsir007.txt
示例二:
[root@localhost ~]# ls -l linuxsir007.txt
-rw-r--r-- 1 root root 0 04-23 20:11 linuxsir007.txt
[root@localhost ~]# chmod u+x linuxsir007.txt 注:為文件的屬主增加執(zhí)行權限
[root@localhost ~]# ls -l linuxsir007.txt
-rwxr--r-- 1 root root 0 04-23 20:11 linuxsir007.txt
示例三:
[root@localhost ~]# ls -l linuxsir007.txt
-rwxr--r-- 1 root root 0 04-23 20:11 linuxsir007.txt
[root@localhost ~]# chmod u-x,go+rw linuxsir007.txt 注:減去文件屬主對文件的執(zhí)行權,增加屬組和其它用戶對文件的可讀可寫權;
[root@localhost ~]# ls -l linuxsir007.txt
-rw-rw-rw- 1 root root 0 04-23 20:11 linuxsir007.txt
用助記語法比較靈活,組合起來比較方便;比如;
u=r+x 為文件屬主添加讀寫權限;
ug=rwx,o=r 為屬主和屬組添加讀、寫、執(zhí)行權限,為其它用戶設置讀權限。
a+x 為文件的屬主、屬組和其它用戶添加執(zhí)行權限;
g=u 讓文件的屬組和屬主和權限相同;
對于目錄權限的設置,要用到-R參數;
和八進制方法一樣,如果我們?yōu)橐粋€目錄及其下的子目錄和文件具有相同的屬性,就可以用-R參數;
[root@localhost ~]# chmod -R a+rwx testdir/
[root@localhost ~]# ls -lr testdir/
總計 4
-rwxrwxrwx 1 root root 0 04-24 11:01 sir01.txt
drwxrwxrwx 2 root root 4096 04-24 11:01 linuxsir
4.3 默認權限分配的命令 umask ;
umask 是通過八進制的數值來定義用戶創(chuàng)建文件或目錄的默認權限。umask 表示的是禁止權限。不過文件和目錄有點不同。
對于文件來說,umask 的設置是在假定文件擁有八進制666權限上進行,文件的權限就是是666減去umask的掩碼數值;
對于目錄來說,umask 的設置是在假定文件擁有八進制777權限上進行,目錄八進制權限777減去umask的掩碼數值;
實例一:
[root@localhost ~]# umask 066
[root@localhost ~]# mkdir testdir003
[root@localhost ~]# ls -ld testdir003/
drwx--x--x 2 root root 4096 04-24 15:01 testdir003/
[root@localhost ~]# ls -lh sun998.txt
-rw------- 1 root root 0 04-25 15:57 sun998.txt
實例二:
系統(tǒng)用戶的家目錄的權限是通過在配置文件中指定的,比如Fedora 中是用的 /etc/login.defs文件;
其中有這樣一段:
CREATE_HOME yes
UMASK 077
表示的意思是,當我們創(chuàng)建用戶時,他的家目錄umask的數值是077 。我們怎么理解這個077呢。當用戶添加時,系統(tǒng)自動在/home中創(chuàng)建用戶的家目錄,并且設置它的權限為777-077=711 ,也就是rwx------ ;我們看一下/home下的某個用戶的家目錄是不是這樣的呢?
[root@localhost ~]# ls -ld ~beinan
drwx------ 36 beinan beinan 4096 04-24 15:08 /home/beinan
umask 一般都是放在用戶相關SHELL的配置文件中,比如用戶家目錄下的.bashrc 或.profile ,也可以放在全局性的用戶配置文件中,比如 /etc/login.defs,還可以放在SHELL全局的配置文件中,比如/etc/profile 或/etc/bashrc或/etc/csh.cshrc 等;
umask 放在相關的配置文件中,目的是當管理員創(chuàng)建用戶時,系統(tǒng)會自動為用戶創(chuàng)建文件或目錄時配置默認的權限代碼。
5、setuid和setgid 位;
本部份內容做為了解,看看就行了;
5.1 setuid和setgid的解說 ;
setuid 和setgid位是讓普通用戶可以以root用戶的角色運行只有root賬號才能運行的程序或命令。比如我們用普通用戶運行passwd命令來更改自己的口令,實際上最終更改的是/etc/passwd文件。我們知道/etc/passwd文件是用戶管理的配置文件,只有root權限的用戶才能更改。
[root@localhost ~]# ls -l /etc/passwd
-rw-r--r-- 1 root root 2379 04-21 13:18 /etc/passwd
作為普通用戶如果修改自己的口令通過修改/etc/passwd肯定是不可完成的任務,但是不是可以通過一個命令來修改呢。答案是肯定的,作為普通用戶可以通過passwd 來修改自己的口令。這歸功于passwd命令的權限。我們來看一下;
[root@localhost ~]# ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 02-12 16:15 /usr/bin/passwd
因為/usr/bin/passwd 文件已經設置了setuid 權限位(也就是r-s--x--x中的s),所以普通用戶能臨時變成root,間接的修改/etc/passwd,以達到修改自己口令的權限。
我們在《Linux 系統(tǒng)中的超級權限的控制》中有提到過。我們知道Linux的用戶管理是極為嚴格的,不同的用戶擁有不同的權限,為了完成只有root用戶才能完成的工作,我們必須為普通用戶提升權限,最常用的方法就是su或sudo。雖然setuid 和setgid也是讓普通用戶超越自身擁有的普通權限達到root權限的方法,但我不推薦大家使用,因為它能為系統(tǒng)帶來安全隱患!!
注意:setuid和setgid會面臨風險,所以盡可能的少用,了解了解既可~~~
5.2 setuid和setgid的實例應用;
我們想讓一個普通用戶beinan擁有root用戶擁有超級rm刪除權限,我們除了用su或sudo 臨時切換到 root身份操作以外,還能怎么做呢???
[root@localhost ~]#cd /home 注:進入/home目錄
[root@localhost home]# touch beinantest.txt 注:創(chuàng)建一個測試文件;
[root@localhost home]# ls -l beinantest.txt 注:查看文件屬性;
-rw-r--r-- 1 root root 0 04-24 18:03 beinantest.txt 注:文件的屬性;
[root@localhost home]# su beinan 注:切換到普通用戶 beinan
[beinan@localhost home]$ rm -rf beinantest.txt 注:以普通用戶身份來刪除beinantest.txt文件;
rm: 無法刪除 “beinantest.txt”: 權限不夠
那我們怎么才能讓beinan 這個普通用戶也擁有root超級的rm 刪除功力呢?
[root@localhost ~]# ls -l /bin/rm
-rwxr-xr-x 1 root root 93876 02-11 14:43 /bin/rm
[root@localhost ~]# chmod 4755 /bin/rm 注:設置rm的權限為4755 , 就把setuid 位設置好了。
[root@localhost ~]# ls -l /bin/rm
-rwsr-xr-x 1 root root 43980 02-11 14:43 /bin/rm
[root@localhost ~]# cd /home/
[root@localhost home]# su beinan 注:切換到beinan用戶身份;
[root@localhost home]$ ls -l beinantest.txt 注:查看文件屬性;
-rw-r--r-- 1 root root 0 04-24 18:03 beinantest.txt 注:文件的屬性;
[beinan@localhost home]$ rm -rf beinantest.txt 注:刪除beinantest.txt文件;
我們只是設置了rm的setuid位,讓普通用戶在rm指令上有超級root的刪除超級權力。
通過這個例子,我們應該能明白setuid和setgid位的應用了,如同前面所說,讓普通用戶超越本身的能力,讓普通用戶能執(zhí)行只有root才能執(zhí)行的命令。在這一點,我們要和su和sudo 區(qū)分開來。請參見su和sudo的文檔:《Linux 系統(tǒng)中的超級權限的控制》
5.3 setuid和setgid的設置方法;
第一種方法:八進制方法:
setuid位是的設置用八進制的4000,setgid占用的是八進制的2000 ;比如我們前面所說的 chmod 4755 /bin/rm 就是設置的setuid位;
至于setuid的設置方法,只是在我們通過chmod設置文件或目錄權限位的八進制方法的前面多加一個數字,也就是4。比如:
[root@localhost ~]# chmod 4755 /bin/rm 注:設置rm的權限為4755 , 就把setuid 位設置好了。
作為setgid 位占用的是八進制的2000位,我們下面舉個例子;
[root@localhost ~]# cd /home/
[root@localhost home]# mkdir slackdir
[root@localhost home]# ls -ld slackdir/
drwxr-xr-x 2 root root 4096 04-24 18:25 slackdir/
[root@localhost home]# chmod 2755 slackdir/
[root@localhost home]# ls -ld slackdir/
drwxr-sr-x 2 root root 4096 04-24 18:25 slackdir/
我們看到 slackdir這個目錄,經過改變權限后的,目錄所歸屬用戶組的那三個權限位是 r-s。 如果我們見到的是小寫的s,表明文件所歸屬的用戶組位有執(zhí)行權限x。因為我們用了2755 ,意思是說文件屬主擁有可讀可寫可執(zhí)行權限,所歸屬的用戶組擁有可讀可執(zhí)行權限,并且設置了setuid,所以這時本來文件所歸屬的用戶組擁有r-x,現(xiàn)在加了setgid位,就把其中的x換成了s。如果文件所歸屬的用戶組沒有執(zhí)行權限,這個權限應該是S。同理setuid位的中的大寫的S和小寫的s,也是這個原理。見下面的例子;
[root@localhost home]# chmod 2740 slackdir/
[root@localhost home]# ls -ld slackdir/
drwxr-S--- 2 root root 4096 04-24 18:25 slackdir/
這個例子是因為目錄slackdir所歸屬的組沒有執(zhí)行權限,這時本來在執(zhí)行權限位上顯示-,由于有了setuid,所以顯示為S。
如果我們?yōu)橐粋€文件的權限擁有 屬主可讀可寫可執(zhí)行、所歸的組擁有可讀可執(zhí)行,其它用戶可讀可執(zhí)行,并且同時設置setuid和setgid位,我們應該怎么運行命令呢?
[root@localhost ~]# touch gooddoc.txt
[root@localhost ~]# ls -l gooddoc.txt
-rw-r--r-- 1 root root 0 04-24 18:47 gooddoc.txt
[root@localhost ~]# chmod 6755 gooddoc.txt
[root@localhost ~]# ls -l gooddoc.txt
-rwsr-sr-x 1 root root 0 04-24 18:47 gooddoc.txt
所以,同時設置setuid和setgid,就是把setuid和setgid兩個八進位的值相加 (4000+2000=6000),然后加上文件或目錄的權限位的三位數值(上面的例子是755),然后通過chmod 運行就行了。所以上面例子中用了6755 。
第二種方法:通過助記語法;
還是延用chmod的助記語法,通過u+s 或u-s 來增減setuid位,同理,我們可以通過g+s 或g-s 來setgid位;
[root@localhost ~]# touch mydoc.txt 注:創(chuàng)建一個文件;
[root@localhost ~]# ls -l mydoc.txt
-rw-r--r-- 1 root root 0 04-24 19:00 mydoc.txt
[root@localhost ~]# chmod u+s mydoc.txt
[root@localhost ~]# ls -l mydoc.txt
-rwSr--r-- 1 root root 0 04-24 19:00 mydoc.txt
我們也可以用file命令來查看setuid和setgid位,當然也能用file來查看文件的類型;
比如:
[root@localhost ~]# file /usr/bin/passwd
6、粘貼位及設置方法;
粘貼位的理解,我們還是先看一個例子;
[root@localhost ~]# ls -ld /tmp/
drwxrwxrwt 12 root root 4096 04-24 18:36 /tmp/
我們看到/tmp權限位最后的一個字母是 t。這就是設置了粘貼位。
粘貼位的設置,可以用八進制的1000位來設置。比如
[root@localhost ~]# mkdir googledir
[root@localhost ~]# ls -ld googledir/
drwxr-xr-x 2 root root 4096 04-24 21:59 googledir/
[root@localhost ~]# chmod 1755 googledir/
[root@localhost ~]# ls -ld googledir/
drwxr-xr-t 2 root root 4096 04-24 21:59 googledir/
也可以用chmod 的助記語法來設置。用o+t表示設置粘帖位,用o-t表示取消粘貼位;
[root@localhost ~]# ls -ld googledir/
drwxr-xr-x 2 root root 4096 04-24 21:59 googledir/
[root@localhost ~]# chmod o+t googledir/
[root@localhost ~]# ls -ld googledir/
drwxr-xr-t 2 root root 4096 04-24 21:59 googledir/
粘貼位現(xiàn)在也很少用了,不過對于象/tmp目錄這樣的,是整個系統(tǒng)臨時文件存放在,還是有點意義。一個目錄既使它的所有權限都開放rwxrwxrwx,如果是設置了粘帖位,除非目錄的屬主和root用戶有權限刪除它,除此之外其它用戶不能刪除這個目錄。用途一般是把一個文件夾的的權限都打開,然后來共享文件,象/tmp目錄一樣。
建議最好不要用!
7、文件或目錄的歸屬關系;
文件或目錄的歸屬關系主要定義文件歸屬哪個用戶所有及歸于哪個用戶組所有。
[root@localhost ~]# ls -ld dony.txt
-rw-rw-rw- 1 root root 0 04-24 15:05 dony.txt
上面的例子表示,dony.txt 這個文件,其屬主是root,歸屬的組是root用戶組,而root用戶所擁有的權限是rw-,root用戶組擁有的權限是rw-。
有時我們可能不理解,為什么Linux要設置文件的屬主、屬組,為什么還要為屬主、屬組和其它用戶都要設置權限呢??我們在以前的文檔說過,Linux是多用戶的操作系統(tǒng),文件的安全性對Linux是極為重要的,Linux的安全性主要表示在用戶管理和權限(用戶的權限及文件的權限)管理上。
7.1 改變文件的當屬關系的工具 chown ;
當我們要改變一個文件的屬組,我們所使用的用戶必須是該文件的屬主而且同時是目標屬組成員,或超級用戶。只有超級用戶的才能改變文件的屬主。
chown 語法:
#chown [選項]... [所有者][:[組]] 文件...
舉例:將example.txt文件的屬主改為linuxsirorg用戶;
[root@localhost ~]# ls -l example.txt
-rw-r--r-- 1 root root 0 04-24 22:37 example.txt
[root@localhost ~]# ls -l example.txt
-rw-r--r-- 1 linuxsirorg root 0 04-24 22:37 example.txt
[root@localhost ~]# chown beinan:root example.txt
[root@localhost ~]# ls -l example.txt
-rw-r--r-- 1 beinan root 0 04-24 22:37 example.txt
chown 所接的新的屬主和新的屬組之間應該以.或:連接,屬主和屬組之一可以為空。如果屬主為空,應該是 :屬組 ;如果屬組為空 就就不必需要.或:了。
[root@localhost ~]# ls -l sun.txt
-rwxr-xr-x 2 root root 29 04-22 21:02 sun.txt
[root@localhost ~]# chown beinan sun.txt 注:把sun.txt文件的屬主改為beinan;
[root@localhost ~]# ls -l sun.txt
-rwxr-xr-x 2 beinan root 29 04-22 21:02 sun.txt
[root@localhost ~]# chown :beinan sun.txt 注:把sun.txt文件的屬組改為beinan
[root@localhost ~]# ls -l sun.txt
-rwxr-xr-x 2 beinan beinan 29 04-22 21:02 sun.txt
[root@localhost ~]# chown root:linuxsir sun.txt 注:把sun.txt的屬主改為root,把改組改為linuxsir用戶組;
[root@localhost ~]# ls -l sun.txt
-rwxr-xr-x 2 root linuxsir 29 04-22 21:02 sun.txt
chown 也提供了-R參數,這個參數對目錄改變屬主和屬組極為有用,我們可以通過加-R參數來改變某個目錄下的所有文件到新的屬主或屬組;
[root@localhost ~]# ls -ld mydir/ 注:查看mydir目錄的屬性
drwxr-xr-x 2 root root 4096 04-25 09:08 mydir/ 注:我們發(fā)現(xiàn)此目錄的屬主是root用戶,屬組是root用戶組;
[root@localhost ~]# ls -lr mydir/ 注:我們查看mydir目錄下的有什么文件,及他們的屬主和屬組;
總計 8
-rwxr-xr-x 2 beinan linuxsir 29 04-22 21:02 sun.txt
-rwxr-xr-x 2 beinan linuxsir 29 04-22 21:02 sun002.txt
lrwxrwxrwx 1 root root 7 04-21 22:16 sun001.txt -> sun.txt
-rw-r--r-- 1 linuxsirorg root 0 04-24 22:37 example.txt
-rw-rw-rw- 1 beinan root 0 04-24 15:05 dony.txt
[root@localhost ~]# chown -R beinan:linuxsir mydir/ 注:我們修改mydir及它的下級目錄和所有文件到新的用戶和用戶組;
[root@localhost ~]# ls -ld mydir/
drwxr-xr-x 2 beinan linuxsir 4096 04-25 09:08 mydir/
[root@localhost ~]# ls -lr mydir/
總計 8
-rwxr-xr-x 2 beinan linuxsir 29 04-22 21:02 sun.txt
-rwxr-xr-x 2 beinan linuxsir 29 04-22 21:02 sun002.txt
lrwxrwxrwx 1 beinan linuxsir 7 04-21 22:16 sun001.txt -> sun.txt
-rw-r--r-- 1 beinan linuxsir 0 04-24 22:37 example.txt
-rw-rw-rw- 1 beinan linuxsir 0 04-24 15:05 dony.txt
值得注意的是chown 和chmod 類似,我們 改變一個目錄下的所有.file時的屬主和屬組時要小心操作。比如我們要改變testdir及它目錄下的所有.file 的屬主和改組時。下面的例子操作是錯誤的。
[root@localhost ~]# ls -ld /root/ 注:查看/root目錄的屬性,主要看他的屬主和屬組;
drwxr-xr-x 19 root root 4096 04-25 09:20 /root/ 注:屬主是root,屬組是root用戶組;
[root@localhost ~]# ls -ld /root/testdir/ 注:查看/root/testdir 目錄的屬主和屬組;
drwxr-xr-x 2 root root 4096 04-25 09:20 /root/testdir/ 注:屬主是root,屬組是root用戶組;
[root@localhost ~]# chown -R beinan:beinan /root/testdir/.* 注:改變/root/testdir目錄下的以.開頭的所有文件(注:假設我們是這么想的)
[root@localhost ~]# ls -ld /root/ 注:查看/root的屬性;
drwxr-xr-x 19 beinan beinan 4096 04-25 09:20 /root/ 注:看到了吧,testdir 目錄的上組目錄/root的屬主和屬組也改變了。
[root@localhost ~]# ls -ld /root/testdir/ 注:查看testdir
drwxr-xr-x 2 beinan beinan 4096 04-25 09:20 /root/testdir/
所以我們用.*來匹配文件時,可能會存在讓chown 誤操作,這樣會連同父目錄的屬主和屬組的歸屬關系也被改變。
7.2 改變文件的屬組工具 chgrp ;
語法:
chgrp [參數選項]... 組 文件...
它的用戶和chown 類似,只不過它僅是用來改變文件或目錄的屬組的;-R參數用于目錄及目錄下所有文件改變屬組的。這和chown也是一樣的。簡單來兩個例子;
例子一:
[root@localhost ~]# ls -l sun.txt
-rw-r--r-- 1 root root 0 04-25 09:38 sun.txt
[root@localhost ~]# chgrp beinan sun.txt 注:改變sun.txt的屬組為beinan用戶組;
[root@localhost ~]# ls -l sun.txt
-rw-r--r-- 1 root beinan 0 04-25 09:38 sun.txt
例子二:
[root@localhost ~]# ls -ld mydir/
drwxr-xr-x 2 root root 4096 04-25 09:08 mydir/
[root@localhost ~]# ls -lr mydir/
總計 8
-rwxr-xr-x 2 root root 29 04-22 21:02 sun.txt
-rwxr-xr-x 2 root root 29 04-22 21:02 sun002.txt
lrwxrwxrwx 1 root root 7 04-21 22:16 sun001.txt -> sun.txt
-rw-r--r-- 1 root root 0 04-24 22:37 example.txt
-rw-rw-rw- 1 root root 0 04-24 15:05 dony.txt
[root@localhost ~]# chgrp -R linuxsir mydir/ 注:改變所mydir及其下面所有的文件及子目錄的屬組為linuxsir;
[root@localhost ~]# ls -ld mydir/
drwxr-xr-x 2 root linuxsir 4096 04-25 09:08 mydir/
[root@localhost ~]# ls -lr mydir/
總計 8
-rwxr-xr-x 2 root linuxsir 29 04-22 21:02 sun.txt
-rwxr-xr-x 2 root linuxsir 29 04-22 21:02 sun002.txt
lrwxrwxrwx 1 root linuxsir 7 04-21 22:16 sun001.txt -> sun.txt
-rw-r--r-- 1 root linuxsir 0 04-24 22:37 example.txt
-rw-rw-rw- 1 root linuxsir 0 04-24 15:05 dony.txt
7.3 文件屬主和屬組的特殊情況 ;
[root@localhost ~]# ls -lh sungood.txt
-rw-r--r-- 1 501 502 85 04-25 13:45 sungood.txt
上面的例子是不是有點怪?因為他的屬主和屬組都是一個數值;這是為什么呢?出現(xiàn)這種情況的原因是系統(tǒng)中不存在與之對應的用戶,所以只能以數字形式顯示了。有時我們刪除了用戶,但沒有刪除其家目錄,這種情況下,它的家目錄的屬主和屬組也會變成數字;
[root@localhost ~]# userdel linuxsir
[root@localhost ~]# ls -ld /home/linuxsir
drwx------ 16 501 502 4096 03-27 02:28 /home/linuxsir
8、影響文件的讀寫執(zhí)行的因素;
之所以把這部份的內容單列出來,是因為這部份的內容是基于我們對用戶管理及文件權限了解的基礎上進行的。比如一個文件的讀、寫、執(zhí)行,它要受到哪幾方面的影響。
一個文件能不能被讀取,要受到它的屬主、屬組及其它用戶權限的影響,還要受到其父目錄權限的影響。我們來舉個例子;
[root@localhost ~]# cd /home 注:進入/home 目錄;
[root@localhost home]# mkdir redhatdir 注:創(chuàng)建一個目錄redhatdir
[root@localhost home]# touch redhatdir/test.txt 注:創(chuàng)建一個文件test.txt
[root@localhost home]# chmod 700 redhatdir/ 注:修改redhatdir的權限 ,為屬主可讀可寫可執(zhí)行,屬組和其它用戶無權限;
[root@localhost home]# ls -ld redhatdir/ 注:查看redhatdir的屬性;
drwx------ 2 root root 4096 04-25 13:01 redhatdir/
[root@localhost home]# ls -lr redhatdir/ 注:查看test.txt 文件的屬性;
總計 0
-rw-r--r-- 1 root root 0 04-25 13:02 test.txt
[root@localhost home]# su beinan 注:我們切換到普通用戶beinan
[beinan@localhost home]$ cd redhatdir/ 注:進入redhatdir目錄,以beinan用戶身份。
bash: cd: redhatdir/: 權限不夠
[beinan@localhost home]$ more redhatdir/test.txt
redhatdir/test.txt: 權限不夠
解釋:我們通過這個例子來看,為什么test.txt在其它用戶權位上擁有可讀權限r--,但我們用普通用戶還不能查看它的內容呢?這是因為他的父目錄沒有其它用戶的何讀權限。我們是不是redhatdir目錄的其它用戶可讀權限打開,就能讓普通用戶beinan能讀取 test.txt的內容了呢??
[root@localhost home]# chmod 704 redhatdir/
[root@localhost home]# ls -ld redhatdir/
drwx---r-- 2 root root 4096 04-25 13:02 redhatdir
[root@localhost home]# su beinan
[beinan@localhost home]$ cd redhatdir/
bash: cd: redhatdir/: 權限不夠
看來如果不設置屬組的權限,只打開屬主的權限及其它用戶在redhatdir目錄的讀權限的情況下,其它用戶是不能訪問的;我們應該把test.txt父目錄的 redhatdir 的屬主的讀、寫、執(zhí)行要打開,還要把父目錄的屬組的讀和執(zhí)行權限打開,其它用戶的讀和執(zhí)行權限打開,也就是要擁有 rwxr-xr-x 權限,這樣文件的其它用戶才能訪問。
[root@localhost home]# chmod 755 redhatdir/
[root@localhost home]# more redhatdir/test.txt
好象這塊說的不太清楚,如果您看不太明白,多多chmod 練習練習,也沒有什么難的。
其實為文件分配權限的最終目的是讓文件的屬主有何權限,讓屬組下的用戶有何權限,讓其它用戶有何權限。文件權限是和用戶管理相關聯(lián)的,所以理解這方面的內容還得了解用戶管理。
9、文件被修改或被訪問的時間;
[root@localhost ~]# ls -l adduml02.sh
-rwxr-xr-x 1 root root 545 04-21 22:26 adduml02.sh
我們通過查看 文件的屬性時,會發(fā)現(xiàn)它的時間標記,比如上面的 04-21 22:26 。這個時間并不代表文件被創(chuàng)建的時候,他是代表文件被訪問或被修改的時間。文件被修改的時間比較好理解,比如我們可以用編輯器來修改文本文件,然后保存一下,這樣文件的時間就變了。
當然也有其它的工具不修改文件的內容,只修改文件的時間,這時可以被稱為訪問時間。比如touch工具能達到這個目的。
[root@localhost ~]# ls -l adduml02.sh
-rwxr-xr-x 1 root root 545 04-21 22:26 adduml02.sh
[root@localhost ~]# touch adduml02.sh 注:更新文件的訪問時間成為當前系統(tǒng)時間;
[root@localhost ~]# ls -l adduml02.sh
-rwxr-xr-x 1 root root 545 04-25 11:21 adduml02.sh
關于touch 的用法, 更多的請參見: man touch或touch --help
10、文件屬性和文件系統(tǒng)屬性的關系;
文件系統(tǒng)的特性決定著文件屬性的定義和修改,比如我們通過 chattr 來鎖定一個文件為不可修改或不可刪除時,要用到chattr 的+i參數;這在ext2和ext3文件系統(tǒng)是有效的,但在reiserfs 文件系統(tǒng)是沒有任何效果的;
[root@localhost ~]# chattr +i lsfile.sh
[root@localhost ~]# lsattr lsfile.sh
----i-------- lsfile.sh
[root@localhost ~]# rm -rf lsfile.sh
rm: 無法刪除 “lsfile.sh”: 不允許的操作
注:如果把lsfile.sh變成可修改可刪除,應該用-i參數;
比如在ext3或ext2 文件系統(tǒng)中,我們要讓一個文件只能追加內容,但不能刪除。應該用chattr的+a參數。
如果您在用ext3文件系統(tǒng),想查看chattr 的幫助,請man chattr 。
聯(lián)系客服