<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 9, comments - 4, trackbacks - 0, articles - 21

    Linux 文件和目錄的屬性

    Posted on 2007-11-15 11:07 一步一步努力向上爬 閱讀(924) 評(píng)論(0)  編輯  收藏 所屬分類: LINUX

    Linux 文件和目錄的屬性

    作者:北南南北
    來(lái)自:LinuxSir.Org
    摘要:本文講述的是文件或目錄的屬性,比如節(jié)點(diǎn)inode、文件類型、文件權(quán)限及歸屬;還對(duì)setuid、setgid及粘貼位進(jìn)行了一般性的講解。對(duì)ln 、chmod、umask、chown、chgrp 、touch 的用法也進(jìn)行了比較詳細(xì)的說(shuō)明和舉例;

    目錄

    1、 Linux 文件的屬性概說(shuō);
    2、 關(guān)于inode;

    3、文件類型;
    4、文件的權(quán)限;

    5、setuid和setgid 位;

    6、粘貼位及設(shè)置方法;
    7、文件或目錄的歸屬關(guān)系;

    8、影響文件的讀寫執(zhí)行的因素;
    9、文件被修改或被訪問(wèn)的時(shí)間;
    10、文件屬性和文件系統(tǒng)屬性的關(guān)系;
    11、關(guān)于本文;
    12、后記;
    13、參考文檔;
    14、相關(guān)文檔;


    +++++++++++++++++++++++++++++++++++++++++++
    正文
    +++++++++++++++++++++++++++++++++++++++++++


    1、 Linux 文件屬性概說(shuō);

    Linux 文件或目錄的屬性主要包括:文件或目錄的節(jié)點(diǎn)、種類、權(quán)限模式、鏈接數(shù)量、所歸屬的用戶和用戶組、最近訪問(wèn)或修改的時(shí)間等內(nèi)容;

    [root@localhost ~]# ls -lih
    總計(jì) 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
    第二字段:文件種類和權(quán)限;
    第三字段: 硬鏈接個(gè)數(shù);
    第四字段: 屬主;
    第五字段:所歸屬的組;
    第六字段:文件或目錄的大小;
    第七字段和第八字段:最后訪問(wèn)或修改時(shí)間;
    第九字段:文件名或目錄名

    我們以lsfile.sh為例:

    2408949 -rwxr-xr-x 1 root root    7 04-21 12:47 lsfile.sh

    inode 的值是:2408949
    文件類型:文件類型是-,表示這是一個(gè)普通文件; 關(guān)于文件的類型,請(qǐng)參考:《Linux 文件類型和文件擴(kuò)展》
    文件權(quán)限:文件權(quán)限是rwxr-xr-x ,表示文件屬主可讀、可寫、可執(zhí)行,文件所歸屬的用戶組可讀可執(zhí)行,其它用戶可讀可執(zhí)行;
    硬鏈接個(gè)數(shù): lsfile.sh這個(gè)文件沒(méi)有硬鏈接;因?yàn)閿?shù)值是1,就是他本身;
    文件屬主:也就是這個(gè)文件歸哪于哪個(gè)用戶 ,它歸于root,也就是第一個(gè)root;
    文件屬組:也就是說(shuō),對(duì)于這個(gè)文件,它歸屬于哪個(gè)用戶組,在這里是root用戶組;
    文件大小:文件大小是7個(gè)字節(jié);
    訪問(wèn)可修改時(shí)間 :這里的時(shí)間是最后訪問(wèn)的時(shí)間,最后訪問(wèn)和文件被修改或創(chuàng)建的時(shí)間,有時(shí)并不是一致的;

    當(dāng)然文檔的屬性不僅僅包括這些,這些是我們最常用的一些屬性。我們把比較重要的說(shuō)一說(shuō),比如文件所歸屬的種類、權(quán)限、硬鏈接個(gè)數(shù) ... ...


    2、 關(guān)于inode;

    inode 譯成中文就是索引節(jié)點(diǎn)。每個(gè)存儲(chǔ)設(shè)備或存儲(chǔ)設(shè)備的分區(qū)(存儲(chǔ)設(shè)備是硬盤、軟盤、U盤 ... ... )被格式化為文件系統(tǒng)后,應(yīng)該有兩部份,一部份是inode,另一部份是Block,Block是用來(lái)存儲(chǔ)數(shù)據(jù)用的。而inode呢,就是用來(lái)存儲(chǔ)這些數(shù) 據(jù)的信息,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權(quán)限等。inode為每個(gè)文件進(jìn)行信息索引,所以就有了inode的數(shù)值。操作系統(tǒng)根據(jù)指令, 能通過(guò)inode值最快的找到相對(duì)應(yīng)的文件。

    做個(gè)比喻,比如一本書,存儲(chǔ)設(shè)備或分區(qū)就相當(dāng)于這本書,Block相當(dāng)于書中的每一頁(yè),inode 就相當(dāng)于這本書前面的目錄,一本書有很多的內(nèi)容,如果想查找某部份的內(nèi)容,我們可以先查目錄,通過(guò)目錄能最快的找到我們想要看的內(nèi)容。雖然不太恰當(dāng),但還是比較形象。

    當(dāng)我們用ls 查看某個(gè)目錄或文件時(shí),如果加上-i 參數(shù),就可以看到inode節(jié)點(diǎn)了;比如我們前面所說(shuō)的例子;

    [root@localhost ~]# ls -li lsfile.sh
    2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh

    lsfile.sh 的inode值是 2408949 ; 查看一個(gè)文件或目錄的inode,要通過(guò)ls 命令的的 -i參數(shù)。


    2.10 inode 相同的文件是硬鏈接文件;

    在Linux 文件系統(tǒng)中,inode值相同的文件是硬鏈接文件,也就是說(shuō),不同的文件名,inode可能是相同的,一個(gè)inode值可以對(duì)應(yīng)多個(gè)文件。理解鏈接文件并不難,看看例子就會(huì)了。在Linux中,鏈接文件是通過(guò)ln工具來(lái)創(chuàng)建的。


    2.11 創(chuàng)建硬鏈接,硬鏈接和源文件關(guān)系;

    用ln 創(chuàng)建文件硬鏈接的語(yǔ)法:

    # ln   源文件   目標(biāo)文件

    下面我們舉一個(gè)例子,在這個(gè)例子中,我們要為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  注:我們通過(guò)ln 來(lái)創(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在沒(méi)有創(chuàng)建硬鏈接文件sun002.txt的時(shí)候,其鏈接個(gè)數(shù)是1(也就是-rw-r--r--后的那個(gè)數(shù)值),創(chuàng)建了 硬鏈接sun002.txt創(chuàng)建后,這個(gè)值變成了2。也就是說(shuō),我們每次為sun.txt創(chuàng)建一個(gè)新的硬鏈接文件后,其硬鏈接個(gè)數(shù)都會(huì)增加1。

    inode值相同的文件,他們的關(guān)系是互為硬鏈接的關(guān)系。當(dāng)我們修改其中一個(gè)文件的內(nèi)容時(shí),互為硬鏈接的文件的內(nèi)容也會(huì)跟著變化。如果我們刪除互為 硬鏈接關(guān)系的某個(gè)文件時(shí),其它的文件并不受影響。比如我們把sun.txt刪除后,我們還是一樣能看到sun002.txt的內(nèi)容,并且 sun02.txt仍是存在的。

    可以這么理解,互為硬鏈接關(guān)系的文件,他們好象是克隆體,他們的屬性幾乎是完全一樣;

    下面的例子,我們把sun.txt刪除,然后我們看一下sun002.txt 是不是能看到其內(nèi)容。

    [root@localhost ~]# rm -rf sun.txt
    [root@localhost ~]# more sun002.txt 

    注意:硬鏈接不能為目錄創(chuàng)建,只有文件才能創(chuàng)建硬鏈接。


    2.12 軟鏈接的創(chuàng)建,及軟接與源文件的關(guān)系;

    創(chuàng)建軟鏈接(也被稱為符號(hào)鏈接)的語(yǔ)法;

    # ln   -s  源文文件或目錄     目標(biāo)文件或目錄

    軟鏈接也叫符號(hào)鏈接,他和硬鏈接有所不同,軟鏈接文件只是其源文件的一個(gè)標(biāo)記。當(dāng)我們刪除了源文件后,鏈接文件不能獨(dú)立存在,雖然仍保留文件名,但我們卻不能查看軟鏈接文件的內(nèi)容了。

    [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)建或修改時(shí)間等... ...我們來(lái)對(duì)比一下:

    首先 對(duì)比一下節(jié)點(diǎn):兩個(gè)文件的節(jié)點(diǎn)不同;
    其次 兩個(gè)文件的歸屬的種類不同 linuxsir001.txt是-,也就是普通文件,而linuxsir002.txt 是l,它是一個(gè)鏈接文件;
    第三 兩個(gè)文件的讀寫權(quán)限不同 linuxsir001.txt 是rw-r--r-- ,而linuxsir002.txt的讀寫權(quán)限是 rwxrwxrwx
    第三 兩者的硬鏈接個(gè)數(shù)相同;都是1
    第四 兩文件的屬主和所歸屬的用戶組相同;
    第五 修改(或訪問(wèn)、創(chuàng)建)時(shí)間不同;

    我們還注意到了linuxsir002.txt 后面有一個(gè)標(biāo)記 ->,這表示linuxsir002.txt 是linuxsir001.txt的軟鏈接文件。

    值得我們注意的是:當(dāng)我們修改鏈接文件的內(nèi)容時(shí),就意味著我們?cè)谛薷脑次募膬?nèi)容。當(dāng)然源文件的屬性也會(huì)發(fā)生改變,鏈接文件的屬性并不會(huì)發(fā)生變化。當(dāng)我們把源文件刪除后,鏈接文件只存在一個(gè)文件名,因?yàn)槭チ嗽次募攒涙溄游募簿筒淮嬖诹恕_@一點(diǎn)和硬鏈接是不同的;

    [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的內(nèi)容; 
    linuxsir002.txt: 沒(méi)有那個(gè)文件或目錄       注:得到提示,linuxsir002.txt不存在。

    上面的例子告訴我們,如果一個(gè)鏈接文件失去了源,就意味著他已經(jīng)不存在了;

    我們可以看到軟鏈接文件,其實(shí)只是源文件的一個(gè)標(biāo)記,當(dāng)源文件失去時(shí),他也就是存在了。軟鏈接文件只是占用了inode來(lái)存儲(chǔ)軟鏈接文件屬性等信息,但文件存儲(chǔ)是指向源文件的。

    軟件鏈接,可以為文件或目錄都適用。無(wú)論是軟鏈接還是硬鏈接,都可以用rm來(lái)刪除。rm工具是通用的。


    3、文件類型;

    當(dāng)用ls指令的長(zhǎng)格式顯示文件或目錄的屬性時(shí);比如:

    [root@localhost ~]# ls -lih
    總計(jì) 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

    我們來(lái)看一下lsfile.sh這行,其中有這樣一個(gè)字段 -rwxr-xr-x 。這個(gè)字段包括兩個(gè)信息,一是文件類型,二是文件的權(quán)限;文件類型就第一個(gè)字符,lsfile.sh的文件所歸屬的文件種類是- 。同理 mkuml-2004.07.17的這段是drwxr-xr-x,它所歸屬的文件種類應(yīng)該是d;sun001.txt文件呢,對(duì)應(yīng)的 lrwxrwxrwx,sun001.txt所歸屬的文件種類應(yīng)該是-l 。

    我們可以知道Linux文件可以分為如普通文件、目錄、符號(hào)鏈接文件、字符和塊設(shè)備文件、套接口文件等。

    詳情請(qǐng)參考 :《Linux 文件類型和文件的擴(kuò)展名》


    4、文件的權(quán)限;

    Linux文件或目錄的權(quán)限是和用戶和用戶組聯(lián)系在一起的,所以理解這部份內(nèi)容,您首先得了解一下Linux用戶管理方面的知識(shí) 。請(qǐng)參考 :《Linux 用戶(user)和用戶組(group)管理概述》。如果您是新手,要把這篇文檔的相關(guān)文檔也了解一下,這對(duì)您理解本文真的很重要;

    每個(gè)文件或目錄都有一組9個(gè)權(quán)限位,每三位被分為一組,他們分別是屬主權(quán)限位(占三個(gè)位置 )、用戶組權(quán)限位(占三個(gè)位置)、其它用戶權(quán)限位(占三個(gè)位置)。比如rwxr-xr-x ,我們數(shù)一下就知道是不是9個(gè)位置了,正是這9個(gè)權(quán)限位來(lái)控制文件屬主、用戶組以及其它用戶的權(quán)限。


    4.1 關(guān)于權(quán)限位;

    Linux文件或目錄的權(quán)限位是由 9 個(gè)權(quán)限位來(lái)控制,每三位為一組,它們分別是文件屬主(Ower)的讀、寫、執(zhí)行,用戶組(Group)的讀、寫、執(zhí)行以及(Other)其它用戶的讀、寫、執(zhí)行;

    文件屬主: 讀r、寫w、執(zhí)行x
    用 戶 組 : 讀r、寫w、執(zhí)行x
    其它用戶: 讀r、寫w、執(zhí)行x

    如果權(quán)限位不可讀、不可寫、不可執(zhí)行,是用-來(lái)表示。


    對(duì)于普通文件的讀、寫、執(zhí)行權(quán)限可以這樣理解:

    可讀:意味著我們可以查看閱讀;
    可寫:意味著,可以修改或刪除(不過(guò)刪除或修改的權(quán)限受父目錄上的權(quán)限控制);
    可執(zhí)行:意味著如果文件就可以運(yùn)行,比如二進(jìn)制文件(比如命令),或腳本(要用腳本語(yǔ)言解釋器來(lái)解釋運(yùn)行)。

    比如:

    [root@localhost ~]# ls -l lsfile.sh
    -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh

    第一個(gè)字段 -rwxr-xr-x中的第一個(gè)字符是-,表示lsfile.sh是一個(gè)普通文件;

    lsfile.sh的權(quán)限是 rwxr-xr-x。表示lsfile.sh文件,文件的屬主root,擁有rwx(可讀、可寫、可執(zhí)行)權(quán)限,用戶組root,擁有 r-x(可讀、可寫)權(quán)限 ,其它用戶擁有 r-x(可讀、可寫)權(quán)限。這9個(gè)權(quán)限連在一起就是 rwxr-xr-x,也就是說(shuō),lsfile.sh 文件,文件屬主root擁有可讀、可寫、可執(zhí)行權(quán)限,用戶組root下的所有用戶擁有可讀可執(zhí)行權(quán)限,其它用戶擁有可讀可執(zhí)行權(quán)限。

    查看文件的屬性用 ls -l 文件 ;查看目錄的屬性是 ls -d 目錄。請(qǐng)參考 :


    4.2 改變權(quán)限的命令 chmod ;

    chmod 是用來(lái)改變文件或目錄權(quán)限的命令,但只有文件的屬主和超級(jí)權(quán)限用戶root才有這種權(quán)限。通過(guò)chmod 來(lái)改變文件或目錄的權(quán)限有兩種方法,一種是通過(guò)八進(jìn)制的語(yǔ)法,另一種是通過(guò)助記語(yǔ)法;

    舉例:

    [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    注:通過(guò)八進(jìn)制語(yǔ)法來(lái)改變linuxsir007.txt的權(quán)限;
    [root@localhost ~]# chmod u+x,og+x linuxsir008.txt  注:通過(guò)助記語(yǔ)法來(lái)改變linuxsir008.txt的權(quán)限;
    [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

    上 面例子是一個(gè)演示通過(guò)chmod的兩種語(yǔ)法來(lái)改變權(quán)限的例子,我所要說(shuō)明的是,兩種方法都能達(dá)到同一目的。

    這個(gè)過(guò)程是:

    首先:創(chuàng)建linuxsir007.txt和linuxsir008.txt兩個(gè)文件;
    其次:查看兩個(gè)文件的屬性;他們的權(quán)限都是一樣的,都是 rw-r--r-- ,表示文件屬主可讀可寫、文件所歸屬的用戶組對(duì)文件可讀、其它用戶可讀;
    第三:通過(guò)chmod的八進(jìn)制語(yǔ)法來(lái)改變linuxsir007.txt 的權(quán)限;通過(guò)chmod的助記語(yǔ)法來(lái)改變linuxsir008.txt的權(quán)限; 我們用兩種方法來(lái)改變linuxsir007.txt和linuxsir008.txt 文件,通過(guò)chmod的兩種不同的語(yǔ)法來(lái)讓兩個(gè)文件的權(quán)限達(dá)以一致。在八進(jìn)制語(yǔ)法中,我們用了 755 ,而在助記語(yǔ)法中,我們用了 u+x,og+x。雖然用了兩種不同的語(yǔ)法,但達(dá)到的目的是一樣的,最后的結(jié)果,我們可以看到兩個(gè)文件的權(quán)限都是 rwxr-xr-x。也就是說(shuō)文件的屬主對(duì)文件有可讀可寫可執(zhí)行的權(quán)限,文件所歸屬的用戶組有可讀可執(zhí)行的權(quán)限,其它用戶有可讀可執(zhí)行的權(quán)限。

    由此我們引出了通過(guò)chmod 工具來(lái)改變文件或目錄權(quán)限的的兩種方法:chmod 的八進(jìn)制語(yǔ)法,chmod的助記語(yǔ)法;


    4.21 通過(guò) chmod 八進(jìn)制語(yǔ)法來(lái)改變文件或目錄的權(quán)限;

    我們前面已經(jīng)說(shuō)了,文件或目錄的權(quán)限位總共有9個(gè)位置 ,文件屬主、文件所歸屬的組占用三位和其它用戶各占用三個(gè)位置。看個(gè)例子:

    -rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir007.txt 

    說(shuō)明:

    屬主權(quán)限位:占用三個(gè)位置,三個(gè)位置的順序是讀r、寫w、執(zhí)行x。如果是沒(méi)有權(quán)限,則為-。在這個(gè)例子中,我們看到rwx,表示屬主在三個(gè)權(quán)位上都有權(quán)限,也就是可讀可寫可執(zhí)行;
    屬組權(quán)限位:占用三個(gè)位置,三個(gè)位置的順序是讀r、寫w、執(zhí)行x。如果是沒(méi)有權(quán)限,則為-。在這個(gè)例子中,我們看到的是r-x,在寫的位置上是-,表示沒(méi)有寫權(quán)限,文件所歸屬的組對(duì)文件擁有的是可讀可執(zhí)行,但沒(méi)有寫的權(quán)限。
    其它用戶權(quán)限位:占用三個(gè)位置 ,三個(gè)位置的順序是讀r、寫w、執(zhí)行x,如果是沒(méi)有權(quán)限,則為-。在這個(gè)例子中,我們看其它用戶的權(quán)限位是r-x,在寫的位置上是-,表示沒(méi)有寫權(quán)限,文件所歸屬的組對(duì)文件擁有的是可讀可執(zhí)行,但沒(méi)有寫的權(quán)限。


    chmod 的八進(jìn)制語(yǔ)法的數(shù)字說(shuō)明;

    r     4
    w 2
    x 1
    - 0

    屬主的權(quán)限用數(shù)字表達(dá):屬主的那三個(gè)權(quán)限位的數(shù)字加起來(lái)的總和。比如上面的例子中屬主的權(quán)限是rwx ,也就是4+2+1 ,應(yīng)該是7;
    屬組的權(quán)限用數(shù)字表達(dá):屬組的那個(gè)權(quán)限位數(shù)字的相加的總和。比如上面的例子中的r-x ,也就是4+0+1 ,應(yīng)該是5;
    其它用戶的權(quán)限數(shù)字表達(dá):其它用戶權(quán)限位的數(shù)字相加的總和。比如上面例子中是 r-x ,也就是4+0+1 ,應(yīng)該是5;

    [root@localhost ~]# ls -l sun.txt
    -rwxr-xr-x 2 root root 29 04-22 21:02 sun.txt 注:查看sun.txt的屬性,我們看到sun.txt的權(quán)限位是rwxr-xr-x,用八進(jìn)制數(shù)字表示是755 ;

    [root@localhost ~]# chmod 644 sun.txt  注;我們改變它的權(quán)限為屬主可讀可寫、屬組可讀、其它用戶可讀,也就是rw-r--r--,用數(shù)字表示就是644;

    [root@localhost ~]# ls -l sun.txt
    -rw-r--r-- 2 root root 29 04-22 21:02 sun.txt 注:是不是達(dá)到目的了?是的!


    每個(gè)三位的權(quán)限代碼(分別是屬主、屬組,其它用戶)組合,有8種可能;

    八進(jìn)制數(shù)字				  權(quán)限         
    0 ---
    1 --x
    2 -w-
    3 -wx
    4 r--
    5 r-x
    6 rw-
    7 rwx

    注解:我們可以根據(jù)上面的數(shù)字列表來(lái)組合權(quán)限,比如我想讓屬主擁有 rwx(所對(duì)應(yīng)的數(shù)字是7),屬組擁有 --x(所對(duì)應(yīng)的數(shù)字是1),其它用戶擁有 ---(所對(duì)應(yīng)的數(shù)字是0),這樣我們把各組的權(quán)限組合起來(lái)就是是 rwx--x---(對(duì)應(yīng)的數(shù)字是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


    如果我們想改變的僅僅是打開(kāi)目錄的權(quán)限 ,不用加任何參數(shù)。如果想把目錄以下的所有文件或子目錄改變,應(yīng)該加-R參數(shù);

    [root@localhost ~]# ls -ld testdir/
    drwxr-xr-x 3 root root 4096 04-24 11:01 testdir/

    [root@localhost ~]# ls -lr  testdir/
    總計(jì) 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的權(quán)限,讓其擁有屬主可讀可寫、屬組可讀、其它用戶可讀,也就是rw-r--r-- ,用八進(jìn)制的算數(shù)應(yīng)該是644。

    [root@localhost ~]# ls -ld testdir/  注:我們查看到的testdir目錄的權(quán)限是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及其子目錄和文件權(quán)限都要改變?yōu)? rw-r--r--權(quán)限。我們要用到-R參數(shù);

    [root@localhost ~]# chmod -R 644 testdir/ 注:我們改變testdir下所有的文件或子目錄的權(quán)限都為 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/
    總計(jì) 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 改變一個(gè)目錄下的所有.file時(shí),要小心操作。比如我們要改變testdir下的所有.file 的權(quán)限為 rwxr--r--,但我們不想改變testdir目錄的權(quán)限 。下面的例子操作是錯(cuò)誤的。

    [root@localhost ~]# ls -ld testdir/
    drw-r--r-- 3 root root 4096 04-24 11:01 testdir/

    [root@localhost ~]# ls -lr testdir/
    總計(jì) 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/.*  注:這樣操作,會(huì)把testdir目錄的權(quán)限一并改為  rwxr--r--

    [root@localhost ~]# ls -ld testdir/
    drwxr-xr-x 3 root root 4096 04-24 11:01 testdir/ 

    所以當(dāng)您想改變一個(gè)目錄下的所有.file權(quán)限,并且想保留該目錄的原有權(quán)限時(shí),請(qǐng)不要用.*通配符。至于應(yīng)該怎么做,我想大家都明白。比如下面的匹配;

    [root@localhost ~]# chmod -R 644  testdir/.[a-z]*

    上面的例子chmod 會(huì)匹配所有以.a到.z 開(kāi)頭的文件。


    4.22 通過(guò) chmod 助記語(yǔ)法來(lái)改變文件或目錄的權(quán)限;

    chmod 的助記語(yǔ)法相對(duì)簡(jiǎn)單,對(duì)文件或目錄權(quán)限的改變時(shí),是通過(guò)比較直觀的字符的形式來(lái)完成;在助記語(yǔ)法中,相關(guān)字母的定義;


    用戶或用戶組定義:

    u 代表屬主
    g 代表屬組
    o 代表其它用戶
    a 代表屬主、屬組和其它用戶,也就是上面三個(gè)用戶(或組)的所有;


    權(quán)限定義字母:
    r 代表讀權(quán)限;
    w 代表寫權(quán)限;
    x 代表執(zhí)行權(quán)限;


    權(quán)限增減字符;

    - 代表減去相關(guān)權(quán)限;
    + 代表增加相關(guān)權(quán)限;

    示例一:

    [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í)行權(quán)限都減掉;

    [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í)行權(quán)限 

    [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  注:減去文件屬主對(duì)文件的執(zhí)行權(quán),增加屬組和其它用戶對(duì)文件的可讀可寫權(quán);

    [root@localhost ~]# ls -l linuxsir007.txt
    -rw-rw-rw- 1 root root 0 04-23 20:11 linuxsir007.txt

    用助記語(yǔ)法比較靈活,組合起來(lái)比較方便;比如;

    u=r+x 為文件屬主添加讀寫權(quán)限;
    ug=rwx,o=r 為屬主和屬組添加讀、寫、執(zhí)行權(quán)限,為其它用戶設(shè)置讀權(quán)限。
    a+x 為文件的屬主、屬組和其它用戶添加執(zhí)行權(quán)限;
    g=u 讓文件的屬組和屬主和權(quán)限相同;

    對(duì)于目錄權(quán)限的設(shè)置,要用到-R參數(shù);

    和八進(jìn)制方法一樣,如果我們?yōu)橐粋€(gè)目錄及其下的子目錄和文件具有相同的屬性,就可以用-R參數(shù);

    [root@localhost ~]# chmod -R a+rwx testdir/
    [root@localhost ~]# ls -lr testdir/
    總計(jì) 4
    -rwxrwxrwx 1 root root    0 04-24 11:01 sir01.txt
    drwxrwxrwx 2 root root 4096 04-24 11:01 linuxsir


    4.3 默認(rèn)權(quán)限分配的命令 umask ;

    umask 是通過(guò)八進(jìn)制的數(shù)值來(lái)定義用戶創(chuàng)建文件或目錄的默認(rèn)權(quán)限。umask 表示的是禁止權(quán)限。不過(guò)文件和目錄有點(diǎn)不同。

    對(duì)于文件來(lái)說(shuō),umask 的設(shè)置是在假定文件擁有八進(jìn)制666權(quán)限上進(jìn)行,文件的權(quán)限就是是666減去umask的掩碼數(shù)值;
    對(duì)于目錄來(lái)說(shuō),umask 的設(shè)置是在假定文件擁有八進(jìn)制777權(quán)限上進(jìn)行,目錄八進(jìn)制權(quán)限777減去umask的掩碼數(shù)值;

    實(shí)例一:

    [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

    實(shí)例二:

    系統(tǒng)用戶的家目錄的權(quán)限是通過(guò)在配置文件中指定的,比如Fedora 中是用的 /etc/login.defs文件;

    其中有這樣一段:

    CREATE_HOME     yes
    UMASK           077

    表示的意思是,當(dāng)我們創(chuàng)建用戶時(shí),他的家目錄umask的數(shù)值是077 。我們?cè)趺蠢斫膺@個(gè)077呢。當(dāng)用戶添加時(shí),系統(tǒng)自動(dòng)在/home中創(chuàng)建用戶的家目錄,并且設(shè)置它的權(quán)限為777-077=711 ,也就是rwx------ ;我們看一下/home下的某個(gè)用戶的家目錄是不是這樣的呢?

    [root@localhost ~]# ls -ld ~beinan
    drwx------ 36 beinan beinan 4096 04-24 15:08 /home/beinan

    umask 一般都是放在用戶相關(guān)SHELL的配置文件中,比如用戶家目錄下的.bashrc 或.profile ,也可以放在全局性的用戶配置文件中,比如 /etc/login.defs,還可以放在SHELL全局的配置文件中,比如/etc/profile 或/etc/bashrc或/etc/csh.cshrc 等;

    umask 放在相關(guān)的配置文件中,目的是當(dāng)管理員創(chuàng)建用戶時(shí),系統(tǒng)會(huì)自動(dòng)為用戶創(chuàng)建文件或目錄時(shí)配置默認(rèn)的權(quán)限代碼。


    5、setuid和setgid 位;

    本部份內(nèi)容做為了解,看看就行了;


    5.1 setuid和setgid的解說(shuō) ;

    setuid 和setgid位是讓普通用戶可以以root用戶的角色運(yùn)行只有root帳號(hào)才能運(yùn)行的程序或命令。比如我們用普通用戶運(yùn)行passwd命令來(lái)更改自己的口令,實(shí)際上最終更改的是/etc/passwd文件。我們知道/etc/passwd文件是用戶管理的配置文件,只有root權(quán)限的用戶才能更改。

    [root@localhost ~]# ls -l /etc/passwd
    -rw-r--r-- 1 root root 2379 04-21 13:18 /etc/passwd

    作為普通用戶如果修改自己的口令通過(guò)修改/etc/passwd肯定是不可完成的任務(wù),但是不是可以通過(guò)一個(gè)命令來(lái)修改呢。答案是肯定的,作為普通用戶可以通過(guò)passwd 來(lái)修改自己的口令。這歸功于passwd命令的權(quán)限。我們來(lái)看一下;

    [root@localhost ~]# ls -l /usr/bin/passwd
    -r-s--x--x 1 root root 21944 02-12 16:15 /usr/bin/passwd

    因?yàn)?usr/bin/passwd 文件已經(jīng)設(shè)置了setuid 權(quán)限位(也就是r-s--x--x中的s),所以普通用戶能臨時(shí)變成root,間接的修改/etc/passwd,以達(dá)到修改自己口令的權(quán)限。

    我們?cè)?a >《Linux 系統(tǒng)中的超級(jí)權(quán)限的控制》中 有提到過(guò)。我們知道Linux的用戶管理是極為嚴(yán)格的,不同的用戶擁有不同的權(quán)限,為了完成只有root用戶才能完成的工作,我們必須為普通用戶提升權(quán) 限,最常用的方法就是su或sudo。雖然setuid 和setgid也是讓普通用戶超越自身?yè)碛械钠胀?quán)限達(dá)到root權(quán)限的方法,但我不推薦大家使用,因?yàn)樗転橄到y(tǒng)帶來(lái)安全隱患!!

    注意:setuid和setgid會(huì)面臨風(fēng)險(xiǎn),所以盡可能的少用,了解了解既可~~~


    5.2 setuid和setgid的實(shí)例應(yīng)用;

    我們想讓一個(gè)普通用戶beinan擁有root用戶擁有超級(jí)rm刪除權(quán)限,我們除了用su或sudo 臨時(shí)切換到 root身份操作以外,還能怎么做呢???

    [root@localhost ~]#cd /home  注:進(jìn)入/home目錄
    [root@localhost home]# touch beinantest.txt  注:創(chuàng)建一個(gè)測(cè)試文件;

    [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  注:以普通用戶身份來(lái)刪除beinantest.txt文件;

    rm: 無(wú)法刪除 “beinantest.txt”: 權(quán)限不夠

    那我們?cè)趺床拍茏宐einan 這個(gè)普通用戶也擁有root超級(jí)的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  注:設(shè)置rm的權(quán)限為4755 , 就把setuid 位設(shè)置好了。
    [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文件;

    我們只是設(shè)置了rm的setuid位,讓普通用戶在rm指令上有超級(jí)root的刪除超級(jí)權(quán)力。

    通過(guò)這個(gè)例子,我們應(yīng)該能明白setuid和setgid位的應(yīng)用了,如同前面所說(shuō),讓普通用戶超越本身的能力,讓普通用戶能執(zhí)行只有root才能執(zhí)行的命令。在這一點(diǎn),我們要和su和sudo 區(qū)分開(kāi)來(lái)。請(qǐng)參見(jiàn)su和sudo的文檔:《Linux 系統(tǒng)中的超級(jí)權(quán)限的控制》


    5.3 setuid和setgid的設(shè)置方法;


    第一種方法:八進(jìn)制方法:

    setuid位是的設(shè)置用八進(jìn)制的4000,setgid占用的是八進(jìn)制的2000 ;比如我們前面所說(shuō)的 chmod 4755 /bin/rm 就是設(shè)置的setuid位;

    至于setuid的設(shè)置方法,只是在我們通過(guò)chmod設(shè)置文件或目錄權(quán)限位的八進(jìn)制方法的前面多加一個(gè)數(shù)字,也就是4。比如:

    [root@localhost ~]# chmod 4755 /bin/rm  注:設(shè)置rm的權(quán)限為4755 , 就把setuid 位設(shè)置好了。


    作為setgid 位占用的是八進(jìn)制的2000位,我們下面舉個(gè)例子;

    [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這個(gè)目錄,經(jīng)過(guò)改變權(quán)限后的,目錄所歸屬用戶組的那三個(gè)權(quán)限位是 r-s。 如果我們見(jiàn)到的是小寫的s,表明文件所歸屬的用戶組位有執(zhí)行權(quán)限x。因?yàn)槲覀冇昧?755 ,意思是說(shuō)文件屬主擁有可讀可寫可執(zhí)行權(quán)限,所歸屬的用戶組擁有可讀可執(zhí)行權(quán)限,并且設(shè)置了setuid,所以這時(shí)本來(lái)文件所歸屬的用戶組擁有r-x,現(xiàn) 在加了setgid位,就把其中的x換成了s。如果文件所歸屬的用戶組沒(méi)有執(zhí)行權(quán)限,這個(gè)權(quán)限應(yīng)該是S。同理setuid位的中的大寫的S和小寫的s,也 是這個(gè)原理。見(jiàn)下面的例子;

    [root@localhost home]# chmod 2740  slackdir/
    [root@localhost home]# ls -ld slackdir/
    drwxr-S--- 2 root root 4096 04-24 18:25 slackdir/

    這個(gè)例子是因?yàn)槟夸泂lackdir所歸屬的組沒(méi)有執(zhí)行權(quán)限,這時(shí)本來(lái)在執(zhí)行權(quán)限位上顯示-,由于有了setuid,所以顯示為S。

    如果我們?yōu)橐粋€(gè)文件的權(quán)限擁有 屬主可讀可寫可執(zhí)行、所歸的組擁有可讀可執(zhí)行,其它用戶可讀可執(zhí)行,并且同時(shí)設(shè)置setuid和setgid位,我們應(yīng)該怎么運(yùn)行命令呢?

    [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

    所以,同時(shí)設(shè)置setuid和setgid,就是把setuid和setgid兩個(gè)八進(jìn)位的值相加 (4000+2000=6000),然后加上文件或目錄的權(quán)限位的三位數(shù)值(上面的例子是755),然后通過(guò)chmod 運(yùn)行就行了。所以上面例子中用了6755 。


    第二種方法:通過(guò)助記語(yǔ)法;

    還是延用chmod的助記語(yǔ)法,通過(guò)u+s 或u-s 來(lái)增減setuid位,同理,我們可以通過(guò)g+s 或g-s 來(lái)setgid位;

    [root@localhost ~]# touch  mydoc.txt  注:創(chuàng)建一個(gè)文件;

    [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命令來(lái)查看setuid和setgid位,當(dāng)然也能用file來(lái)查看文件的類型;

    比如:

    [root@localhost ~]# file /usr/bin/passwd


    6、粘貼位及設(shè)置方法;

    粘貼位的理解,我們還是先看一個(gè)例子;

    [root@localhost ~]# ls -ld /tmp/

    drwxrwxrwt 12 root root 4096 04-24 18:36 /tmp/

    我們看到/tmp權(quán)限位最后的一個(gè)字母是 t。這就是設(shè)置了粘貼位。

    粘貼位的設(shè)置,可以用八進(jìn)制的1000位來(lái)設(shè)置。比如

    [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 的助記語(yǔ)法來(lái)設(shè)置。用o+t表示設(shè)置粘帖位,用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)在也很少用了,不過(guò)對(duì)于象/tmp目錄這樣的,是整個(gè)系統(tǒng)臨時(shí)文件存放在,還是有點(diǎn)意義。一個(gè)目錄既使它的所有權(quán)限都開(kāi)放 rwxrwxrwx,如果是設(shè)置了粘帖位,除非目錄的屬主和root用戶有權(quán)限刪除它,除此之外其它用戶不能刪除這個(gè)目錄。用途一般是把一個(gè)文件夾的的權(quán) 限都打開(kāi),然后來(lái)共享文件,象/tmp目錄一樣。

    建議最好不要用!


    7、文件或目錄的歸屬關(guān)系;

    文件或目錄的歸屬關(guān)系主要定義文件歸屬哪個(gè)用戶所有及歸于哪個(gè)用戶組所有。

    [root@localhost ~]# ls -ld dony.txt
    -rw-rw-rw- 1 root root 0 04-24 15:05 dony.txt

    上面的例子表示,dony.txt 這個(gè)文件,其屬主是root,歸屬的組是root用戶組,而root用戶所擁有的權(quán)限是rw-,root用戶組擁有的權(quán)限是rw-。

    有時(shí)我們可能不理解,為什么Linux要設(shè)置文件的屬主、屬組,為什么還要為屬主、屬組和其它用戶都要設(shè)置權(quán)限呢??我們?cè)谝郧暗奈臋n說(shuō)過(guò), Linux是多用戶的操作系統(tǒng),文件的安全性對(duì)Linux是極為重要的,Linux的安全性主要表示在用戶管理和權(quán)限(用戶的權(quán)限及文件的權(quán)限)管理上。


    7.1 改變文件的當(dāng)屬關(guān)系的工具 chown ;

    當(dāng)我們要改變一個(gè)文件的屬組,我們所使用的用戶必須是該文件的屬主而且同時(shí)是目標(biāo)屬組成員,或超級(jí)用戶。只有超級(jí)用戶的才能改變文件的屬主。

    chown 語(yǔ)法:

    #chown [選項(xiàng)]... [所有者][:[組]] 文件...

    舉例:將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 所接的新的屬主和新的屬組之間應(yīng)該以.或:連接,屬主和屬組之一可以為空。如果屬主為空,應(yīng)該是 :屬組 ;如果屬組為空 就就不必需要.或:了。

    [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參數(shù),這個(gè)參數(shù)對(duì)目錄改變屬主和屬組極為有用,我們可以通過(guò)加-R參數(shù)來(lái)改變某個(gè)目錄下的所有文件到新的屬主或?qū)俳M;

    [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目錄下的有什么文件,及他們的屬主和屬組;
    總計(jì) 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及它的下級(jí)目錄和所有文件到新的用戶和用戶組;

    [root@localhost ~]# ls -ld mydir/
    drwxr-xr-x 2 beinan linuxsir 4096 04-25 09:08 mydir/

    [root@localhost ~]# ls -lr mydir/
    總計(jì) 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 類似,我們 改變一個(gè)目錄下的所有.file時(shí)的屬主和屬組時(shí)要小心操作。比如我們要改變testdir及它目錄下的所有.file 的屬主和改組時(shí)。下面的例子操作是錯(cuò)誤的。

    [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目錄下的以.開(kāi)頭的所有文件(注:假設(shè)我們是這么想的)

    [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/


    所以我們用.*來(lái)匹配文件時(shí),可能會(huì)存在讓chown 誤操作,這樣會(huì)連同父目錄的屬主和屬組的歸屬關(guān)系也被改變。


    7.2 改變文件的屬組工具 chgrp ;

    語(yǔ)法:

    chgrp [參數(shù)選項(xiàng)]... 組 文件...

    它的用戶和chown 類似,只不過(guò)它僅是用來(lái)改變文件或目錄的屬組的;-R參數(shù)用于目錄及目錄下所有文件改變屬組的。這和chown也是一樣的。簡(jiǎn)單來(lái)兩個(gè)例子;

    例子一:

    [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/
    總計(jì) 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/
    總計(jì) 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

    上面的例子是不是有點(diǎn)怪?因?yàn)樗膶僦骱蛯俳M都是一個(gè)數(shù)值;這是為什么呢?出現(xiàn)這種情況的原因是系統(tǒng)中不存在與之對(duì)應(yīng)的用戶,所以只能以數(shù)字形式顯示了。有時(shí)我們刪除了用戶,但沒(méi)有刪除其家目錄,這種情況下,它的家目錄的屬主和屬組也會(huì)變成數(shù)字;

    [root@localhost ~]# userdel linuxsir

    [root@localhost ~]# ls -ld /home/linuxsir
    drwx------ 16 501 502 4096 03-27 02:28 /home/linuxsir


    8、影響文件的讀寫執(zhí)行的因素;

    之所以把這部份的內(nèi)容單列出來(lái),是因?yàn)檫@部份的內(nèi)容是基于我們對(duì)用戶管理及文件權(quán)限了解的基礎(chǔ)上進(jìn)行的。比如一個(gè)文件的讀、寫、執(zhí)行,它要受到哪幾方面的影響。

    一個(gè)文件能不能被讀取,要受到它的屬主、屬組及其它用戶權(quán)限的影響,還要受到其父目錄權(quán)限的影響。我們來(lái)舉個(gè)例子;

    [root@localhost ~]# cd /home  注:進(jìn)入/home 目錄;

    [root@localhost home]# mkdir redhatdir 注:創(chuàng)建一個(gè)目錄redhatdir
    [root@localhost home]# touch redhatdir/test.txt  注:創(chuàng)建一個(gè)文件test.txt
    [root@localhost home]# chmod 700 redhatdir/ 注:修改redhatdir的權(quán)限 ,為屬主可讀可寫可執(zhí)行,屬組和其它用戶無(wú)權(quán)限;

    [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 文件的屬性;
    總計(jì) 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/  注:進(jìn)入redhatdir目錄,以beinan用戶身份。
    bash: cd: redhatdir/: 權(quán)限不夠

    [beinan@localhost home]$ more redhatdir/test.txt
    redhatdir/test.txt: 權(quán)限不夠

    解釋:我們通過(guò)這個(gè)例子來(lái)看,為什么test.txt在其它用戶權(quán)位上擁有可讀權(quán)限r(nóng)--,但我們用普通用戶還不能查看它的內(nèi)容呢? 這是因?yàn)樗母改夸洓](méi)有其它用戶的何讀權(quán)限。我們是不是redhatdir目錄的其它用戶可讀權(quán)限打開(kāi),就能讓普通用戶beinan能讀取 test.txt的內(nèi)容了呢??

    [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/: 權(quán)限不夠

    看來(lái)如果不設(shè)置屬組的權(quán)限,只打開(kāi)屬主的權(quán)限及其它用戶在redhatdir目錄的讀權(quán)限的情況下,其它用戶是不能訪問(wèn)的;我們應(yīng)該把 test.txt父目錄的 redhatdir 的屬主的讀、寫、執(zhí)行要打開(kāi),還要把父目錄的屬組的讀和執(zhí)行權(quán)限打開(kāi),其它用戶的讀和執(zhí)行權(quán)限打開(kāi),也就是要擁有 rwxr-xr-x 權(quán)限,這樣文件的其它用戶才能訪問(wèn)。

    [root@localhost home]# chmod 755 redhatdir/
    [root@localhost home]#  more  redhatdir/test.txt

    好象這塊說(shuō)的不太清楚,如果您看不太明白,多多chmod 練習(xí)練習(xí),也沒(méi)有什么難的。

    其實(shí)為文件分配權(quán)限的最終目的是讓文件的屬主有何權(quán)限,讓屬組下的用戶有何權(quán)限,讓其它用戶有何權(quán)限。文件權(quán)限是和用戶管理相關(guān)聯(lián)的,所以理解這方面的內(nèi)容還得了解用戶管理。


    9、文件被修改或被訪問(wèn)的時(shí)間;

    [root@localhost ~]# ls -l adduml02.sh
    -rwxr-xr-x 1 root root 545 04-21 22:26 adduml02.sh

    我們通過(guò)查看 文件的屬性時(shí),會(huì)發(fā)現(xiàn)它的時(shí)間標(biāo)記,比如上面的 04-21 22:26 。這個(gè)時(shí)間并不代表文件被創(chuàng)建的時(shí)候,他是代表文件被訪問(wèn)或被修改的時(shí)間。文件被修改的時(shí)間比較好理解,比如我們可以用編輯器來(lái)修改文本文件,然后保存一 下,這樣文件的時(shí)間就變了。

    當(dāng)然也有其它的工具不修改文件的內(nèi)容,只修改文件的時(shí)間,這時(shí)可以被稱為訪問(wèn)時(shí)間。比如touch工具能達(dá)到這個(gè)目的。

    [root@localhost ~]# ls -l adduml02.sh
    -rwxr-xr-x 1 root root 545 04-21 22:26 adduml02.sh

    [root@localhost ~]# touch  adduml02.sh  注:更新文件的訪問(wèn)時(shí)間成為當(dāng)前系統(tǒng)時(shí)間;

    [root@localhost ~]# ls -l adduml02.sh
    -rwxr-xr-x 1 root root 545 04-25 11:21 adduml02.sh

    關(guān)于touch 的用法, 更多的請(qǐng)參見(jiàn): man touch或touch --help


    10、文件屬性和文件系統(tǒng)屬性的關(guān)系;

    文件系統(tǒng)的特性決定著文件屬性的定義和修改,比如我們通過(guò) chattr 來(lái)鎖定一個(gè)文件為不可修改或不可刪除時(shí),要用到chattr 的+i參數(shù);這在ext2和ext3文件系統(tǒng)是有效的,但在reiserfs 文件系統(tǒng)是沒(méi)有任何效果的;

    [root@localhost ~]# chattr +i lsfile.sh

    [root@localhost ~]# lsattr  lsfile.sh
    ----i-------- lsfile.sh

    [root@localhost ~]# rm -rf lsfile.sh
    rm: 無(wú)法刪除 “lsfile.sh”: 不允許的操作

    注:如果把lsfile.sh變成可修改可刪除,應(yīng)該用-i參數(shù);

    比如在ext3或ext2 文件系統(tǒng)中,我們要讓一個(gè)文件只能追加內(nèi)容,但不能刪除。應(yīng)該用chattr的+a參數(shù)。

    如果您在用ext3文件系統(tǒng),想查看chattr 的幫助,請(qǐng)man chattr 。


    11、關(guān)于本文;

    關(guān)于Linux文件系統(tǒng)相關(guān)的文章,我是寫過(guò)很多篇了,但感覺(jué)還是沒(méi)有把問(wèn)題說(shuō)的更明白一點(diǎn)。存在這樣問(wèn)題的主要原因是Linux基礎(chǔ)知識(shí)都是關(guān)聯(lián)的。我們?yōu)榱税岩粋€(gè)問(wèn)題說(shuō)的清楚,得解決其相當(dāng)?shù)闹R(shí),這是最讓人頭痛的。
    有些更為深入的東西可能我沒(méi)有能力去寫,一是因?yàn)檫@些內(nèi)容用的比較少,二是樣的內(nèi)容理論性太強(qiáng),表達(dá)想來(lái)極為困難。比如ext3和reiserfs 文件系統(tǒng)的內(nèi)幕,如果您想對(duì)這方面的了解,只能查看ext3和reiserfs 官方的文檔了。目前我沒(méi)有能力寫這樣的文檔。


    12、后記;

    我想在最近些天慢慢把一些常用的命令,以分類應(yīng)用的形式介紹給初學(xué)的弟兄。但我不會(huì)搞成命令大全的形式。如果弄成命令大全的樣子,我看不如去查 man 之類的。因?yàn)閙an 說(shuō)的更清晰,更明白。學(xué)為所用,用為所學(xué),邊學(xué)邊用。有的東西并不一定要全懂,知道有這么回事就行了。


    13、參考文檔;


    14、相關(guān)文檔;

    《文件和目錄訪問(wèn)權(quán)限設(shè)置》

    《關(guān)于Linux 文件系統(tǒng)中路徑的理解》
    《Linux 文件和目錄管理之列出、刪除、復(fù)制、移動(dòng)及改名》
    《Linux 文件類型 及文件的擴(kuò)展名》
    《簡(jiǎn)述Linux 文件系統(tǒng)的目錄結(jié)構(gòu)》
    《Linux 用戶(user)和用戶組(group)管理概述》
    《存儲(chǔ)設(shè)備分區(qū)操作及文件系統(tǒng)管理概述》

    附件大小
    chmodphoto001.jpg 12.7 千字節(jié)
    • 由 北南南北 在 2006/04/25 - 16:38 發(fā)表

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 中文字幕亚洲电影| 亚洲人成电影青青在线播放| 午夜网站在线观看免费完整高清观看 | 在线观看成人免费视频不卡| 亚洲高清国产拍精品熟女| 国产亚洲精品免费视频播放| 日本人的色道免费网站| 色噜噜的亚洲男人的天堂| 国产国拍亚洲精品mv在线观看| 野花高清在线观看免费3中文 | 亚洲国产精品综合久久2007| 免费成人av电影| 亚洲啪啪免费视频| 国产高潮流白浆喷水免费A片 | 亚洲中文字幕人成乱码| 亚洲人成人网站在线观看| 桃子视频在线观看高清免费完整| 一个人看www免费高清字幕| 亚洲一区二区三区深夜天堂| 国产综合精品久久亚洲| 成人黄页网站免费观看大全| 在线观看免费黄色网址| 亚洲αⅴ无码乱码在线观看性色| 亚洲国产精品久久久久久| 国产成人精品男人免费| 亚洲w码欧洲s码免费| 99久久免费国产特黄| 亚洲成a∧人片在线观看无码 | 国产午夜成人免费看片无遮挡| 亚洲色大成网站www尤物| 自怕偷自怕亚洲精品| 久久久久久亚洲精品不卡| 在线免费观看毛片网站| 午夜视频在线免费观看| 污污污视频在线免费观看| 亚洲另类无码专区首页| 亚洲免费网站在线观看| 久久亚洲精品成人AV| 亚洲乱码无码永久不卡在线| 亚洲AV无码一区二三区| 国产美女精品视频免费观看|