在上一章節中,我們介紹了基本使用者管理,在這一章節中,介紹檔案之目錄與檔案系統權限。
不論是檔案與目錄都有權限,有了權限才可以控制使用者進行對應的檔案與目錄權限進行管理,相關的檔案與目錄管理權限所整理出的清單如下:
cd
指令切換進目錄並當成當前的工作目錄,通常也會需要與read讀取的權限坐搭配,以清單方式找到目錄底下所有的目錄與檔案,使用ls
指令並搭配-l
指令,並指定檔案則可以將此檔案的權限與擁有者等資訊列出,相關的指令執行輸出訊息如下:
[rockylinux@workstation ~]$ ls -l home_list.txt
-rw-rw-r--. 1 rockylinux rockylinux 81 Sep 23 00:36 home_list.txt
若要查看目錄的權限與擁有者,則還需要加上-d
之參數,選項可以組合起來或是分開都可以,相關的指令執行後輸出的訊息如下:
[rockylinux@workstation ~]$ ls -l -d Downloads/
drwxr-xr-x. 2 rockylinux rockylinux 6 Sep 18 00:05 Downloads/
[rockylinux@workstation ~]$ ls -ld Downloads/
drwxr-xr-x. 2 rockylinux rockylinux 6 Sep 18 00:05 Downloads/
從上面輸出的訊息得知,第一個字元所表示的訊息如下:
-
指的是一般的檔案。d
指的是目錄。l
指的是軟連結(soft link)。b
和c
則是代表硬體裝置或是特殊的目的的檔案,如p
和s
。可以使用chmod
命令來改變使用者的存取權限,下列提供了幾種符號來做改變使用者的權限:
透過上述的符號並搭配chmod
指令的使用,則可以得到下列的指令範例:
chmod u-w,g+x,o-w file
chmod u=rx,g=rx,o=rx file
chmod a+x file
上述第一個指令的意思是:
第二個指令的意思是:
第三個指令為:
數字方法以10進位來看,如下表示:
舉例來說,上述的chmod u=rx,g=rx,o=rx file
指令改成數字的表示方法就會變成:chmod 555 file
,因為r與x之數字相加為5。chmod 644 file
則可以等價成chmod u=rw,g=r,o=r file
指令。
而比對權限的原則也很簡單,首先可以先比使用者(user),接著再比群組(group),最後再比其他人(others)。
可以使用chown
指令將指定的檔案或是目錄的擁有者作改變,相關的指令用法如下:
chown rocky test_file
若是要將目錄之擁有者改變,則需要一併將此目錄底下的檔案作改變的話,則需要加上-R之參數,這個參數指的是遞迴的意思,將指定的目錄下走訪此目錄下所有的目錄與檔案,並將每個檔案與目錄的擁有者指定成rocky
,相關指令的用法如下:
chown -R rocky test_dir
若是只要改變群組的擁有者名稱,則可以使用下列的指令做到:
chown :admins test_dir
除了上述的方式更改群組的擁有者之外,也可以使用chgrp
來進行群組擁有者的變更。
若是要同時改變使用者與群組的擁有,則可以使用下列的指令,而使用者與群組名稱利用冒號(:)隔開:
chown visitor:guests test_dir
檔案與目錄有幾個特殊權限列表,相關的列表如下:
cat
指令指定成這個權限,則可以將只有root權限的使用者檔案也可以輸出內容出來,這個權限對於目錄不會有影響,相關的指令執行結果如下:[rockylinux@workstation ~]$ cat /etc/sudoers
cat: /etc/sudoers: Permission denied
[rockylinux@workstation ~]$ sudo chmod u+s /usr/bin/cat
[rockylinux@workstation ~]$ cat /etc/sudoers
## Sudoers allows particular users to run various commands as
.......
g+s(sgid),指的是不管是哪個使用者在這個目錄下建立的檔案或是目錄,此檔案或是目錄所擁有的群組都不屬於建立這個的群組,而是屬於擁有g+s的目錄群組。
一般用在公用的目录:o+t,設定完成之後,公用目錄下的各個使用者所自己建立檔案,其他人無法管理,只有建立的檔案的使用者自己可以管理,當然,除了root使用者之外。
u+s之數字代表為4,g+s則代表是2,o+t則代表是1,不設定則為:0,若指令為:chmod 2770 directory
,則將此目錄設定成g+s
6、而使用者設定成可以讀取、編輯與執行,群組設定成可以讀取、編輯與執行,其他的使用者則都沒有權限可以存取指定的目錄。
umask,指的是當使用者建立檔案或是目錄的時候預先會給定一個權限的設定,預設權限要怎麼知道確切的十進位數字是多少?有一個很簡單的計算方式,最大的數字權限為:777,最小為:000,因此當umask設定成027時候,則算法如下:
因此預設的十進位數字為:640,此外,也可以使用umask
指令來暫時設定預設的權限,例如使用umask 027
即可以改變預設的權限,若要永久的設定,則可以更改/etc/profile或是/etc/bashrc之檔案,當然也可以在使用者自己底下的設定檔:.bashrc或是.bash_profile檔案進行覆寫設定。