1. 程式人生 > 實用技巧 >Linux中許可權管理

Linux中許可權管理

一、許可權定義

1、檔案許可權作用的物件

owner :屬主 — u
group :屬組 — g
other :其他人 — o

2、檔案的三種許可權

 //針對檔案的許可權
r      可讀             可以使用cat命令檢視檔案的類容
w     可寫             可以編輯或刪除檔案
x      可執行          在命令列介面下當做命令提交給核心執行

 //針對目錄的許可權
r      可讀             可以使用ls命令檢視目錄裡面包含哪些檔案
w     可寫             可以在此目錄中建立其他的檔案或刪除此目錄中的檔案
x      可執行          可以使用cd命令切換至此目錄,也可以使用ls -l檢視目錄內部檔案的詳細資訊

3、r、w、x 許可權與十進位制的轉換

r  — 4
w  — 2
x  — 1 

二、許可權管理命令

1、chmod —— 修改許可權命令(可以修改檔案或目錄)

chmod
    -R(recursive):遞迴處理,將該目錄下的所有檔案及子目錄一起處理
    
    <許可權範圍>+<許可權設定>:開啟許可權範圍的檔案或目錄的該選項許可權設定;
    <許可權範圍>-<許可權設定>:關閉許可權範圍的檔案或目錄的該選項許可權設定;
    <許可權範圍>=<許可權設定>:指定許可權範圍的檔案或目錄的該選項許可權設定;
示例
    chmod u+r filename
    chmod g+w filename
    chmod o+x filename

    chmod u-r filename
    chmod g-w filename
    chmod o-x filename

    chmod u=rwx filename
    chmod g=rw filename
    chmod o=x filename

    chmod a+r filename
    chomd a+w filename
    chomd a+x filename
    chomd a-r filename
    chomd a-w filename
    chomd a-x filename
    chomd a=rw filename
    chomd a=x  filename

2、chown —— 修改檔案或目錄的屬主或屬組許可權的命令

chown
    -R(recursive):遞迴處理,將指定目錄下的所有檔案及子目錄一併處理

示例
    chown username:groupname filename   //修改屬主和屬組
    chown username.groupname filename   //可以使用點代替冒號
    
    chown username filename      //只修改屬主
    chown :groupname filename   //只修改屬組
    chown .groupname filename

    chown -R username:groupname filename   //遞迴修改檔案屬主和屬組 

三、遮罩碼

1、什麼是遮罩碼

在Linux系統建立一個檔案或目錄時,一個檔案的許可權是644,而一個目錄的許可權時755,這些看上去好像是固定的?

仔細看看就會發現:

1️⃣:該檔案都沒有執行的許可權;且該檔案除了屬主以外,其他的都沒有寫和執行的許可權;

2️⃣:而目錄除了屬主以外,其他=都沒有寫的許可權。這些都是由umask遮罩碼控制的,遮罩碼umask的目的就隱藏一些許可權。

3️⃣:umask的預設大小是0022

4️⃣:檔案的最終許可權是:檔案:666 — umask (0022;第一個不用減,從第二個開始;666 — 0022=644)

5️⃣:目錄的最許可權:目錄:777 — umask (0022;第一個不用減,從第二個開始;777—0022=755)

2、檢視遮罩碼

[root@localhost ~]# umask 
0022

四、Linux安全上下文

1、程序有屬主和主組;文也有屬主和屬組

任何一個可執行程式檔案能不能啟動為程序,取決於發起者對程式檔案是否擁有可執行許可權
啟動為程序後,其程序的屬主為發起者,屬組為發起者所屬的組
程序訪問檔案時的許可權取決於程序的發起者
    程序的發起者是檔案的屬主時,則應用檔案屬主許可權
    程序的發起者是檔案的屬組時,則應用檔案屬組許可權
    應用檔案“其它”許可權

五、特殊許可權

1、SUID(4)、SGID(2)、Sticky(1)

SUID
    十進位制:4
    
    chmod u+s filename
    chmod u-s filename
或者
    chomd 4644 filename
   //如果file本身原來就有執行許可權,則SUID顯示為s(小寫),否則顯示為S(大寫)

SGID
   十進位制:2

    chmod g+s filename
    chomd g-s filename
或者
    chmod 2644 filename
   //如果file本身原來就有執行許可權,則SGID顯示為s(小寫),否則顯示為S(大寫)

Sticky
    十進位制:1

    chomd o+t filename
    chomd o-t filename
或者
    chmod 1644 filename
   //如果DIR本身原來就有執行許可權,則Sticky顯示為t,否則顯示為T

2、示例

 //SUID
[root@localhost ~]# touch file
[root@localhost ~]# ll file 
-rw-r--r--. 1 root root 0 8月   6 16:02 file
[root@localhost ~]# chmod u+x file 
[root@localhost ~]# ll file 
-rwxr--r--. 1 root root 0 8月   6 16:02 file
[root@localhost ~]# chmod u+s file 
[root@localhost ~]# ll file 
-rwsr--r--. 1 root root 0 8月   6 16:02 file
[root@localhost ~]# chmod u-x file 
[root@localhost ~]# ll file 
-rwSr--r--. 1 root root 0 8月   6 16:02 file

 //SGID
[root@localhost ~]# ll file 
-rw-r--r--. 1 root root 0 8月   6 16:02 file
[root@localhost ~]# chmod g=rwx file 
[root@localhost ~]# ll file 
-rw-rwxr--. 1 root root 0 8月   6 16:02 file
[root@localhost ~]# chmod g+s file 
[root@localhost ~]# ll file 
-rw-rwsr--. 1 root root 0 8月   6 16:02 file
[root@localhost ~]# chmod g-x file 
[root@localhost ~]# ll file 
-rw-rwSr--. 1 root root 0 8月   6 16:02 file

 //Sticky
[root@localhost ~]# ll file 
-rw-r--r--. 1 root root 0 8月   6 16:02 file
[root@localhost ~]# chmod o=rwx file 
[root@localhost ~]# ll file 
-rw-r--rwx. 1 root root 0 8月   6 16:02 file
[root@localhost ~]# chmod o+t file 
[root@localhost ~]# ll file 
-rw-r--rwt. 1 root root 0 8月   6 16:02 file
[root@localhost ~]# chmod o-x file 
[root@localhost ~]# ll file 
-rw-r--rwT. 1 root root 0 8月   6 16:02 file

或
 //SUID
[root@localhost ~]# touch file
[root@localhost ~]# ll file 
-rw-r--r--. 1 root root 0 8月   6 16:09 file
[root@localhost ~]# chmod 4644 file 
[root@localhost ~]# ll file 
-rwSr--r--. 1 root root 0 8月   6 16:09 file
[root@localhost ~]# chmod u+x file 
[root@localhost ~]# ll file 
-rwsr--r--. 1 root root 0 8月   6 16:09 file
[root@localhost ~]# chmod 0644 file 
[root@localhost ~]# ll file 
-rw-r--r--. 1 root root 0 8月   6 16:09 file

 //SGID
[root@localhost ~]# ll file 
-rw-r--r--. 1 root root 0 8月   6 16:09 file
[root@localhost ~]# chmod 2644 file 
[root@localhost ~]# ll file 
-rw-r-Sr--. 1 root root 0 8月   6 16:09 file
[root@localhost ~]# chmod g+x file 
[root@localhost ~]# ll file 
-rw-r-sr--. 1 root root 0 8月   6 16:09 file
[root@localhost ~]# chmod 0644 file 
[root@localhost ~]# ll file 
-rw-r--r--. 1 root root 0 8月   6 16:09 file

 //Sticky
[root@localhost ~]# ll file 
-rw-r--r--. 1 root root 0 8月   6 16:09 file
[root@localhost ~]# chmod 1644 file 
[root@localhost ~]# ll file 
-rw-r--r-T. 1 root root 0 8月   6 16:09 file
[root@localhost ~]# chmod o+x file 
[root@localhost ~]# ll file 
-rw-r--r-t. 1 root root 0 8月   6 16:09 file
[root@localhost ~]# chmod 0644 file 
[root@localhost ~]# ll file 
-rw-r--r--. 1 root root 0 8月   6 16:09 file