發新話題

檔案/目錄的使用權限設定

檔案/目錄的使用權限設定

Step0:前言
Linux 系統下的檔案有所謂的權限設定,系統會依據這些權限的設定來決定使用者是否能讀取,寫入或執行指令 .
#ls -l (ls "list directory contents",-l "use a long listing format")就可以看到檔案權限目前是如何設定的.
------------------------------------------------------------------------
#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--為最後一組,第一個 "-" 有其他意義,最後面會再介紹),因為每一組皆代表不同人所有擁有的權限,至於要怎麼看請看下表所示.

r w x 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@unsvr root]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@dexter root]# ll /dev/input/mouse
crw------- 1 root root 10, 149 Sep 15 2003 /dev/input/mouse
可以看到 mouse 屬於 c:charactor device 字元輸出/入裝置,因為當 mouse 再傳送資料時是一個個的字元來傳送.

[root@unsvr 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@unsvr root]#adduser user1
[root@unsvr root]#adduser user2
[root@unsvr root]#adduser user3
[root@unsvr root]#passwd user1
[root@unsvr root]#passwd user2
[root@unsvr root]#passwd user3
設定群組
[root@unsvr root]#groupadd group1
[root@unsvr root]#groupadd group2
[root@unsvr root]#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@unsvr user1]# cd /fs1
[user1@unsvr fs1]# echo "Create by user1" > user1.txt
[user1@unsvr fs1]# chmod go-rwx user1.txt
[user1@unsvr fs1]# ll user1.txt
-rw------- 1 user1 user1 7 Feb 17 13:31 user1.txt
只有 user1 有權限讀寫這個檔案.
[user1@unsvr fs1]# echo "Modify by user1" >> user1.txt
[user1@unsvr fs1]# cat user1.txt
Create by user1
Modify by user1
user1 也可以修改 user1.txt 檔案了

Step 3. Group 的權限
Group代表同一群組的使用者所擁有的權限

ex:使用者 user1 建立的檔案開讀寫的權限給群組 group1
user1 登入系統
[user1@unsvr user1]# cd /fs1
[user1@unsvr fs1]# echo "Create by user1" > user1.txt
[user1@unsvr fs1]# chmod o-rwx user1.txt
[user1@unsvr fs1]# ll user1.txt
-rw-rw---- 1 user1 user1 17 Jul 14 22:11 user1.txt

user2 登入系統
[user2@unsvr user2]# cd /fs1
[user2@unsvr fs1]# cat user1.txt
cat : user1.txt Permission denied
因為此時 user1.txt 屬於 user1 這個 group,所以要將他的群組改成 group1(group1 群組的人包括 user1 user2)

user1 登入系統
[user1@unsvr user1]# cd /fs1
[user1@unsvr fs1]#chown .group1 user1.txt
[user1@unsvr 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@unsvr user2]# cd /fs1
[user2@unsvr fs1]# cat user1.txt
Create by user1
user2 可以讀取 user1.txt 檔案了
[user2@unsvr fs1]# echo "Modify by user2" >> user1.txt
[user2@unsvr fs1]# cat user1.txt
Create by user1
Modify by user2
user2 也可以修改 user1.txt 檔案了

ex:檔案的owner,group為同一人時權限誰為主?
user1 登入系統
[user1@unsvr user1] # cd /fs1
[user1@unsvr fs1] # echo "Create by user1" > user1.txt
[user1@unsvr fs1] # chmod 070 user1.txt
[user1@unsvr fs1] # ll
----rw---- 1 user1 user1 7 Feb 17 13:31 user1

這裡要注意的是當檔案的owner,group為同一人時,權限是看owner的.
[user1@unsvr fs1]#cat user1.txt
cat: test : Permission denied.
因此產生 Permission denied 的問題了

Step 4.Other 的權限
Other 代表其他的使用者所擁有的權限

user1 登入系統
[user1@unsvr user1]# cd /fs1
[user1@unsvr fs1]# echo "Create by user1" > user1.txt
[user1@unsvr fs1]# ll user1.txt
-rw-rw-r-- 1 user1 user1 17 Jul 14 22:11 user1.txt
此時 other (除了 user1本身,以及 user1 群組) 有讀的權限
user3 登入系統
[user3@unsvr user3]# cd /fs1
[user3@unsvr fs1]# cat user1.txt
Create by user1
可以看到 user3 有權限讀寫這個檔案.
[user3@unsvr fs1]# echo "Modify by user3" >> user1.txt
-bash: user1.txt : Permission denied.
user3 無法修改 user1.txt 檔案了.你可以依據實際情況來開啟寫入的權限.

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。