iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
IT管理

Rocky Linux 8:系統管理與維運實戰系列 第 11

第9章:操作目錄與檔案權限介紹

  • 分享至 

  • xImage
  •  

前言

在上一章節中,我們介紹了基本使用者管理,在這一章節中,介紹檔案之目錄與檔案系統權限。

Linux檔案系統權限

不論是檔案與目錄都有權限,有了權限才可以控制使用者進行對應的檔案與目錄權限進行管理,相關的檔案與目錄管理權限所整理出的清單如下:

  • r(read),指的是讀取的權限,當指定給檔案的時候,則代表這個檔案可以被讀取,當指定給目錄的時候,則代表可以讀取目錄,意思就是可以把目錄底下內容被列出清單出來。
  • w(write),指的是修改的權限,當指定給檔案的時候,代表檔案可以被修改,當指定給目錄的時候,則代表在這個目錄底下,有權限可以新增與刪除檔案。
  • x(execute),指的是執行的權限,當指定給檔案的時候,則代表這個檔案可以以指令的方式執行,指定給目錄的時候,則可以使用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)。
  • 其他字元,如:bc則是代表硬體裝置或是特殊的目的的檔案,如ps

使用符號來改變檔案與目錄權限

可以使用chmod命令來改變使用者的存取權限,下列提供了幾種符號來做改變使用者的權限:

  • u,g,o,a:指的是使用者的意思,即:user, group, other, all
  • +,-,=:指的是新增、移除與設定
  • r,w,x:指的是讀取、寫入與執行

透過上述的符號並搭配chmod指令的使用,則可以得到下列的指令範例:

chmod u-w,g+x,o-w file
chmod u=rx,g=rx,o=rx file
chmod a+x file

上述第一個指令的意思是:

  • 將file這個檔案的權限調整成:將使用者編輯權限移除、將群組的使用者加上執行的權限以及將其他使用者的編輯權限移除。

第二個指令的意思是:

  • 將file之user權限指定為讀取與執行的權限、群組使用者指定為讀取與執行以及其他使用者指定為讀取與執行。

第三個指令為:

  • 把file檔案設定成將所有人都有執行的權限。

使用數字方法來改變權限

數字方法以10進位來看,如下表示:

  • 一開始為0,0指的是什麼權限都沒有。
  • 假設需要設定讀取的權限,則加上4。
  • 如果需要有編輯的權限,則加上2。
  • 如果需要執行的權限,則加上1。

舉例來說,上述的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

特殊權限介紹

檔案與目錄有幾個特殊權限列表,相關的列表如下:

  • u+s(suid),指的是將某個指令可以以root使用者方式的權限啟動,假設將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+s6、而使用者設定成可以讀取、編輯與執行,群組設定成可以讀取、編輯與執行,其他的使用者則都沒有權限可以存取指定的目錄。

預設檔案權限

umask,指的是當使用者建立檔案或是目錄的時候預先會給定一個權限的設定,預設權限要怎麼知道確切的十進位數字是多少?有一個很簡單的計算方式,最大的數字權限為:777,最小為:000,因此當umask設定成027時候,則算法如下:

  • 7 - 0 - 1 = 6
  • 7 - 2 - 1 = 4
  • 7 - 7 - 1 = -1,負數表示0

因此預設的十進位數字為:640,此外,也可以使用umask指令來暫時設定預設的權限,例如使用umask 027即可以改變預設的權限,若要永久的設定,則可以更改/etc/profile或是/etc/bashrc之檔案,當然也可以在使用者自己底下的設定檔:.bashrc或是.bash_profile檔案進行覆寫設定。

課後練習

  • 請開啟workstation虛擬機器並利用rockylinux使用者登入到桌面環境,並開啟終端機。
  • 利用touch指令建立一個叫做file.txt之檔案。
  • 將上述的file.txt檔案之權限改成:擁有者只可以讀取與編輯,群組裡的使用者只可以讀取,其他人則沒有權限。
  • 當利用一般的使用者執行cat指令去嘗試輸出/etc/shadow檔案的時候,會遇到權限不足的問題,請試著使用一般使用者執行cat指令,並可以成功開啟/etc/shadow檔案。
  • 還原本來cat指令之權限。
  • 刪除file.txt檔案。

上一篇
第8-1章:管理本地端主機之使用者與群組(三)
下一篇
第10-1章:監控與管理作業系統上之程序(一)
系列文
Rocky Linux 8:系統管理與維運實戰23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言