Linux – 基礎權限設定

檔案/目錄的使用權限設定:
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 檔案了.你可以依據實際情況來開啟寫入的權限.

沒有解決問題,試試搜尋本站其他內容

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料