上一章我們提到了檔案目錄還有 GUI 介面的操作方式,想必大家應該已經比較熟悉圖形化介面的樣子了!不過這篇我們要開始回頭講 Linux 比較底層的邏輯,可能會很難受,但還是非常重要的知識。
如果看到一半看不懂,沒有關係,畢竟大家都是第一次學 Linux,我也花了很多時間在消化呢!反正這篇文章你可以之後再回頭多看幾眼,說不定會豁然開朗哦!
在 Linux 世界中的擁有者和群組,關係到怎麼使用檔案,比如說:一個專題比賽中有兩個組別,A 組有三個人:P1
、P2
、P3
;B 組也有三個人:V1
、V2
、V3
。
組員們需要討論或報告,P1
做了一份簡報要讓 P2
、P3
可以新增、修改、刪除、查看,同時又不想讓 B 組的同學看到。那這時候就會用到「擁有者和群組」的權限控管!
再舉另外一個例子:王家有三個小孩:王老大
、王老二
、王老三
,各自都有自己的東西放在房間的櫃子抽屜,王老大
和 王老二
就可以去 王老三
的房間打開抽屜看裡面的信或東西。
那理所當然,許家的三姊妹肯定是不能進去王家的。
剛好 王老三
認識隔壁許家的 許三姊
,就可以讓 許三姊
自由的進出王家。而且在抽屜放了一封情書想送給她,不希望被 王老大
、王老二
看到。他也可以把抽屜上鎖,這樣就算是家人也看不到自己的私人物品哦!
也就是說:
王老大
、王老二
、王老三
。王家
。許家
所有人。你也可以把擁有者理解為「User」使用者。
至於你說上面像天使一樣的「root」是什麼東西?它就是 Linux 的「神」可以對所有人的檔案做任何操作喔!
那麼我們要怎麼讓 王老三
的情書不被 王老大
、王老二
看到呢?卻能夠讓 許三姊
看到,但是她也只能看或丟掉,不可能去重寫情書的內容嘛!這時候我們就要來講講權限設定!
如果你在 Linux 文字介面輸入
ls -l
那你會看到像是這樣的東西
drwxr-xr-x 2 raychao raychao 4096 Sep 15 23:35 Desktop
drwxr-xr-x 2 raychao raychao 4096 Sep 15 22:49 Documents
drwxr-xr-x 2 raychao raychao 4096 Sep 15 22:49 Downloads
drwxr-xr-x 2 raychao raychao 4096 Sep 15 22:49 Music
drwxr-xr-x 2 raychao raychao 4096 Sep 17 00:22 Pictures
-rwxrwxrwx 1 raychao raychao 0 Sep 18 20:23 file.txt
[ 權限 ][ 連結 ][ 擁有者 ][ 群組 ][ 檔案容量 ][ 修改日期 ][ 檔名 ]
這邊我們就要來解釋一下最前面有著 -
、d
、r
、w
、x
的權限到底是什麼東西?
-
:表示一個「檔案」。d
:表示一個「目錄」。r
:就是英文的「Read」擁有讀取、查看的意思。w
:就是英文的「Write」擁有修改、編輯、刪除的意思。x
:就是英文的「eXecute」擁有執行的意思。而 Linux 的設計就是第一個字可以辨別它是檔案還是目錄(資料夾),後面三個字為一組,順序是「擁有者」、「群組」、「其他人」。
- rwx rwx rwx
[類型][擁有者][群組][其他人]
舉例來說:王老三
的情書被放在上鎖的抽屜,那就等於:
那麼抽屜的權限就是:drwx---r-x
。
而情書的權限就是:-rwx---r--
。
你說為什麼抽屜對 許三姊
來說,權限是 r-x
?
這個 x
代表的是什麼意思?
又為什麼對情書的權限是 r--
?
在 Linux 的世界中,如果你想要「進入」一個目錄那就等於你要「執行」目錄哦!
也就是說 許三姊
可以執行抽屜,看到裡面的東西。但是她只能看到情書,並不能執行情書!這是因為情書裡面沒有像程式碼一樣可以跑得程序哦!
因為使用 Linux 架設系統的企業和公司實在是太多了,一台電腦同時還能給多個使用者去操作,那每個人都有自己設定權限的風格,實在太複雜了。這時候就出現了 Filesystem Hierarchy Standard (FHS) 標準。
根據 FHS 標準,目的是讓每個使用者清楚瞭解目錄和檔案應該放在哪個位置,讓大家使用 Linux 的時候有一個依據可以快速判斷不同目錄和檔案的類型。所以我們回到昨天的那張圖來看看這些目錄究竟是放些什麼東西?
在我們的圖形化介面中可以看到 File System 裡面有各式各樣不同的目錄,而 FHS 針對這些目錄做出的標準可以對照下表:
目錄 | 應放置檔案內容 |
---|---|
/bin | 放置單人維護模式下也能操作的指令,可被 root 與一般帳號使用,例如:cat , chmod , chown , date , mv , mkdir , cp , bash 等。 |
/boot | 放置開機所需檔案,如 Linux 核心檔 (vmlinuz)、開機選單與設定檔,若使用 grub2 則會有 /boot/grub2/ 目錄。 |
/dev | 所有裝置與周邊設備皆以檔案型態存在此目錄,如 /dev/null , /dev/zero , /dev/tty , /dev/loop* , /dev/sd* 等。 |
/etc | 系統主要設定檔放置處,例如帳號密碼 /etc/passwd 、檔案系統表 /etc/fstab 、系統資訊 /etc/issue 等。僅 root 可修改。 |
/lib | 開機時會用到的函式庫,以及 /bin 與 /sbin 指令所需的函式庫。 |
/lib64 | 存放與 /lib 不同格式的二進位函式庫,例如 64 位元。 |
/media | 暫時掛載可移除裝置,如軟碟、光碟、DVD /media/floppy , /media/cdrom 。 |
/mnt | 傳統上用來暫時掛載額外裝置。 |
/opt | 第三方協力軟體的安裝目錄,如 KDE 桌面環境。自行安裝的軟體也可放此目錄。 |
/proc | 這是一個虛擬檔案系統,用來記錄系統與程序的資訊,例如 /proc/cpuinfo , /proc/meminfo 。 |
/root | 系統管理員 root 的家目錄,與根目錄放在同一分割槽,方便單人維護模式使用。 |
/run | 系統開機後產生的資訊存放處,效能佳,取代舊的 /var/run 。 |
/sbin | 放置系統設定相關的指令,僅 root 可用於設定系統,例如 fdisk , fsck , ifconfig , mkfs 。 |
/srv | 網路服務資料目錄,如 /srv/www/ 可存放網站資料。 |
/sys | 這也是一個虛擬檔案系統,主要用來呈現「裝置 (devices)」與「核心 (kernel)」之間的互動,例如 /sys/class/net/ , /sys/block/ 。 |
/tmp | 暫時存放檔案的目錄,任何人可使用,建議開機時清空。 |
/usr | 第二層 FHS 設定,後續介紹。 |
/var | 第二層 FHS 設定,主要放置變動性資料,後續介紹。 |
這邊直接給大家指令,然後說明一下這些指令的用法:
指令 | 功能 | 權限舉例 | 下指令的方式 | 呈現的結果 |
---|---|---|---|---|
chown | 改變檔案擁有者 | -r-xr--r-x | chown p1 file.txt |
file.txt 的擁有者變成 p1 |
chgrp | 改變檔案所屬群組 | -r-xrw-rw- | chgrp home file.txt |
file.txt 的群組變成 home |
chmod | 改變檔案的權限 | -rwxr-x--- | chmod 750 file.txt |
file.txt 的權限變成 -rwxr-x--- |
你說在 chmod
裡面的 750
是什麼意思?問得可真好!
在權限的數字權重當中是這樣配置的:
r
= 4w
= 2x
= 1在這樣的權重下,你可以隨意搭配出 1~7 不一樣數字的權重,同時也就代表著不一樣的權限,而前面有提到「擁有者」、「群組」、「其他人」這個順序,也就是說它會是一個三位數的數字組合!
比方說:-rw-rwx-wx
就會是 673
。你可以用 chmod 673 file.txt
來設定檔案的權限。
你可以算算看 1~7 大概會是多少,如果計算正確的話,恭喜你!已經學會怎麼用 chmod
來快速改變權限囉!
這邊來出五個小題目,讓你算算看!權重大概是多少呢?
1. -rwxr-x---
2. -rw-rw-r--
3. -r--rwx-wx
4. --w--w--w-
5. -rwxrwxrwx
答案分別是
1. 750
2. 664
3. 473
4. 222
5. 777
有算對嗎?如果算對的話,很高興你已經熟悉 chmod
權限設定的方式了,如果沒算對的話可以再回頭看一次數字權重的部分哦!
鳥哥的 Linux 私房菜
maline77 的鐵人賽文章
Runoob 菜鳥教程