前面談了針對檔案的讀寫之後,我們終於可以實際看到權限的效果,以及討論怎麼設置權限了。
權限的設置,如之前說過的一樣,如果一個檔案沒有 r
的權限,那麼該用戶就不能讀取
ls -al /etc
-r--r----- 1 root root 4328 Feb 8 2021 sudoers
cat /etc/sudoers
cat: /etc/sudoers: Permission denied
如果沒有 w
的權限,那麼就不能寫入
vim /etc/sudoers
嘗試編輯存檔後會看到
E45: 'readonly' option is set (add ! to override)
那麼。要怎麼樣去編輯權限呢?這邊要用到 chmod
這個指令
NAME
chmod - change file mode bits
實際使用的方式如下
sudo chmod 777 aaa.txt
ls -al
-rwxrwxrwx 1 ec2-user ec2-user 5 Sep 12 15:38 aaa.txt
可能有些人開始會有些疑問了:這邊的 777
是怎麼回事?
其實是這樣的。Linux 設計權限時,很聰明的用二進位來設計。每個數字分別代表本人、同群組、其他人的權限。在單個數字中,如果二進位包含 4
代表可以讀取,包含 2
代表可以寫入,包含 1
代表可以執行。
所以,我們剛剛所使用的 777
,就代表對本人、同群組、其他人,都同時可以讀取、編輯、執行的意思。簡單的說,就是把權限全部開放!
所以,如果我們想要,本人可以讀取、編輯、不能執行。同群組以及其他人都不能執行的話,那就要用 600
sudo chmod 600 aaa.txt
ls -al
-rw------- 1 ec2-user ec2-user 5 Sep 12 15:38 aaa.txt
是不是很神奇呢?
當然,我們也可以用比較語意化的寫法,這樣對不熟悉二進位權限設置的人,會比較好懂一點:
+
代表增加,-
代表減少。r
、w
、x
分別代表讀取、寫入、執行。
chmod +x aaa.txt
-rwx--x--x 1 ec2-user ec2-user 5 Sep 12 15:38 aaa.txt
u
可以設置自己的權限,用 g
可以調整對群組(group)的權限
chmod g+x aaa.txt
-rw---x--- 1 ec2-user ec2-user 5 Sep 12 15:38 aaa.txt
用 o
可以調整對其他人(other)的權限
chmod o+x aaa.txt
-rw------x 1 ec2-user ec2-user 5 Sep 12 15:38 aaa.txt
這邊是可以組合的,你可以任意組合出你想要的權限設置
chmod u-w,g+w,o+x aaa.txt
-r---w---x 1 ec2-user ec2-user 5 Sep 12 15:38 aaa.txt
是不是很有趣呢?
今天有關權限分享的部分就到這邊為止,各位明天見!