2012/08/26

Linux 檔案系統與權限


檔案系統與權限

安全模型

  • 使用users and groups控制檔案存取
  • 使用login管控使用者
  • 每個檔案由user和group的擁有權限所組成
  • 每個程序只能處理符合自己權限的檔案
[root@localhost ~]# ls -l
總計 68
drwxr-xr-x 2 root root  4096  5月 21 00:09
-rw------- 1 root root   958  3月 26 08:56 anaconda-ks.cfg
drwxr-xr-x 3 root root  4096  5月 21 00:43 backups
-rw-r--r-- 1 root root 31224  3月 26 08:56 install.log
-rw-r--r-- 1 root root  3510  3月 26 08:50 install.log.syslog

users

  • 每個使用者都有一個UID,uid=0為root
  • 使用者的UID存在/etc/passwd
  • 使用者通常被賦予一個home目錄
  • user只能存取屬於自己的檔案

groups

  • users都有一個groups
  • 每個group都有一個gid
  • GID存在/etc/group
  • 每個使用者擁有自己的私人群組,也可以加入他人的群組。
  1. Primary Group
  • 使用者能夠分享檔案給同群組的人。

Linux 檔案安全

  • 檔案都擁有a UID 及 a GID
  • 每個程序可以以 UID 或是 一個或多個 GID 來執行,通常配合執行程序的使用者身份來決定
  • 如果UID符合,則user權限可以執行。
  • 如果GID符合,則group權限可以執行。
  • 如果都不符合,則不可以執行。(屬於other權限)

權限型態

  • r:可讀檔案or列出目錄內容
  • w:可寫入檔案or建立移除檔案
  • x:可執行檔案or進入檔案目錄
  • -:沒有權限
[lcc09@localhost ~]$ ls -la
.....(略)...
-rw-r--r-- 1    lcc09   users  124      5月 21 00:36  .bashrc
drwxr-xr-x 5    lcc09   users 4096      5月 21 00:38  Projects
[    1   ][ 2  ][  3   ][  4 ][    5   ][      6     ][       7          ]
[  屬性  ][連結][擁有者][群組][檔案容量][  修改日期  ][      檔名        ]
  • 第一個欄位[1]
  -rw-r--r--
[A][B][C][D]
  • [A]屬性表這個檔案是「目錄、檔案或連結檔」
  1. [d]則是目錄
  2. [-]則是檔案
  3. [l]則表示為連結檔(link file)
  4. [b]則表示為裝置檔裡面的可供儲存的周邊設備
  5. [c]則表示為裝置檔裡面的序列埠設備,ex鍵盤、滑鼠
  • [B][C][D]為三個參數的組合。「r」代表可讀、「w」代表可寫、「x」代表可執行。
  1. [B]為「擁有人的權限」
  2. [C]為「同群組的權限」
  3. [D]為「其他的權限」
  • 所以底下這行的意思為:
  1. 此「Projects」唯一個目錄。
  2. 「lcc09」這個使用者,可以讀取(r)可以寫入(w)可以進入目錄(x)。
  3. 「users」這個群組,可以讀取(r)可以進入目錄(x)。
  4. 除了這些以的其他人,可以讀取(r)可以進入目錄(x)。
drwxr-xr-x 5    lcc09   users 4096      5月 21 00:38  Projects

改變檔案擁有者權限

  • 只有 root 可以更改檔案及群組的擁有者
  • 使用者擁有者(User-Ownership)權限可以使用 chown 指令修改:
  1. chown [-R] 使用者名稱 檔案|目錄
  • 群組擁有者(Group-Ownership)權限可以使用 chgrp 指令修改:
  1. chgrp [-R] 群組名稱 檔案|目錄
  • chown指令示範
[root@localhost ~]# ls install.log -l
-rw-r--r-- 1 root root 31224  3月 26 08:56 install.log
[root@localhost ~]# chown root.users install.log
[root@localhost ~]# ls install.log -l
-rw-r--r-- 1 root users 31224  3月 26 08:56 install.log
  • chgrp指令示範
[root@localhost ~]# chgrp root install.log
[root@localhost ~]# ls install.log -l
-rw-r--r-- 1 root root 31224  3月 26 08:56 install.log

改變權限(符號方法)

  • 基本上chmod指令可以透過符號表示的方式來執行達到改變我們要的屬性權限。
操作權限
u 擁有檔案的使用者(User)
g 擁有檔案的群組(Group)
o 其他使用者
a 以上三種類別
+ 增加權限
- 移除權限
= 等於此權限
r 讀取
w 寫入
x 可執行或可進入目錄
s Set user ID bit or group
t Sticky bit(目錄使用)
  • 更詳細的訊息請參考 「man 1p chmod 」or「man 1 chmod」
  • chmod 命令執行範例說明:
  1. 「chmod u+x files」這檔案的owner擁有執行(x)的權限,而讀取(r)及寫入(w)權限保留不變。
  2. 「chmod g=rw files」檔案的group設定為可讀取(r)、可寫入(w)但不可執行(x),不管之前的權限為何都會被移除。
  3. 「chmod u=rwx files」檔案的owner取得可讀取(r)、可寫入(w)即可執行的權限。
  4. 「chmod u=rwx,g=rw,o=r files」檔案的owner取得可讀取(r)、可寫入(w)即可執行的權限,檔案的group設定為可讀取(r)、可寫入(w)但不可執行(x),其他使用者取得可以讀取(r)的權限。
  5. 「chmod +x files」所有的users(owner, group, and others) 取得可執行(x)的權限。
  • chmod執行範例
[root@localhost ~]# ls install.log -l
-rwxrwxrwx 1 root root 31224  3月 26 08:56 install.log
[root@localhost ~]# chmod u=rwx,g=rw,o=r install.log
[root@localhost ~]# ls install.log -l
-rwxrw-r-- 1 root root 31224  3月 26 08:56 install.log

改變權限(數字方法)

  • chmod的權限也可以使用數字來表達,其中代表如下:
  1. Read: 4
  2. Write: 2
  3. Execute: 1
  • 如要設定一個檔案權限為:「rwxrw-r--」則為「764」
-rwx rw- r-- 1 root root 31224  3月 26 08:56 install.log
 421 420 400
  7   6   4
  • chmod數字權限表達執行範例:
[root@localhost ~]# ls install.log -l
-rwxrwxrwx 1 root root 31224  3月 26 08:56 install.log
[root@localhost ~]# chmod 764 install.log
[root@localhost ~]# ls install.log -l
-rwxrw-r-- 1 root root 31224  3月 26 08:56 install.log

改變權限(Nautilus)

  • 圖形介面的改變方式,就是找到檔案後,滑鼠右鍵選擇屬性功能,就會出現如下列的圖面。
Nautilus權限設定
  • 勾選你要的即可改變。
張貼留言

like