例題:
你的系統有個一般身份使用者 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

1 檔案預設權限:umask

 umask 就是指定 『目前使用者在建立檔案或目錄時候的權限預設值』

因此,預設的情況如下:

    • 若使用者建立為『檔案』則預設『沒有可執行( x )權限』,亦即只有 rw 這兩個項目,也就是最大為 666 分,預設權限如下:
      -rw-rw-rw-

    • 若使用者建立為『目錄』,則由於 x 與是否可以進入此目錄有關,因此預設為所有權限均開放,亦即為 777 分,預設權限如下:
      drwxrwxrwx

umask 的分數指的是『該預設值需要減掉的權限!』

 

如果以上面的例子來說明的話,因為 umask 為 022 ,所以 user 並沒有被拿掉任何權限,不過 group 與 others 的權限被拿掉了 2 (也就是 w 這個權限),那麼當使用者:

  • 建立檔案時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
  • 建立目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

 

例題:
假設你的 umask 為 003 ,請問該 umask 情況下,建立的檔案與目錄權限為?
答:
umask 為 003 ,所以拿掉的權限為 --------wx,因此:
檔案: (-rw-rw-rw-) - (--------wx) = -rw-rw-r--
目錄: (drwxrwxrwx) - (d-------wx) = drwxrwxr--

 

 

2 檔案隱藏屬性

 

  • chattr (設定檔案隱藏屬性)

 

  • lsattr (顯示檔案隱藏屬性)

 

 

3 檔案特殊權限: SUID, SGID, SBIT

我們前面一直提到關於檔案的重要權限,那就是 rwx 這三個讀、寫、執行的權限。

但是,眼尖的朋友們在第五章的目錄樹章節中,

一定注意到了一件事,那就是,怎麼我們的 /tmp 權限怪怪的?

還有,那個 /usr/bin/passwd 也怪怪的?怎麼回事啊?看看先:

 

因為 s 與 t 這兩個權限的意義與系統的帳號 (第十三章)系統的程序(process, 第十六章)較為相關.

 

 

  • Set UID

當 s 這個標誌出現在檔案擁有者的 x 權限上時,例如剛剛提到的 /usr/bin/passwd 這個檔案的權限狀態:

-rwsr-xr-x』,此時就被稱為 Set UID,簡稱為 SUID 的特殊權限。

那麼SUID的權限對於一個檔案的特殊功能是什麼呢?基本上SUID有這樣的限制與功能:

  • SUID 權限僅對二進位程式(binary program)有效;
  • 執行者對於該程式需要具有 x 的可執行權限;
  • 本權限僅在執行該程式的過程中有效 (run-time);
  • 執行者將具有該程式擁有者 (owner) 的權限。

 

 我們的 Linux 系統中,所有帳號的密碼都記錄在 /etc/shadow 這個檔案裡面,這個檔案的權限為:

---------- 1 root root』,意思是這個檔案僅有root可讀且僅有root可以強制寫入而已。

既然這個檔案僅有 root 可以修改,那麼鳥哥的 dmtsai 這個一般帳號使用者能否自行修改自己的密碼呢?

你可以使用你自己的帳號輸入『passwd』這個指令來看看,嘿嘿!一般使用者當然可以修改自己的密碼了!

 

  • Set GID

當 s 標誌在檔案擁有者的 x 項目為 SUID,那 s 在群組的 x 時則稱為 Set GID, SGID 囉!

 

 SGID 有如下的功能:

  • SGID 對二進位程式有用;
  • 程式執行者對於該程式來說,需具備 x 的權限;
  • 執行者在執行的過程中將會獲得該程式群組的支援!.

 

 當一個目錄設定了 SGID 的權限後,他將具有如下的功能:

  • 使用者若對於此目錄具有 r 與 x 的權限時,該使用者能夠進入此目錄;
  • 使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
  • 用途:若使用者在此目錄下具有 w 的權限(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同。

 

 

這個 Sticky Bit, SBIT 目前只針對目錄有效,對於檔案已經沒有效果了。SBIT 對於目錄的作用是:

  • 當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時;
  • 當使用者在該目錄下建立檔案或目錄時,僅有自己與 root 才有權力刪除該檔案

換句話說:當甲這個使用者於 A 目錄是具有群組或其他人的身份,並且擁有該目錄 w 的權限,

這表示『甲使用者對該目錄內任何人建立的目錄或檔案均可進行 "刪除/更名/搬移" 等動作。』

不過,如果將 A 目錄加上了 SBIT 的權限項目時, 則甲只能夠針對自己建立的檔案或目錄進行刪除/更名/移動等動作,而無法刪除他人的檔案

 

 

  • SUID/SGID/SBIT 權限設定

 現在你應該已經知道數字型態更改權限的方式為『三個數字』的組合,

那麼如果在這三個數字之前再加上一個數字的話,最前面的那個數字就代表這幾個權限了!

  • 4 為 SUID
  • 2 為 SGID
  • 1 為 SBIT

假設要將一個檔案權限改為『-rwsr-xr-x』時,由於 s 在使用者權限中,

所以是 SUID ,因此, 在原先的 755 之前還要加上 4 ,也就是:『 chmod 4755 filename 』來設定!

 

 

其中 SUID 為 u+s ,而 SGID 為 g+s ,SBIT 則是 o+t 囉!來看看如下的範例:

 

4 觀察檔案類型:file

如果你想要知道某個檔案的基本資料,例如是屬於 ASCII 或者是 data 檔案,或者是 binary ,

且其中有沒有使用到動態函式庫 (share library) 等等的資訊,就可以利用 file 這個指令來檢閱喔!舉例來說:

 

posted on 2016-05-18 16:31  Sharpest  阅读(182)  评论(0)    收藏  举报