因為 Linux 是多人多工的 OS, 所以, 檔案系統必須要有一套嚴密的保護措施, 以免, 因為有意或無意的人為破壞, 造成混亂及損失.
. Linux 將檔案分成三種身份、四種權限:
三種身份是:
- u: 自己(user)
- g: 和自己同一組的人(group)
- o: 其它人 (other)
而 a 則是代表所有的人.
每種身份皆有四種可能的權限:
- r : 讀取權 (read)
- w : 寫入權 (write)
- x :執行權 (execute)
及: (上面這三種權限用得最多, 以下則較少用, 也請儘量不使用, 除非你確實知道你在做啥麼?!)
- s : set user id / set group id 及 t : sticky bit (簡稱為 sst 模式)
4000 : set user id, 2000 set group id, 1000 set sticky bit
Linux 用 9 個 bits 來代表檔案的權限, 如下所示:
- | - - - | - - - | - - - |
- | rwx | rwx | rwx |
擁有人 | 同組人 | 其它人 |
每三個形成一組, 由左至右, 分別代表擁有人、同組人、其它人的權限.
每一組的三個位置, 由左至右為: 讀取,寫入,執行的權限, 若該位置只有一條線, 則表示不具有該權限.
另外, 我們也用數字來代表不同的權限:
- 讀取: 4
- 寫入: 2
- 執行: 1
如果某檔, 其擁有的權限為 rwx 的話, 那麼, 我們便把它們所代表的數字大小加起來, 即 4+2+1 =7
以下是可能的組合:
--- | 0 |
--x | 1 |
-w- | 2 |
r-- | 4 |
-wx | 2+1=3 |
r-x | 4+1=5 |
rw- | 4+2=6 |
rwx | 7 |
因為所有可能的組合, 其權限大小僅 0 ~ 7的範圍,
所以, 我們也將它視為一種八進位的數字系統, 並且常常用數字來表示某一個檔案的權限開放的程度.
例子:
擁 檔 有 案 檔 種 案 檔案大小 最近修改的 類 檔案權限 數 擁有人 組別 (byte單位)日期及時間 檔案名稱
drwx--x--x 7 kv kv 4096 2月 3 14:25 .
drwxr-xr-x 7 root root 4096 2月 1 11:56 ..
-rw------- 1 kv kv 10 2月 3 14:25 .bash_history
-rw-r--r-- 1 kv kv 24 2月 1 11:50 .bash_logout
-rw-r--r-- 1 kv kv 191 2月 1 11:50 .bash_profile
-rw-r--r-- 1 kv kv 124 2月 1 11:50 .bashrc
-rw-r--r-- 1 kv kv 238 2月 1 11:50 .emacs
-rw------- 1 kv kv 88 2月 1 21:27 .forward
-rw-r--r-- 1 kv kv 120 2月 1 11:50 .gtkrc
drwxr-xr-x 2 kv kv 4096 2月 3 14:19 html
drwxr-xr-x 3 kv kv 4096 2月 1 11:50 .kde
drwx------ 2 kv kv 4096 2月 1 12:36 mail
drwx------ 8 kv kv 4096 2月 1 12:34 .openwebmail
-rw------- 1 kv kv 12288 2月 1 21:27 .vacation
-rw------- 1 kv kv 329 2月 1 21:27 .vacation.msg
drwxr-xr-x 2 kv kv 4096 2月 3 14:23 webdisk
以上圖為例:
webdisk是一個普通的資料夾檔案, 其擁有人是 kv, 組別是kv, 該檔案的權限是:
- 擁有人: 可讀,可寫,可執行
- 同組人: 可讀,可執行 (但不可寫)
- 其它人: 可讀,可執行 (但不可寫)
用八進位數字來表示, 該檔權限為: 755
試問: 以下權限其對應的八進位數字是多少?
rwx--x--x | |
r--r--r-- | |
rw-rw-rw- | |
--x--x--x | |
rwxrwxrwx | |
r-xr-xr-x |
試問: 以下八進位數字其對應的權限為何?
611 | |
755 | |
666 | |
544 | |
733 | |
634 |
2. 改變權限的方法.
有兩種改變檔案權限的方法:
- 八進位數字模式
- 符號模式
使用的指令是: chmod (change mode : change the access permissions of files)
方法如下:
chmod 權限 檔案/目錄
例:
- chmod 666 myfile
- chmod 777 myfile
- chmod 755 myfile
- chmod 111 myfile
以上是採八進位數字模式
- chmod u+x myfile
- chmod u-x myfile
- chmod ug+x myfile
- chmod g-x myfile
- chmod o+x myfile
- chmod o-x myfile
- chmod a+x myfile
- chmod a-x myfile
- chmod a=x myfile
- chmod u=wr myfile
- chmod go=rx myfile
以上是採符號模式.
+ 表增加該種權限
- 表去掉該種權限
= 表設定作該種權限
3. 目錄的權限.
目錄的權限, 觀念及設法, 同於檔案的權限, 但其包含的意義則大不相同.
以 "可執行的" 這個權限而言, 對檔案來說, 若該檔設為可執行的話, 其意義很容易了解, 但如果將目錄設為可執行, 那麼難道目錄真的是可以執行的嗎? :-Q
當然不是.
Linux 對於目錄的權限, 另有一套看法:
r | 可列出目錄中的檔案名稱, 即 ls 有作用 |
w | 在該目錄中, 可刪檔,改檔名,建新檔 |
x | 可以進入該目錄之中(重要觀念, 用處大) |
如果某一個目錄下, 尚有許多檔案和子目錄, 有無方法可以一次改變所有的檔案權限呢?
當然有.
chmod -R 權限 目錄名稱
其中 -R 表示 Recursively change permissions of directories and their contents, 意即遞迴地將其下的所有檔案、目錄全數改變.
4. 改變檔案的擁有者(owner) 或 組別 (group)
通常這只有 root 等級的使用者, 才有此項權力. (否則就天下大亂了! 不過, 某些 Uuix clone 開放有限制的作法)
方法如下:
chown [-R] owner:group 檔案/目錄
例:
chown -R 3slo:hacker /home/ols3
5. umask(檔案的安全濾網).
什麼是 umask ? umask 是在新建立一個檔案或目錄時, 檔案權限的遮罩值.
其運作方式是: 將系統的預設值減去 umask 值, 就是最後檔案/目錄的權限.
一般而言, 新建檔案的預設值是 666, 新建目錄的預設值是 777, 如果 umask 定為 022,
那麼一個新的檔案建立時, 其真正的權限應該是 666-022=644
新的目錄建立時, 其權限則是 777-022=755
有了 umask 的話, 新建的檔案及目錄, 會比較安全一點.
如何得知目前的 umask 值是多少呢?
下 umask
資料來源: http://s2.naes.tn.edu.tw/~kv/file.htm
沒有留言:
張貼留言