首頁 > 軟體

Linux基礎知識之檔案許可權詳解

2020-06-16 17:35:48

Linux中對於許可權的制定雖然沒有Windows的那麼精細,但是如果你了解並掌握Linux中檔案的許可權知識,也可以像Windows那樣對許可權做到精確設定。


Linux中的檔案許可權是什麼?

如何檢視Linux中的檔案許可權

[root@localhost test]# ll -d /test/

drwxr-xr-x. 2 root root 52 8月   7 20:18 /test/

上面的rwxr-xr-x即為檔案的許可權位共九位。下面分別對其進行介紹。

 

                rwx∣r-x∣r-x

                ↓    ↓   ↓

                屬主 屬組 其他

前三個為屬主位:建立該檔案者或被指定的檔案所屬者

中間三個為屬組位:檔案的所屬組,在該組內的非屬主使用者對該檔案擁有該屬組許可權。

最後三個Other位:other使用者,既不屬於屬主又不在屬組的使用者

          r:讀許可權    w:寫許可權    x:執行許可權

檔案中rwx的具體含義:

      r:可以使用類似cat等命令檢視檔案內容

      w:可以編輯或刪除此檔案

      x:可以在命令提示字元下當做命令提交給核心執行

目錄中rwx的具體含義:

      r:可以對此目錄執行ls以列出內部的所有檔案

      w:可以在此目錄建立檔案:

      x:可以使用cd切換進此目錄,也可以使用ls -l檢視內部檔案的詳細資訊

下面請看一個對應關係

          000 ---  對應十進位制0

          001 --x  對應十進位制1

          010 -w-  對應十進位制2

          011 -wx  對應十進位制3

          100 r--  對應十進位制4

          101 r-x  對應十進位制5

          110 rw-  對應十進位制6

          111 rwx  對應十進位制7

上面rwx三位與三位二進位制對應,因此許可權也可以用數位表達

比如:

  755代表rwxr-xr-x  664代表rw-rw-r--


管理Linux中的檔案許可權:

chmod chown chgrp umask

chmod  修改檔案許可權位命令

chmod - change file mode bits

表達格式

       chmod [OPTION]... MODE[,MODE]... FILE...

       chmod [OPTION]... OCTAL-MODE FILE...

       chmod [OPTION]... --reference=RFILE FILE...

常用選項

      -R 遞回,將設定的許可權應用到下面的所有檔案

1、chmod [OPTION]... MODE[,MODE]... FILE...

賦權表示法:u=屬主  g=屬組  o=其他  a=所有

直接操作一類使用者的所有許可權位 rwx

    寫法:u=rwx

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost test]# ll
總用量 16
-rw-r--r--. 1 root root 43 8月   7 16:46 cat1
-rw-r--r--. 1 root root 19 8月   7 16:46 cat2
-rw-r--r--. 1 root root 57 8月   7 19:34 head
-rw-r--r--. 1 root root 55 8月   7 20:18 siting
[root@localhost test]# chmod u=rwx,g=rwx cat1 
[root@localhost test]# ll
總用量 16
-rwxrwxr--. 1 root root 43 8月   7 16:46 cat1
-rw-r--r--. 1 root root 19 8月   7 16:46 cat2
-rw-r--r--. 1 root root 57 8月   7 19:34 head
-rw-r--r--. 1 root root 55 8月   7 20:18 siting

同時更改多個所屬物件許可權,中間用“,”隔開

授權表示法:直接操作一類使用者的一個許可權為r,w,x

寫法:u+(r|w|x) u-(r|w|x) g+(r|w|x) g-(r|w|x) o+(r|w|x) o-(r|w|x)

a+(r|w|x) a-(r|w|x)

1
2
3
4
5
6
7
[root@localhost test]# chmod u+x,g+w cat2
[root@localhost test]# ll
總用量 16
-rwxrwxr--. 1 root root 43 8月   7 16:46 cat1
-rwxrw-r--. 1 root root 19 8月   7 16:46 cat2
-rw-r--r--. 1 root root 57 8月   7 19:34 head
-rw-r--r--. 1 root root 55 8月   7 20:18 siting


2、chmod [OPTION]... OCTAL-MODE FILE...

1
2
3
4
5
6
7
[root@localhost test]# chmod 755 head 
[root@localhost test]# ll
總用量 16
-rwxrwxr--. 1 root root 43 8月   7 16:46 cat1
-rwxrw-r--. 1 root root 19 8月   7 16:46 cat2
-rwxr-xr-x. 1 root root 57 8月   7 19:34 head
-rw-r--r--. 1 root root 55 8月   7 20:18 siting

3、chmod [OPTION]... --reference=RFILE FILE... 指定目標檔案與所指檔案的許可權一致(不常用)

1
2
3
4
5
6
7
[root@localhost test]# chmod --reference=cat1 siting 
[root@localhost test]# ll
總用量 16
-rwxrwxr--. 1 root root 43 8月   7 16:46 cat1
-rwxrw-r--. 1 root root 19 8月   7 16:46 cat2
-rwxr-xr-x. 1 root root 57 8月   7 19:34 head
-rwxrwxr--. 1 root root 55 8月   7 20:18 siting

siting與cat1檔案的許可權保持一致

chown 修改屬主屬組

chown - change file owner and group

表達格式:

       chown [OPTION]... [OWNER][:[GROUP]] FILE...

       chown [OPTION]... --reference=RFILE FILE...

常用選項:

    -R 遞回修改該

1、chown [OPTION]... [OWNER][:[GROUP]] FILE...

1
2
3
4
5
6
7
[root@localhost test]# chown gentoo:fedore cat1
[root@localhost test]# ll
總用量 16
-rwxrwxr--. 1 gentoo fedore 43 8月   7 16:46 cat1
-rwxrw-r--. 1 root   root   19 8月   7 16:46 cat2
-rwxr-xr-x. 1 root   root   57 8月   7 19:34 head
-rwxrwxr--. 1 root   root   55 8月   7 20:18 siting

2、chown [OPTION]... --reference=RFILE FILE...

1
2
3
4
5
6
7
[root@localhost test]# chown --reference cat1 cat2
[root@localhost test]# ll
總用量 16
-rwxrwxr--. 1 gentoo fedore 43 8月   7 16:46 cat1
-rwxrw-r--. 1 gentoo fedore 19 8月   7 16:46 cat2
-rwxr-xr-x. 1 root   root   57 8月   7 19:34 head
-rwxrwxr--. 1 root   root   55 8月   7 20:18 siting

因為chown既可以改屬主又可以改屬組所以下面這個chgrp命令就被打入冷宮,為了緬懷一下它,這裡還是簡要介紹下

chgrp - change group ownership 修改屬組

表達格式:

       chgrp [OPTION]... GROUP FILE...

       chgrp [OPTION]... --reference=RFILE FILE...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost test]# chgrp gentoo head 
[root@localhost test]# ll
總用量 16
-rwxrwxr--. 1 gentoo fedore 43 8月   7 16:46 cat1
-rwxrw-r--. 1 gentoo fedore 19 8月   7 16:46 cat2
-rwxr-xr-x. 1 root   gentoo 57 8月   7 19:34 head
-rwxrwxr--. 1 root   root   55 8月   7 20:18 siting
[root@localhost test]# chgrp --reference cat1 siting 
[root@localhost test]# ll
總用量 16
-rwxrwxr--. 1 gentoo fedore 43 8月   7 16:46 cat1
-rwxrw-r--. 1 gentoo fedore 19 8月   7 16:46 cat2
-rwxr-xr-x. 1 root   gentoo 57 8月   7 19:34 head
-rwxrwxr--. 1 root   fedore 55 8月   7 20:18 siting

umask :檔案的許可權反向掩碼,俗稱遮罩碼

作用它是為了控制預設許可權,不要使預設的檔案和目錄具有全權而設的

    檔案:666-umask

    目錄:777-umask

:之所以檔案用666去減,表示檔案預設不能擁有執行許可權,如果減得的結果中有執行許可權,則需+1

umask:檢視當前umask

1
2
[root@localhost test]# umask
0022

umask MASK :設定umask  僅對當前shell進程有效

若要長期修改umask的值,可以把它寫進/etc/profile(全域性有效)或~/.profile(個人)或~/.bash_profile

1
2
3
[root@localhost test]# umask 0002
[root@localhost test]# umask
0002
1
2
3
4
5
6
7
8
[root@localhost test]# touch umask1
[root@localhost test]# ll
總用量 16
-rwxrwxr--. 1 gentoo fedore 43 8月   7 16:46 cat1
-rwxrw-r--. 1 gentoo fedore 19 8月   7 16:46 cat2
-rwxr-xr-x. 1 root   gentoo 57 8月   7 19:34 head
-rwxrwxr--. 1 root   fedore 55 8月   7 20:18 siting
-rw-rw-r--. 1 root   root    0 8月   8 20:49 umask1

使用root使用者建立一個新檔案umask1其許可權為664,umask為0002,其新建檔案的許可權符合我們的設定:666-002=664。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-08/134047.htm


IT145.com E-mail:sddin#qq.com