檔案/目錄的使用權限設定:
Step 0 : 前言
Step 1 : 權限的第一個位置所代表的意義
Step 2 : Owner 的權限
Step 3 : Group 的權限
Step 4 : Other 的權限
Step0:前言
Linux 系統下的檔案有所謂的權限設定,系統會依據這些權限的設定來決定使用者是否能讀取,寫入或執行指令.
#ls -l (ls "list directory contents",-l "use a long listing format")就可以看到檔案權限目前是如何設定的.
[root@benjr ~]# ls -l -rw-r--r-- 1 root root 1120 Feb 15 01:58 testfile
以上欄位所代表的意思如下
- -rw-r–r– : [檔案屬性]
- 1 : [檔案數]
- root : [擁有者]
- root : [所有者群組]
- 1120 : [大小]
- Feb 15 01:58 : [建檔日期]
- testfile : [檔名]
這邊和檔案權限有關的是[檔案屬性][擁有者][所有者群組] 以上 -rw-r–r– [檔案屬性]的每一個位置都有他所代表的意思,每三個為一組,每一組皆為 rwx (以上的範例 rw- 為一組,r– 為另一組 ,r–為最後一組,第一個 "-" 有其他意義,最後面會再介紹),因為每一組皆代表不同人所有擁有的權限,至於要怎麼看請看下表所示.
-rw- r-- r-- owner Group Other
第一組 Owner 代表的權限是針對自己所擁有的權限,也又是剛剛看到的[擁有者].
第二組 Group代表同一群組的使用者所擁有的權限,也又是剛剛看到的[所有者群組].
第三組 Other 代表[其他的使用者]所擁有的權限.
而權限可以區分為 rwx ,而當我們在看 rwx 時檔案和目錄是具有不同的意義
I. 對檔案而言:
可讀(r):可以cat檔案內容
可寫(w):可以cp,move檔案的內容
可執行(x):可以執行檔案
II. 對目錄而言:
可讀(r):對目錄而言單獨有此權限是沒有用的,還要同時有x的權限.才能有 ls 讀取目錄的內容.
可寫(w): 對目錄而言單獨有此權限是沒有用的,還要同時有x的權限.才能有cp,move,touch目錄內的檔案.
note: 當目錄擁有 w 的權限而目錄下的檔案並沒有設定 w 的權限,此時檔案還是可以編輯及刪除.
可執行(x): 具有 cd (change directory)進入目錄的權限
note:當檔案的owner,group為同一人時,權限是看owner的.
Step 1 :權限的第一個位置所代表的意義
-:一般檔案
d:目錄
l:sofelink 捷徑,關於 link 請參考硬式與軟式連結
b:block device 儲存裝置
c:charactor device 字元輸出/入裝置
[root@benjr ~]# ls -l total 96 -rwx------ 1 root root 1047 Mar 19 21:12 anaconda-ks.cfg drwx------ 2 root root 4096 Mar 19 21:20 Desktop lrwxrwxrwx 1 root root 11 Aug 16 21:33 install.log.link -> install.log
可以看到上面有三種型態:
[root@benjr ~]# ll /dev/input/mouse crw------- 1 root root 10, 149 Sep 15 2003 /dev/input/mouse
可以看到 mouse 屬於 c:charactor device 字元輸出/入裝置,因為當 mouse 再傳送資料時是一個個的字元來傳送.
[root@benjr dev]# ls -l /dev/hda brw-rw---- 1 root disk 3, 0 Sep 15 2003 hda
可以看到 Hard Disk 屬於 b:block device 儲存裝置,因為當 Hard Disk 再傳送資料時是區塊來傳送.
Step 2:Owner 的權限
Owner 代表的權限是針對自己所擁有的權限
接下來這些範例說明,使用到目錄 /fs1 和 user1 user2 user3 的使用者以及 group1 group2 群組,請用下面的方式來建立
root 登入系統
[root@benjr ~]# adduser user1 [root@benjr ~]# adduser user2 [root@benjr ~]# adduser user3 [root@benjr ~]# passwd user1 [root@benjr ~]# passwd user2 [root@benjr ~]# passwd user3
設定群組
[root@benjr ~]# groupadd group1 [root@benjr ~]# groupadd group2 [root@benjr ~]# vi /etc/group .................. group1:x:503:user1,user2 group2:x:504:user3
user1 user2 屬於 group1 群組
user3 屬於 group2 群組
[root@unsvr root]# mkdir /fs1 [root@unsvr root]# chmod -R 777 /fs1
讓所有的使用者都能新增檔案進入 /fs1 目錄的權限
ex:Owner 所擁有的權限
user1 登入系統
[user1@benjr user1]# cd /fs1 [user1@benjr fs1]# echo "Create by user1" > user1.txt [user1@benjr fs1]# chmod go-rwx user1.txt [user1@benjr fs1]# ll user1.txt -rw------- 1 user1 user1 7 Feb 17 13:31 user1.txt
只有 user1 有權限讀寫這個檔案.
[user1@benjr fs1]# echo "Modify by user1" >> user1.txt [user1@benjr fs1]# cat user1.txt Create by user1 Modify by user1
user1 也可以修改 user1.txt 檔案了
Step 3. Group 的權限
Group代表同一群組的使用者所擁有的權限
ex:使用者 user1 建立的檔案開讀寫的權限給群組 group1
user1 登入系統
[user1@benjr user1]# cd /fs1 [user1@benjr fs1]# echo "Create by user1" > user1.txt [user1@benjr fs1]# chmod o-rwx user1.txt [user1@benjr fs1]# ll user1.txt -rw-rw---- 1 user1 user1 17 Jul 14 22:11 user1.txt
user2 登入系統
[user2@benjr user2]# cd /fs1 [user2@benjr fs1]# cat user1.txt cat : user1.txt Permission denied
因為此時 user1.txt 屬於 user1 這個 group,所以要將他的群組改成 group1(group1 群組的人包括 user1 user2)
user1 登入系統
[user1@benjr user1]# cd /fs1 [user1@benjr fs1]# chown .group1 user1.txt [user1@benjr fs1]# ll user1.txt -rw-rw---- 1 user1 group1 17 Jul 14 22:11 user1.txt
修改 user1.txt 的群組為 group1(group1 群組的人包括 user1 user2),預設 group 的人有讀寫的權限.
user2 登入系統
[user2@benjr user2]# cd /fs1 [user2@benjr fs1]# cat user1.txt Create by user1
user2 可以讀取 user1.txt 檔案了
[user2@benjr fs1]# echo "Modify by user2" >> user1.txt [user2@benjr fs1]# cat user1.txt Create by user1 Modify by user2
user2 也可以修改 user1.txt 檔案了
ex:檔案的owner,group為同一人時權限誰為主?
user1 登入系統
[user1@benjr user1] # cd /fs1 [user1@benjr fs1] # echo "Create by user1" > user1.txt [user1@benjr fs1] # chmod 070 user1.txt [user1@benjr fs1] # ll ----rw---- 1 user1 user1 7 Feb 17 13:31 user1
這裡要注意的是當檔案的owner,group為同一人時,權限是看owner的.
[user1@benjr fs1]# cat user1.txt cat: test : Permission denied.
因此產生 Permission denied 的問題了
Step 4.Other 的權限
Other 代表其他的使用者所擁有的權限
user1 登入系統
[user1@benjr user1]# cd /fs1 [user1@benjr fs1]# echo "Create by user1" > user1.txt [user1@benjr fs1]# ll user1.txt -rw-rw-r-- 1 user1 user1 17 Jul 14 22:11 user1.txt
此時 other (除了 user1本身,以及 user1 群組) 有讀的權限
user3 登入系統
[user3@benjr user3]# cd /fs1 [user3@benjr fs1]# cat user1.txt Create by user1
可以看到 user3 有權限讀寫這個檔案.
[user3@benjr fs1]# echo "Modify by user3" >> user1.txt -bash: user1.txt : Permission denied.
user3 無法修改 user1.txt 檔案了.你可以依據實際情況來開啟寫入的權限.