Linux管理員 - 檔案/資料夾管理



為了介紹CentOS Linux中目錄和檔案相關的許可權,讓我們看一下以下命令輸出。

[centos@centosLocal etc]$ ls -ld /etc/yum* 
drwxr-xr-x. 6 root root 100 Dec  5 06:59 /etc/yum 
-rw-r--r--. 1 root root 970 Nov 15 08:30 /etc/yum.conf 
drwxr-xr-x. 2 root root 187 Nov 15 08:30 /etc/yum.repos.d

注意 - 你將看到的三個主要物件型別是

  • "-" - 普通檔案的短橫線

  • "d" - 目錄

  • "l" - 符號連結

我們將重點關注每個目錄和檔案的三個輸出塊 -

  • drwxr-xr-x : root : root
  • -rw-r--r-- : root : root
  • drwxr-xr-x : root : root

現在讓我們分解一下,以便更好地理解這些行 -

d 表示物件型別為目錄
rwx 指示應用於所有者的目錄許可權
r-x 指示應用於組的目錄許可權
r-x 指示應用於世界的目錄許可權
root 第一個例項,指示目錄的所有者
root 第二個例項,指示應用組許可權的組

理解所有者世界之間的區別非常重要。不理解這一點可能會對託管網際網路服務的伺服器產生重大影響。

在我們給出實際示例之前,讓我們首先了解應用於目錄檔案的許可權。

請查看下錶,然後繼續操作。

八進位制 符號 許可權 目錄
1 x 執行 進入目錄並訪問檔案
4 r 讀取 列出目錄中的檔案
2 w 寫入 刪除或修改目錄中的檔案

注意 - 當檔案應在目錄中可讀時,通常會應用讀取執行許可權。否則,使用者將難以使用這些檔案。停用寫入將確保檔案無法:重新命名、刪除、複製或修改許可權。

將許可權應用於目錄和檔案

應用許可權時,需要理解兩個概念 -

  • 符號許可權
  • 八進位制許可權

本質上,兩者相同,只是指代和分配檔案許可權的方式不同。有關快速指南,請學習並參考下表 -

讀取 寫入 執行
八進位制 4 2 1
符號 r w x

使用八進位制方法分配許可權時,使用 3 位元組數字,例如:760。數字 760 轉換為:所有者:rwx;組:rw;其他(或世界)無許可權。

另一種情況:733 將轉換為:所有者:rwx;組:wx;其他:wx。

使用八進位制方法設定許可權有一個缺點。無法修改現有的許可權集。只能重新分配物件的整個許可權集。

現在你可能會想,總是重新分配許可權有什麼問題?想象一下大型目錄結構,例如生產 Web 伺服器上的/var/www/。我們希望遞迴地從所有目錄的“其他”使用者中刪除w寫入位。因此,強制只有在需要進行安全措施時才主動新增它。如果我們重新分配整個許可權集,我們將刪除分配給每個子目錄的所有其他自定義許可權。

因此,這將導致系統管理員和系統使用者都出現問題。在某些時候,一個人(或多人)需要重新分配被重新分配每個目錄和物件的整個許可權集而清除的所有自定義許可權。

在這種情況下,我們希望使用符號方法來修改許可權 -

chmod -R o-w /var/www/

上述命令不會“覆蓋許可權”,而是修改當前的許可權集。因此,請習慣使用最佳實踐

  • 僅使用八進位制分配許可權
  • 使用符號修改許可權集

CentOS 管理員必須熟練掌握八進位制符號許可權,因為許可權對於資料完整性和整個作業系統都非常重要。如果許可權不正確,最終結果將是敏感資料和整個作業系統都將受到威脅。

解決了這個問題,讓我們來看一些修改許可權和物件所有者/成員的命令 -

  • chmod
  • chown
  • chgrp
  • umask

chmod:更改檔案模式許可權位

命令 操作
-c 類似於詳細模式,但只會報告所做的更改
-v 詳細模式,輸出每個請求的診斷資訊
-R 遞迴地將操作應用於檔案和目錄

chmod 將允許我們使用八進位制符號許可權集更改目錄和檔案的許可權。我們將使用它來修改我們的分配和上傳目錄。

chown:更改檔案所有者和組

命令 操作
-c 類似於詳細模式,但只會報告所做的更改
-v 詳細模式,輸出每個請求的診斷資訊
-R 遞迴地將操作應用於檔案和目錄

chown 可以修改物件的所有者使用者和組。但是,除非需要同時修改兩者,否則通常使用chgrp 來處理組。

chgrp:更改檔案或目錄的組所有權

命令 操作
-c 類似於詳細模式,但只會報告所做的更改
-v 詳細模式,輸出每個請求的診斷資訊
-R 遞迴地將操作應用於檔案和目錄

chgrp 將更改組所有者為提供的組。

實際操作

讓我們更改/var/www/students/ 中所有子目錄的分配,以便擁有組為students 組。然後將students 的根目錄分配給 professors 組。稍後,讓 Terry Thomas 博士成為students 目錄的所有者,因為他負責學校所有計算機科學學術事務。

正如我們所看到的,建立時,目錄保持得很原始。

[root@centosLocal ~]# ls -ld /var/www/students/ 
drwxr-xr-x. 4 root root 40 Jan  9 22:03 /var/www/students/

[root@centosLocal ~]# ls -l /var/www/students/ 
total 0 
drwxr-xr-x. 2 root root 6 Jan  9 22:03 assignments 
drwxr-xr-x. 2 root root 6 Jan  9 22:03 uploads 

[root@centosLocal ~]#

作為管理員,我們永遠不想將我們的root 憑據交給任何人。但與此同時,我們需要允許使用者能夠完成他們的工作。因此,讓我們允許 Terry Thomas 博士對檔案結構進行更多控制,並限制學生可以執行的操作。

[root@centosLocal ~]# chown -R drterryt:professors /var/www/students/ 
[root@centosLocal ~]# ls -ld /var/www/students/ 
drwxr-xr-x. 4 drterryt professors 40 Jan  9 22:03 /var/www/students/

[root@centosLocal ~]# ls -ls /var/www/students/ 
total 0 
0 drwxr-xr-x. 2 drterryt professors 6 Jan  9 22:03 assignments 
0 drwxr-xr-x. 2 drterryt professors 6 Jan  9 22:03 uploads

[root@centosLocal ~]#

現在,每個目錄和子目錄的所有者都是drterryt,擁有組是professors。由於assignments 目錄供學生提交作業,讓我們取消students 組列出和修改檔案的能力。

[root@centosLocal ~]# chgrp students /var/www/students/assignments/ && chmod 
736 /var/www/students/assignments/

[root@centosLocal assignments]# ls -ld /var/www/students/assignments/ 
drwx-wxrw-. 2 drterryt students 44 Jan  9 23:14 /var/www/students/assignments/

[root@centosLocal assignments]#

學生可以將作業複製到assignments 目錄。但他們不能列出目錄的內容、複製現有檔案或修改assignments 目錄中的檔案。因此,它只允許學生提交已完成的作業。CentOS 檔案系統將提供作業提交時間的日期戳。

作為assignments 目錄的所有者 -

[drterryt@centosLocal assignments]$ whoami 
drterryt

[drterryt@centosLocal assignments]$ ls -ld /var/www/students/assignment 
drwx-wxrw-. 2 drterryt students 44 Jan  9 23:14 /var/www/students/assignments/

[drterryt@centosLocal assignments]$ ls -l /var/www/students/assignments/ 
total 4 
-rw-r--r--. 1 adama  students  0 Jan  9 23:14 myassign.txt 
-rw-r--r--. 1 tammyr students 16 Jan  9 23:18 terryt.txt

[drterryt@centosLocal assignments]$

我們可以看到,目錄所有者可以列出檔案以及修改和刪除檔案。

umask 命令:提供建立檔案和目錄許可權的預設模式

umask 是一個重要的命令,它提供建立檔案和目錄許可權的預設模式。

umask 許可權使用一元否定邏輯。

許可權 操作
0 讀取、寫入、執行
1 讀取和寫入
2 讀取和執行
3 只讀
4 讀取和執行
5 只寫
6 只執行
7 無許可權
[adama@centosLocal umask_tests]$ ls -l ./ 
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir 
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt

[adama@centosLocal umask_tests]$ whoami 
adama

[adama@centosLocal umask_tests]$ umask 
0022

[adama@centosLocal umask_tests]$

現在,讓我們更改當前使用者的umask,並建立一個新檔案和目錄。

[adama@centosLocal umask_tests]$ umask 077

[adama@centosLocal umask_tests]$ touch mynewfile.txt

[adama@centosLocal umask_tests]$ mkdir myNewDir

[adama@centosLocal umask_tests]$ ls -l 
total 0 
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir 
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt 
drwx------. 2 adama students 6 Jan 10 00:35 myNewDir 
-rw-------. 1 adama students 0 Jan 10 00:35 mynewfile.txt

正如我們所看到的,新建立的檔案比以前更具限制性。

必須在以下位置更改使用者的umask -

  • /etc/profile
  • ~/bashrc
[root@centosLocal centos]# su adama 
[adama@centosLocal centos]$ umask 
0022 
[adama@centosLocal centos]$

通常,CentOS 中的預設umask 就可以了。當我們遇到0022 預設值的問題時,通常是不同部門的不同組需要協作完成專案時。

這就是系統管理員的作用,平衡 CentOS 作業系統的操作和設計。

廣告
© . All rights reserved.