有了上次的檔案與目錄觀念,這次將會介紹三個指令,以穿插實例的方式進行。
root 輸入 ls -l
看到底下有一個名叫 aaa 的資料夾,使用者及群組都是 user
drwxr-xr-x 2 user user 4.0K 八 07 20:07 aaa
他一時手癢一時爽,把上面群組欄位的 user 改成 root。
root$> sudo chgrp root
這個時候目錄資訊就會變成
drwxr-xr-x 2 user root 4.0K 八 07 20:08 aaa
如果 user 現在把 aaa 搬移到其他地方會有權限問題嗎?
答案是不會。
因爲使用者目前的權限是 r/w/x ,而更改目錄結構的權限是 w,因此更改群組不會影響目前的使用者 user。
那如果 root 的手真的控制不住繼續改成這樣呢?
root$> chown root:user aaa
結果如下:
drwxr-xr-x 2 root user 4.0K 八 07 20:09 aaa
因爲上面指令中 root:user 的相對位置代表使用者:群組,因此 root 把檔案擁有者改成 root,而 user 所屬的目錄權限只有 r/x,所以 user 可以 cd 進去 aaa 可是無法對 aaa 做任何操作,例如新增檔案、搬移 aaa、刪除 aaa。
當 user 想要建立 lll 的檔案時
mkdir: 不能建立目錄 ‘lll’: Permission denied
user 在底下建立了一個資料夾叫做 nice-videos,這是他現在的權限
drwx-wx--- 2 user roommate 4.0K 八 07 20:09 nice-videos
user 的室友 aming 和他同個群組的,剛好逛到這個資料夾,於是他進入 nice-videos,然後隨手輸入cd a
"阿,原來是按照英文字母分類阿"
aming 進去了。
然後他看到了一個檔案叫做 keroro軍操.mp4還有其他mp4結尾的檔案,看到這種檔名 aming 覺得一定不單純決定先幫使用 rm 刪除全部檔案。
sure you want to delete all the files in /home/cjchengtw/nice-videos [yn]? y
user 後來發現檔案不見了,很氣。
得知是 aming 幹的之後爲了避免之後同樣情況發生,決定關閉他進入及修改目錄的權限,但他想要大家看得到卻進不去,因此根據 chmod 的語法
u(使用者) +(加入) r
chmod g (群組) -(除去) w 檔案或目錄
o (其他使用者) =(設定) x
a
他下
chmod g-wx+r,o+r ./
意思就是在目前資料夾對所有檔案關閉群組wx的權限、增加 r 的權限,並新增其他使用者 r 權限。
如果有算權限值的話也能這樣下:
chmod 711 ./
剛剛的檔案結構是 /nice-videos/a/keroro軍操.mp4,我們簡化成 /dir1/dir2/file1 來討論 aming 要達成他理想中操作的最小權限。
操作動作 | dir1 | dir1/dir2/ | dir/dir2/file1 | 重點 |
---|---|---|---|---|
讀取 file1 內容 | x | x | r | 要能夠進入 /dir1 才能讀到裡面的文件資料 |
修改 file1 內容 | x | x | w | 能夠進入 /dir1 且修改 file1 才行 |
執行 file1 內容 | x | x | x | 能夠進入 /dir1 且 file1 能運作才行 |
刪除 file1 檔案 | wx | w | - | 能夠進入 /dir1 具有目錄修改的權限即可 |
所以我們知道就算 aming 沒有閱讀目錄結構的權限 r,只要他擁有進入目錄的權限 x,就像摸黑在抽屜中找東西一樣,還是有機會通靈找到的。