Linux 目錄許可權研究

yyy123456發表於2020-12-22

說明

我看了很多文章,沒能完全明白 Linux 目錄許可權,然後想其實可以自己窮舉一下,也就只有 64 種組合。
另外,Linux 還有幾個特殊檔案許可權,這裡不考慮。

首先寫一個最簡單指令碼,並執行之

#/bin/bash
rm -rf /var/temp
mkdir /var/temp
touch /var/temp/700
touch /var/temp/701
touch /var/temp/702
touch /var/temp/703
touch /var/temp/704
touch /var/temp/705
touch /var/temp/706
touch /var/temp/707
chmod 700 /var/temp/700
chmod 701 /var/temp/701
chmod 702 /var/temp/702
chmod 703 /var/temp/703
chmod 704 /var/temp/704
chmod 705 /var/temp/705
chmod 706 /var/temp/706
chmod 707 /var/temp/707

意思是用 root 身份建立目錄,裡面加入 8 個檔案,涵蓋各種許可權。
然後用普通使用者去做一些事情。包括:

  • 列出目錄的內容,
  • 列印目錄下各個檔案的內容,
  • 給目錄下新增一個檔案,
  • 刪除目錄下各個檔案,
  • 用 vi 編輯檔案。vi 文中沒寫,但我試過了。

窮舉的測試記錄

(1)目錄許可權(—)

root身份執行:chmod 700 /var/temp

切普通使用者
ls /var/temp 失敗
cat 全部失敗
touch /var/temp/123 失敗
rm 全部失敗

(2)目錄許可權(–x)

chmod 701 /var/temp

ls /var/temp 失敗
cat 前4失敗,後4成功。
touch /var/temp/123 失敗
rm 全部失敗

(3)目錄許可權(-w-)

chmod 702 /var/temp

ls /var/temp 失敗
cat 全部失敗
touch /var/temp/123 失敗
rm 全部失敗

(4)目錄許可權(-wx)

chmod 703 /var/temp

ls /var/temp 失敗
cat 前4失敗,後4成功。
touch /var/temp/123 成功
rm 全部成功

(5)目錄許可權(r–)

chmod 704 /var/temp

ls /var/temp 能看名字,不能看大小等資訊。
cat 全部失敗
touch 失敗
rm 全部失敗

(6)目錄許可權(r-x)

chmod 705 /var/temp

ls 全部成功
cat 前4失敗,後4成功。
touch 失敗
rm 全部失敗

(7)目錄許可權(rw-)

chmod 706 /var/temp

ls /var/temp 能看名字,不能看大小等資訊。
cat 全部失敗
touch 失敗
rm 全部失敗

(8)目錄許可權(rwx)

chmod 707 /var/temp

ls /var/temp 成功。
cat 前4失敗,後4成功。
touch 成功
rm 全部成功


總結

  1. 怎樣才能刪除一個檔案:其目錄同時具有wx許可權,與檔案自身無關。
  2. 怎樣才能給目錄新增檔案:目錄同時具有wx許可權。
  3. 怎樣才能修改一個檔案:檔案有w許可權,目錄具有x許可權。
  4. 怎樣才能列印一個檔案內容:檔案具有r許可權,目錄具有x許可權。
  5. 怎樣才能完全正確的列出目錄裡的全部檔案:目錄同時具有rx許可權。
  6. 注意到,以上全部5項都需要目錄具備x許可權。

Linux 真的好麻煩。。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章