<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 6.4 文件與目錄的默認權限與隱藏權限 由[第五章、Linux文件權限](../Text/index.html)的內容我們可以知道一個文件有若干個屬性, 包括讀寫執行(r, w, x)等基本權限,及是否為目錄 (d) 與文件 (-) 或者是鏈接文件 (l) 等等的屬性! 要修改屬性的方法在前面也約略提過了([chgrp](../Text/index.html#chgrp), [chown](../Text/index.html#chown), [chmod](../Text/index.html#chmod)) ,本小節會再加強補充一下! 除了基本r, w, x權限外,在Linux傳統的Ext2/Ext3/Ext4文件系統下,我們還可以設置其他的系統隱藏屬性, 這部份可使用 [chattr](../Text/index.html#chattr) 來設置,而以 [lsattr](../Text/index.html#lsattr) 來查看,最重要的屬性就是可以設置其不可修改的特性!讓連文件的擁有者都不能進行修改! 這個屬性可是相當重要的,尤其是在安全機制上面 (security)!比較可惜的是,在 CentOS 7.x 當中利用 xfs 作為默認文件系統, 但是 xfs 就沒有支持所有的 chattr 的參數了!僅有部份參數還有支持而已! 首先,先來復習一下上一章談到的權限概念,將下面的例題看一看先: 例題:你的系統有個一般身份使用者 dmtsai,他的群組屬于 dmtsai,他的主文件夾在 /home/dmtsai, 你是root,你想將你的 ~/.bashrc 復制給他,可以怎么作?答:由上一章的權限概念我們可以知道 root 雖然可以將這個文件復制給 dmtsai,不過這個文件在 dmtsai 的主文件夾中卻可能讓 dmtsai 沒有辦法讀寫(因為該文件屬于 root 的嘛!而 dmtsai 又不能使用 chown 之故)。 此外,我們又擔心覆蓋掉 dmtsai 自己的 .bashrc 配置文件,因此,我們可以進行如下的動作喔: 復制文件: cp ~/.bashrc ~dmtsai/bashrc 修改屬性: chown dmtsai:dmtsai ~dmtsai/bashrc 例題:我想在 /tmp 下面創建一個目錄,這個目錄名稱為 chapter6_1 ,并且這個目錄擁有者為 dmtsai, 群組為 dmtsai,此外,任何人都可以進入該目錄瀏覽文件,不過除了 dmtsai 之外,其他人都不能修改該目錄下的文件。答:因為除了 dmtsai 之外,其他人不能修改該目錄下的文件,所以整個目錄的權限應該是 drwxr-xr-x 才對! 因此你應該這樣做:創建目錄: mkdir /tmp/chapter6_1 修改屬性: chown -R dmtsai:dmtsai /tmp/chapter6_1 修改權限: chmod -R 755 /tmp/chapter6_1 在上面這個例題當中,如果你知道 755 那個分數是怎么計算出來的,那么你應該對于權限有一定程度的概念了。 如果你不知道 755 怎么來的?那么...趕快回去前一章看看 [chmod](../Text/index.html#chmod) 那個指令的介紹部分啊!這部分很重要喔!你得要先清楚的了解到才行~否則就進行不下去啰~ 假設你對于權限都認識的差不多了,那么下面我們就要來談一談,“新增一個文件或目錄時,默認的權限是什么?”這個議題! ### 6.4.1 文件默認權限:umask OK!那么現在我們知道如何創建或者是改變一個目錄或文件的屬性了,不過, 你知道當你創建一個新的文件或目錄時,他的默認權限會是什么嗎?呵呵!那就與 umask 這個玩意兒有關了!那么 umask 是在搞什么呢?基本上, umask 就是指定 “目前使用者在創建文件或目錄時候的權限默認值”, 那么如何得知或設置 umask 呢?他的指定條件以下面的方式來指定: ``` [root@study ~]# umask 0022 &lt;==與一般權限有關的是后面三個數字! [root@study ~]# umask -S u=rwx,g=rx,o=rx ``` 查閱的方式有兩種,一種可以直接輸入 umask ,就可以看到數字體態的權限設置分數, 一種則是加入 -S (Symbolic) 這個選項,就會以符號類型的方式來顯示出權限了! 奇怪的是,怎么 umask 會有四組數字啊?不是只有三組嗎?是沒錯啦。 第一組是特殊權限用的,我們先不要理他,所以先看后面三組即可。 在默認權限的屬性上,目錄與文件是不一樣的。從第五章我們知道 x 權限對于目錄是非常重要的! 但是一般文件的創建則不應該有執行的權限,因為一般文件通常是用在于數據的記錄嘛!當然不需要執行的權限了。 因此,默認的情況如下: * 若使用者創建為“文件”則默認“沒有可執行( x )權限”,亦即只有 rw 這兩個項目,也就是最大為 666 分,默認權限如下: -rw-rw-rw- * 若使用者創建為“目錄”,則由于 x 與是否可以進入此目錄有關,因此默認為所有權限均開放,亦即為 777 分,默認權限如下: drwxrwxrwx 要注意的是,umask 的分數指的是“該默認值需要減掉的權限!”因為 r、w、x 分別是 4、2、1 分,所以啰!也就是說,當要拿掉能寫的權限,就是輸入 2 分,而如果要拿掉能讀的權限,也就是 4 分,那么要拿掉讀與寫的權限,也就是 6 分,而要拿掉執行與寫入的權限,也就是 3 分,這樣了解嗎?請問你, 5 分是什么?呵呵! 就是讀與執行的權限啦! 如果以上面的例子來說明的話,因為 umask 為 022 ,所以 user 并沒有被拿掉任何權限,不過 group 與 others 的權限被拿掉了 2 (也就是 w 這個權限),那么當使用者: * 創建文件時:(-rw-rw-rw-) - (-----w--w-) ==&gt; -rw-r--r-- * 創建目錄時:(drwxrwxrwx) - (d----w--w-) ==&gt; drwxr-xr-x 不相信嗎?我們就來測試看看吧! ``` [root@study ~]# umask 0022 [root@study ~]# touch test1 [root@study ~]# mkdir test2 [root@study ~]# ll -d test* -rw-r--r--. 1 root root 0 6月 16 01:11 test1 drwxr-xr-x. 2 root root 6 6月 16 01:11 test2 ``` 呵呵!瞧見了吧!確定新建文件的權限是沒有錯的。 * umask的利用與重要性:專題制作 想像一個狀況,如果你跟你的同學在同一部主機里面工作時,因為你們兩個正在進行同一個專題, 老師也幫你們兩個的帳號創建好了相同群組的狀態,并且將 /home/class/ 目錄做為你們兩個人的專題目錄。 想像一下,有沒有可能你所制作的文件你的同學無法編輯?果真如此的話,那就傷腦筋了! 這個問題很常發生啊!舉上面的案例來看就好了,你看一下 test1 的權限是幾分? 644 呢!意思是“如果 umask 訂定為 022 ,那新建的數據只有使用者自己具有 w 的權限, 同群組的人只有 r 這個可讀的權限而已,并無法修改喔!”這樣要怎么共同制作專題啊!您說是吧! 所以,當我們需要新建文件給同群組的使用者共同編輯時,那么 umask 的群組就不能拿掉 2 這個 w 的權限! 所以啰, umask 就得要是 002 之類的才可以!這樣新建的文件才能夠是 -rw-rw-r-- 的權限模樣喔! 那么如何設置 umask 呢?簡單的很,直接在 umask 后面輸入 002 就好了! ``` [root@study ~]# umask 002 [root@study ~]# touch test3 [root@study ~]# mkdir test4 [root@study ~]# ll -d test[34] # 中括號 [ ] 代表中間有個指定的字符,而不是任意字符的意思 -rw-rw-r--. 1 root root 0 6月 16 01:12 test3 drwxrwxr-x. 2 root root 6 6月 16 01:12 test4 ``` 所以說,這個 umask 對于新建文件與目錄的默認權限是很有關系的!這個概念可以用在任何服務器上面, 尤其是未來在你架設文件服務器 (file server) ,舉例來說, [SAMBA Server](http://linux.vbird.org/linux_server/0370samba.php) 或者是 [FTP server](http://linux.vbird.org/linux_server/0410vsftpd.php) 時, 都是很重要的觀念!這牽涉到你的使用者是否能夠將文件進一步利用的問題喔!不要等閑視之! 例題:假設你的 umask 為 003 ,請問該 umask 情況下,創建的文件與目錄權限為?答:umask 為 003 ,所以拿掉的權限為 --------wx,因此: 文件: (-rw-rw-rw-) - (--------wx) = -rw-rw-r-- 目錄: (drwxrwxrwx) - (d-------wx) = drwxrwxr-- ![鳥哥的圖示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鳥哥的圖示") **Tips** 關于 umask 與權限的計算方式中,教科書喜歡使用二進制的方式來進行 AND 與 NOT 的計算, 不過,鳥哥還是比較喜歡使用符號方式來計算~聯想上面比較容易一點~ 但是,有的書籍或者是 BBS 上面的朋友,喜歡使用文件默認屬性 666 與目錄默認屬性 777 來與 umask 進行相減的計算~這是不好的喔!以上面例題來看, 如果使用默認屬性相加減,則文件變成:666-003=663,亦即是 -rw-rw--wx ,這可是完全不對的喔! 想想看,原本文件就已經去除 x 的默認屬性了,怎么可能突然間冒出來了? 所以,這個地方得要特別小心喔! 在默認的情況中, root 的 umask 會拿掉比較多的屬性,root 的 umask 默認是 022 , 這是基于安全的考慮啦~至于一般身份使用者,通常他們的 umask 為 002 ,亦即保留同群組的寫入權力! 其實,關于默認 umask 的設置可以參考 /etc/bashrc 這個文件的內容,不過,不建議修改該文件, 你可以參考[第十章 bash shell 提到的環境參數配置文件](../Text/index.html#settings_bashrc_bashrc) (~/.bashrc) 的說明! ### 6.4.2 文件隱藏屬性 什么?文件還有隱藏屬性?光是那九個權限就快要瘋掉了,竟然還有隱藏屬性,真是要命~ 但是沒辦法,就是有文件的隱藏屬性存在啊!不過,這些隱藏的屬性確實對于系統有很大的幫助的~ 尤其是在系統安全 (Security) 上面,重要的緊呢!不過要先強調的是,下面的chattr指令只能在Ext2/Ext3/Ext4的 Linux 傳統文件系統上面完整生效, 其他的文件系統可能就無法完整的支持這個指令了,例如 xfs 僅支持部份參數而已。下面我們就來談一談如何設置與檢查這些隱藏的屬性吧! * chattr (設置文件隱藏屬性) ``` [root@study ~]# chattr [+-=][ASacdistu] 文件或目錄名稱 選項與參數: + :增加某一個特殊參數,其他原本存在參數則不動。 - :移除某一個特殊參數,其他原本存在參數則不動。 = :設置一定,且僅有后面接的參數 A :當設置了 A 這個屬性時,若你有存取此文件(或目錄)時,他的存取時間 atime 將不會被修改, 可避免 I/O 較慢的機器過度的存取磁盤。(目前建議使用文件系統掛載參數處理這個項目) S :一般文件是非同步寫入磁盤的(原理請參考[前一章sync](../Text/index.html#sync)的說明),如果加上 S 這個屬性時, 當你進行任何文件的修改,該更動會“同步”寫入磁盤中。 a :當設置 a 之后,這個文件將只能增加數據,而不能刪除也不能修改數據,只有root 才能設置這屬性 c :這個屬性設置之后,將會自動的將此文件“壓縮”,在讀取的時候將會自動解壓縮, 但是在儲存的時候,將會先進行壓縮后再儲存(看來對于大文件似乎蠻有用的!) d :當 dump 程序被執行的時候,設置 d 屬性將可使該文件(或目錄)不會被 dump 備份 i :這個 i 可就很厲害了!他可以讓一個文件“不能被刪除、改名、設置鏈接也無法寫入或新增數據!” 對于系統安全性有相當大的助益!只有 root 能設置此屬性 s :當文件設置了 s 屬性時,如果這個文件被刪除,他將會被完全的移除出這個硬盤空間, 所以如果誤刪了,完全無法救回來了喔! u :與 s 相反的,當使用 u 來設置文件時,如果該文件被刪除了,則數據內容其實還存在磁盤中, 可以使用來救援該文件喔! 注意1:屬性設置常見的是 a 與 i 的設置值,而且很多設置值必須要身為 root 才能設置 注意2:xfs 文件系統僅支持 AadiS 而已 范例:請嘗試到/tmp下面創建文件,并加入 i 的參數,嘗試刪除看看。 [root@study ~]# cd /tmp [root@study tmp]# touch attrtest &lt;==創建一個空文件 [root@study tmp]# chattr +i attrtest &lt;==給予 i 的屬性 [root@study tmp]# rm attrtest &lt;==嘗試刪除看看 rm: remove regular empty file `attrtest'? y rm: cannot remove `attrtest': Operation not permitted # 看到了嗎?呼呼!連 root 也沒有辦法將這個文件刪除呢!趕緊解除設置! 范例:請將該文件的 i 屬性取消! [root@study tmp]# chattr -i attrtest ``` 這個指令是很重要的,尤其是在系統的數據安全上面!由于這些屬性是隱藏的性質,所以需要以 [lsattr](../Text/index.html#lsattr) 才能看到該屬性呦!其中,個人認為最重要的當屬 +i 與 +a 這個屬性了。+i 可以讓一個文件無法被更動,對于需要強烈的系統安全的人來說, 真是相當的重要的!里頭還有相當多的屬性是需要 root 才能設置的呢! 此外,如果是 log file 這種的登錄文件,就更需要 +a 這個可以增加,但是不能修改舊有的數據與刪除的參數了!怎樣?很棒吧! 未來提到[登錄文件 (十八章)](../Text/index.html) 的認知時,我們再來聊一聊如何設置他吧! * lsattr (顯示文件隱藏屬性) ``` [root@study ~]# lsattr [-adR] 文件或目錄 選項與參數: -a :將隱藏文件的屬性也秀出來; -d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的文件名; -R :連同子目錄的數據也一并列出來! [root@study tmp]# chattr +aiS attrtest [root@study tmp]# lsattr attrtest --S-ia---------- attrtest ``` 使用 chattr 設置后,可以利用 lsattr 來查閱隱藏的屬性。不過, 這兩個指令在使用上必須要特別小心,否則會造成很大的困擾。例如:某天你心情好,突然將 /etc/shadow 這個重要的密碼記錄文件給他設置成為具有 i 的屬性,那么過了若干天之后, 你突然要新增使用者,卻一直無法新增!別懷疑,趕快去將 i 的屬性拿掉吧! ### 6.4.3 文件特殊權限: SUID, SGID, SBIT 我們前面一直提到關于文件的重要權限,那就是 rwx 這三個讀、寫、執行的權限。 但是,眼尖的朋友們在[第五章的目錄樹章節](../Text/index.html#dir_tree)中, 一定注意到了一件事,那就是,怎么我們的 /tmp 權限怪怪的? 還有,那個 /usr/bin/passwd 也怪怪的?怎么回事啊?看看先: ``` [root@study ~]# ls -ld /tmp ; ls -l /usr/bin/passwd drwxrwxrwt. 14 root root 4096 Jun 16 01:27 /tmp -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd ``` 不是應該只有 rwx 嗎?還有其他的特殊權限( s 跟 t )啊?啊.....頭又開始昏了~ @_@ 因為 s 與 t 這兩個權限的意義與[系統的帳號 (第十三章)](../Text/index.html)及[系統的程序(process, 第十六章)](../Text/index.html)較為相關, 所以等到后面的章節談完后你才會比較有概念!下面的說明先看看就好,如果看不懂也沒有關系, 先知道s放在哪里稱為SUID/SGID以及如何設置即可,等系統程序章節讀完后,再回來看看喔! * Set UID 當 s 這個標志出現在文件擁有者的 x 權限上時,例如剛剛提到的 /usr/bin/passwd 這個文件的權限狀態:“-rw**s**r-xr-x”,此時就被稱為 Set UID,簡稱為 SUID 的特殊權限。 那么SUID的權限對于一個文件的特殊功能是什么呢?基本上SUID有這樣的限制與功能: * SUID 權限僅對二進制程序(binary program)有效; * 執行者對于該程序需要具有 x 的可執行權限; * 本權限僅在執行該程序的過程中有效 (run-time); * 執行者將具有該程序擁有者 (owner) 的權限。 講這么硬的東西你可能對于 SUID 還是沒有概念,沒關系,我們舉個例子來說明好了。 我們的 Linux 系統中,所有帳號的密碼都記錄在 /etc/shadow 這個文件里面,這個文件的權限為:“---------- 1 root root”,意思是這個文件僅有root可讀且僅有root可以強制寫入而已。 既然這個文件僅有 root 可以修改,那么鳥哥的 dmtsai 這個一般帳號使用者能否自行修改自己的密碼呢? 你可以使用你自己的帳號輸入“passwd”這個指令來看看,嘿嘿!一般使用者當然可以修改自己的密碼了! 唔!有沒有沖突啊!明明 /etc/shadow 就不能讓 dmtsai 這個一般帳戶去存取的,為什么 dmtsai 還能夠修改這個文件內的密碼呢? 這就是 SUID 的功能啦!借由上述的功能說明,我們可以知道 1. dmtsai 對于 /usr/bin/passwd 這個程序來說是具有 x 權限的,表示 dmtsai 能執行 passwd; 2. passwd 的擁有者是 root 這個帳號; 3. dmtsai 執行 passwd 的過程中,會“暫時”獲得 root 的權限; 4. /etc/shadow 就可以被 dmtsai 所執行的 passwd 所修改。 但如果 dmtsai 使用 cat 去讀取 /etc/shadow 時,他能夠讀取嗎?因為 cat 不具有 SUID 的權限,所以 dmtsai 執行 “cat /etc/shadow” 時,是不能讀取 /etc/shadow 的。我們用一張示意圖來說明如下: ![SUID程序執行的過程示意圖](https://box.kancloud.cn/2016-05-13_57357372e7b61.gif)圖6.4.1、SUID程序執行的過程示意圖 另外,SUID 僅可用在binary program 上, 不能夠用在 shell script 上面!這是因為 shell script 只是將很多的 binary 可執行文件叫進來執行而已!所以 SUID 的權限部分,還是得要看 shell script 調用進來的程序的設置, 而不是 shell script 本身。當然,SUID 對于目錄也是無效的~這點要特別留意。 * Set GID 當 s 標志在文件擁有者的 x 項目為 SUID,那 s 在群組的 x 時則稱為 Set GID, SGID 啰!是這樣沒錯!^_^。 舉例來說,你可以用下面的指令來觀察到具有 SGID 權限的文件喔: ``` [root@study ~]# ls -l /usr/bin/locate -rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate ``` 與 SUID 不同的是,SGID 可以針對文件或目錄來設置!如果是對文件來說, SGID 有如下的功能: * SGID 對二進制程序有用; * 程序執行者對于該程序來說,需具備 x 的權限; * 執行者在執行的過程中將會獲得該程序群組的支持! 舉例來說,上面的 /usr/bin/locate 這個程序可以去搜尋 /var/lib/mlocate/mlocate.db 這個文件的內容 (詳細說明會在下節講述), mlocate.db 的權限如下: ``` [root@study ~]# ll /usr/bin/locate /var/lib/mlocate/mlocate.db -rwx--s--x. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate -rw-r-----. 1 root slocate 2349055 Jun 15 03:44 /var/lib/mlocate/mlocate.db ``` 與 SUID 非常的類似,若我使用 dmtsai 這個帳號去執行 locate 時,那 dmtsai 將會取得 slocate 群組的支持, 因此就能夠去讀取 mlocate.db 啦!非常有趣吧! 除了 binary program 之外,事實上 SGID 也能夠用在目錄上,這也是非常常見的一種用途! 當一個目錄設置了 SGID 的權限后,他將具有如下的功能: * 使用者若對于此目錄具有 r 與 x 的權限時,該使用者能夠進入此目錄; * 使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組; * 用途:若使用者在此目錄下具有 w 的權限(可以新建文件),則使用者所創建的新文件,該新文件的群組與此目錄的群組相同。 SGID 對于專案開發來說是非常重要的!因為這涉及群組權限的問題,您可以參考一下本章后續[情境仿真的案例](../Text/index.html#situation1),應該就能夠對于 SGID 有一些了解的!^_^ * Sticky Bit 這個 Sticky Bit, SBIT 目前只針對目錄有效,對于文件已經沒有效果了。SBIT 對于目錄的作用是: * 當使用者對于此目錄具有 w, x 權限,亦即具有寫入的權限時; * 當使用者在該目錄下創建文件或目錄時,僅有自己與 root 才有權力刪除該文件 換句話說:當甲這個使用者于 A 目錄是具有群組或其他人的身份,并且擁有該目錄 w 的權限, 這表示“甲使用者對該目錄內任何人創建的目錄或文件均可進行 "刪除/更名/搬移" 等動作。” 不過,如果將 A 目錄加上了 SBIT 的權限項目時, 則甲只能夠針對自己創建的文件或目錄進行刪除/更名/移動等動作,而無法刪除他人的文件。 舉例來說,我們的 /tmp 本身的權限是“drwxrwxrwt”, 在這樣的權限內容下,任何人都可以在 /tmp 內新增、修改文件,但僅有該文件/目錄創建者與 root 能夠刪除自己的目錄或文件。這個特性也是挺重要的啊!你可以這樣做個簡單的測試: 1. 以 root 登陸系統,并且進入 /tmp 當中; 2. touch test,并且更改 test 權限成為 777 ; 3. 以一般使用者登陸,并進入 /tmp; 4. 嘗試刪除 test 這個文件! 由于 SUID/SGID/SBIT 牽涉到程序的概念,因此再次強調,這部份的數據在您讀完[第十六章關于程序方面](../Text/index.html)的知識后,要再次的回來瞧瞧喔! 目前,你先有個簡單的基礎概念就好了!文末的參考數據也建議閱讀一番喔! * SUID/SGID/SBIT 權限設置 前面介紹過 SUID 與 SGID 的功能,那么如何設置文件使成為具有 SUID 與 SGID 的權限呢? 這就需要[第五章的數字更改權限](../Text/index.html)的方法了! 現在你應該已經知道數字體態更改權限的方式為“三個數字”的組合, 那么如果在這三個數字之前再加上一個數字的話,最前面的那個數字就代表這幾個權限了! * 4 為 SUID * 2 為 SGID * 1 為 SBIT 假設要將一個文件權限改為“-rwsr-xr-x”時,由于 s 在使用者權限中,所以是 SUID ,因此, 在原先的 755 之前還要加上 4 ,也就是:“ chmod 4755 filename ”來設置!此外,還有大 S 與大 T 的產生喔!參考下面的范例啦! ![鳥哥的圖示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鳥哥的圖示") **Tips** 注意:下面的范例只是練習而已,所以鳥哥使用同一個文件來設置,你必須了解 SUID 不是用在目錄上,而 SBIT 不是用在文件上的喔! ``` [root@study ~]# cd /tmp [root@study tmp]# touch test &lt;==創建一個測試用空檔 [root@study tmp]# chmod 4755 test; ls -l test &lt;==加入具有 SUID 的權限 -rwsr-xr-x 1 root root 0 Jun 16 02:53 test [root@study tmp]# chmod 6755 test; ls -l test &lt;==加入具有 SUID/SGID 的權限 -rwsr-sr-x 1 root root 0 Jun 16 02:53 test [root@study tmp]# chmod 1755 test; ls -l test &lt;==加入 SBIT 的功能! -rwxr-xr-t 1 root root 0 Jun 16 02:53 test [root@study tmp]# chmod 7666 test; ls -l test &lt;==具有空的 SUID/SGID 權限 -rwSrwSrwT 1 root root 0 Jun 16 02:53 test ``` 最后一個例子就要特別小心啦!怎么會出現大寫的 S 與 T 呢?不都是小寫的嗎? 因為 s 與 t 都是取代 x 這個權限的,但是你有沒有發現阿,我們是下達 7666 喔!也就是說, user, group 以及 others 都沒有 x 這個可執行的標志( 因為 666 嘛 ),所以,這個 S, T 代表的就是“空的”啦!怎么說? SUID 是表示“該文件在執行的時候,具有文件擁有者的權限”,但是文件 擁有者都無法執行了,哪里來的權限給其他人使用?當然就是空的啦! ^_^ 而除了數字法之外,你也可以通過符號法來處理喔!其中 SUID 為 u+s ,而 SGID 為 g+s ,SBIT 則是 o+t 啰!來看看如下的范例: ``` # 設置權限成為 -rws--x--x 的模樣: [root@study tmp]# chmod u=rwxs,go=x test; ls -l test -rws--x--x 1 root root 0 Jun 16 02:53 test # 承上,加上 SGID 與 SBIT 在上述的文件權限中! [root@study tmp]# chmod g+s,o+t test; ls -l test -rws--s--t 1 root root 0 Jun 16 02:53 test ``` ### 6.4.4 觀察文件類型:file 如果你想要知道某個文件的基本數據,例如是屬于 ASCII 或者是 data 文件,或者是 binary , 且其中有沒有使用到動態函數庫 (share library) 等等的信息,就可以利用 file 這個指令來檢閱喔!舉例來說: ``` [root@study ~]# file ~/.bashrc /root/.bashrc: ASCII text &lt;==告訴我們是 ASCII 的純文本文件啊! [root@study ~]# file /usr/bin/passwd /usr/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0xbf35571e607e317bf107b9bcf65199988d0ed5ab, stripped # 可執行文件的數據可就多的不得了!包括這個文件的 suid 權限、相容于 Intel x86-64 等級的硬件平臺 # 使用的是 Linux 核心 2.6.32 的動態函數庫鏈接等等。 [root@study ~]# file /var/lib/mlocate/mlocate.db /var/lib/mlocate/mlocate.db: data &lt;== 這是 data 文件! ``` 通過這個指令,我們可以簡單的先判斷這個文件的格式為何喔!包括未來你也可以用來判斷使用 tar 包裹時,該 tarball 文件是使用哪一種壓縮功能哩!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看