iT邦幫忙

2025 iThome 鐵人賽

DAY 4
1
佛心分享-IT 人自學之術

從零開始的 Linux 世界系列 第 4

【Day.4】檔案權限與目錄配置

  • 分享至 

  • xImage
  •  

上一章我們提到了檔案目錄還有 GUI 介面的操作方式,想必大家應該已經比較熟悉圖形化介面的樣子了!不過這篇我們要開始回頭講 Linux 比較底層的邏輯,可能會很難受,但還是非常重要的知識。

如果看到一半看不懂,沒有關係,畢竟大家都是第一次學 Linux,我也花了很多時間在消化呢!反正這篇文章你可以之後再回頭多看幾眼,說不定會豁然開朗哦!

✒️ 擁有者和群組

在 Linux 世界中的擁有者和群組,關係到怎麼使用檔案,比如說:一個專題比賽中有兩個組別,A 組有三個人:P1P2P3;B 組也有三個人:V1V2V3

組員們需要討論或報告,P1 做了一份簡報要讓 P2P3 可以新增、修改、刪除、查看,同時又不想讓 B 組的同學看到。那這時候就會用到「擁有者和群組」的權限控管!


再舉另外一個例子:王家有三個小孩:王老大王老二王老三,各自都有自己的東西放在房間的櫃子抽屜,王老大王老二 就可以去 王老三 的房間打開抽屜看裡面的信或東西。

那理所當然,許家的三姊妹肯定是不能進去王家的。

剛好 王老三 認識隔壁許家的 許三姊,就可以讓 許三姊 自由的進出王家。而且在抽屜放了一封情書想送給她,不希望被 王老大王老二 看到。他也可以把抽屜上鎖,這樣就算是家人也看不到自己的私人物品哦!

也就是說:

  1. 「Owner」擁有者:就是 王老大王老二王老三
  2. 「Group」群組:就是整個 王家
  3. 「Other」其他人:就是對王家來說的 許家 所有人。

你也可以把擁有者理解為「User」使用者。

https://ithelp.ithome.com.tw/upload/images/20250918/20176048W0CJ3wyd2M.png

至於你說上面像天使一樣的「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
[   權限   ][ 連結 ][ 擁有者 ][  群組  ][  檔案容量  ][   修改日期   ][  檔名  ]
  1. 權限:顯示檔案或目錄的類型與權限。
  2. 連結:表示有多少個連結指向該檔案或目錄,類似 Windows 的「捷徑」。
  3. 擁有者:這個檔案的擁有者名稱。
  4. 群組:檔案所屬的群組,群組內的成員可以依照群組權限來操作檔案。
  5. 檔案容量:檔案的大小,以位元組 (bytes) 為單位顯示。
  6. 修改日期:檔案最後一次被修改的日期與時間。
  7. 檔名:檔案或目錄的名稱。如果是目錄,會以正常名稱顯示;如果是檔案,也可能帶有副檔名。

這邊我們就要來解釋一下最前面有著 -drwx 的權限到底是什麼東西?

  1. -:表示一個「檔案」。
  2. d:表示一個「目錄」。
  3. r:就是英文的「Read」擁有讀取、查看的意思。
  4. w:就是英文的「Write」擁有修改、編輯、刪除的意思。
  5. x:就是英文的「eXecute」擁有執行的意思。

而 Linux 的設計就是第一個字可以辨別它是檔案還是目錄(資料夾),後面三個字為一組,順序是「擁有者」、「群組」、「其他人」。

  -     rwx   rwx   rwx
[類型][擁有者][群組][其他人]

舉例來說:王老三 的情書被放在上鎖的抽屜,那就等於:

  • 抽屜 = 目錄。
  • 王老三(Owner):可以打開、放東西、刪東西。
  • 王老大 & 王老二(Group):完全沒有鑰匙,當然就不能打開抽屜,更不能對抽屜裡的東西做任何操作。
  • 許三姊(Others):有鑰匙能打開、看到裡面有什麼檔案,但不能隨便塞新東西或丟掉別人的東西。

那麼抽屜的權限就是:drwx---r-x
而情書的權限就是:-rwx---r--


你說為什麼抽屜對 許三姊 來說,權限是 r-x
這個 x 代表的是什麼意思?
又為什麼對情書的權限是 r--

在 Linux 的世界中,如果你想要「進入」一個目錄那就等於你要「執行」目錄哦!

也就是說 許三姊 可以執行抽屜,看到裡面的東西。但是她只能看到情書,並不能執行情書!這是因為情書裡面沒有像程式碼一樣可以跑得程序哦!

⚙️ 目錄的配置

因為使用 Linux 架設系統的企業和公司實在是太多了,一台電腦同時還能給多個使用者去操作,那每個人都有自己設定權限的風格,實在太複雜了。這時候就出現了 Filesystem Hierarchy Standard (FHS) 標準。

根據 FHS 標準,目的是讓每個使用者清楚瞭解目錄和檔案應該放在哪個位置,讓大家使用 Linux 的時候有一個依據可以快速判斷不同目錄和檔案的類型。所以我們回到昨天的那張圖來看看這些目錄究竟是放些什麼東西?

https://ithelp.ithome.com.tw/upload/images/20250918/20176048hfi0DOB2YV.png

在我們的圖形化介面中可以看到 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 是什麼意思?問得可真好!
在權限的數字權重當中是這樣配置的:

  1. Read r = 4
  2. Write w = 2
  3. Execute x = 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 菜鳥教程


上一篇
【Day.3】介面操作方式及檔案目錄
下一篇
【Day.5】開始寫自己第一個檔案!
系列文
從零開始的 Linux 世界7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言