1. 程式人生 > 其它 >【Linux學習筆記(十五)】之許可權管理,chmod,chown,chgrp,umask

【Linux學習筆記(十五)】之許可權管理,chmod,chown,chgrp,umask

技術標籤:Linux學習筆記linuxshell

本文章由公號【開發小鴿】釋出!歡迎關注!!!


老規矩–妹妹鎮樓:

一. 許可權管理

(一) 許可權位介紹

一般許可權位有10位,在10位後面還帶有一個“.”,這個符號表示著該檔案是被Selinux所保護的。下面來詳細介紹一下各個許可權位:

1. 第一位

代表檔案型別,常見的有:

(1) -

普通檔案

(2) b

塊裝置檔案,表示儲存裝置,如分割槽檔案/dev/sda1

(3) c

字元裝置檔案,如輸入裝置,鍵盤。


(4) d

目錄檔案。

(5) l

軟連結檔案。


2. 2-4位

代表所有者的許可權,分別為r(讀),w(寫),x(執行),有字母對應著有該許可權。


3. 5-7位

代表檔案所屬組的許可權。


4. 8-10位

代表其他人的許可權。

(二) 基本許可權命令

1. chmod

修改檔案許可權(change file mode bits),可以使用字母,也可以使用數字代表權限。u代表所有者,g代表所屬組,o代表其他人,a代表全部身份。使用方式如下所示:

(1) 字母加減設定許可權
chmod u+x dev

給dev檔案的所有者新增執行許可權。

chmod u-x dev

給dev檔案的所有者減去執行許可權。

chmod u=rwx dev

給dev檔案的所有者設定rwx三種許可權。

chmod 744
dev

4代表R(讀)許可權,2代表W(寫)許可權,1代表X(執行)許可權。

上面的命令表示給dev檔案的所有者設定讀寫執行許可權,給所屬組和其他人設定讀的許可權。


2. chown命令

修改檔案和目錄的所有者和所屬組的命令(change file owner and group),普通使用者不能修改檔案的所有者,即使它擁有這個檔案也不行,只有root使用者能夠修改檔案的所屬者。

chown wxx dev

修改dev檔案的所有者為wxx,前提是當前使用者是root。

chown wxx:wxx dev

修改dev檔案的所有者為wxx,且所屬組是wxx組。冒號後面表示所屬組,每個使用者預設都會有一個同名的組。


3. chgrp命令

修改檔案和目錄的所屬組(change group ownership)。

(三) 基本許可權的作用

讀,寫,執行許可權對於檔案和目錄的作用是不同的。

1. 許可權對於檔案

(1) 讀

可以讀取檔案中的資料,執行cat, more, less, head, tail等命令。

(2) 寫

可以修改檔案中的資料,執行vim,echo等命令,但是不能刪除檔案本身,想要刪除檔案,需要該檔案的上級目錄的寫許可權。因為檔案的寫許可權僅限於讀取該檔案的block塊中的內容,而該檔案的檔名和I節點號都儲存在上級目錄的block塊中,想要刪除該檔案,需要訪問上級目錄的block塊獲取檔案的I節點號和檔名,也就是獲取上級目錄的寫許可權。

(3) 執行

只要檔案有執行許可權,則該檔案就是可執行檔案了,執行許可權是檔案的最高許可權。

2. 許可權對於目錄

(1) 讀

檢視目錄下的內容,可執行ls命令。

(2) 寫

可修改目錄下的資料,如新建,刪除檔案等等,可執行touch, rm, cp, mv命令,寫許可權是目錄的最高許可權。

(3) 執行

目錄不能執行,只能進入,可執行cd命令。

(4) 目錄的可用許可權

目錄只有3個可用許可權,為什麼沒有4許可權呢?因為目錄只有讀沒有執行的話都不能進入目錄:

0: 無許可權
5: 目錄瀏覽和進入許可權
7: 完全許可權

(四) umask預設許可權

1. 概述

當我們新建一個檔案或者資料夾時,系統都會預設設定許可權,如在普通使用者下,檔案為664的許可權,資料夾為775的許可權。

這是系統根據umask許可權來計算的,系統給檔案的預設最大許可權原本是666,沒有執行許可權,因為執行許可權對於檔案來說比較危險,不能在新建檔案時預設賦予。如果umask許可權是0002時,通過計算就可以得出檔案的許可權位664了。

目錄同理,目錄的預設最大許可權是777,可以賦予執行許可權,通過和umask許可權0002計算得出許可權位775。


2. 許可權計算方法

可以簡單地理解為減法,用最大許可權減去umask許可權即可。但實際上,需要使用二進位制進行邏輯與和邏輯非運算CIA可以得到預設許可權。


3. 檢視umask許可權

umask

4. 臨時修改umask許可權

umask 0022

5. 永久修改umask許可權

在 /etc/profile中修改umask許可權值。