歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux管理 >> Linux維護

Linux系統文件權限和訪問模式介紹

Linux系統不同文件之中,有不同的權限。這是為了文件存儲的時候的安全考慮,也是為了讓Linux各個模塊間更加順暢的訪問和調度。本文為大家帶來Linux系統文件權限和訪問模式介紹。

權限

所有者權限 u :文件所有者能夠進行的操作

組權限 g :文件所屬用戶組能夠進行的操作

外部權限 o :(其他權限):其他用戶可以進行的操作。

查看文件權限

使用 ls -l 命令可以查看與文件權限相關的信息:

$ls -l /home/amrood

-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfile

drwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir

第一列就包含了文件或目錄的權限。

第一列的字符可以分為三組,每一組有三個,每個字符都代表不同的權限,分別為讀取(r)、寫入(w)和執行(x):

第一組字符(2-4)表示文件所有者的權限,-rwxr-xr-- 表示所有者擁有讀取(r)、寫入(w)和執行(x)的權限。

第二組字符(5-7)表示文件所屬用戶組的權限,-rwxr-xr-- 表示該組擁有讀取(r)和執行(x)的權限,但沒有寫入權限。

第三組字符(8-10)表示所有其他用戶的權限,rwxr-xr-- 表示其他用戶只能讀取(r)文件。

文件訪問模式

文件權限是Linux系統的第一道安全防線,基本的權限有讀取(r)、寫入(w)和執行(x):

讀取r:用戶能夠讀取文件信息,查看文件內容。

寫入w:用戶可以編輯文件,可以向文件寫入內容,也可以刪除文件內容。

執行x:用戶可以將文件作為程序來運行。

目錄訪問模式

目錄的訪問模式和文件類似,但是稍有不同:

讀取r:用戶可以查看目錄中的文件

寫入w:用戶可以在當前目錄中刪除文件或創建文件

執行x:執行權限賦予用戶遍歷目錄的權利,例如執行 cd 和 ls 命令。

改變權限

可以使用 chmod (change mode) 命令來改變文件或目錄的訪問權限,權限可以使用符號或數字來表示。

使用符號表示權限

對於初學者來說最簡單的就是使用符號來改變文件或目錄的權限,你可以增加(+)和刪除(-)權限,也可以指定特定權限。

符號 說明

+ 為文件或目錄增加權限

- 刪除文件或目錄的權限

= 設置指定的權限

下面的例子將會修改 testfile 文件的權限:

$ls -l testfile

-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile

$chmod o+wx testfile

$ls -l testfile

-rwxrwxrwx 1 amrood users 1024 Nov 2 00:10 testfile

$chmod u-x testfile

$ls -l testfile

-rw-rwxrwx 1 amrood users 1024 Nov 2 00:10 testfile

$chmod g=rx testfile

$ls -l testfile

-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile

也可以同時使用多個符號:

$chmod o+wx,u-x,g=rx testfile

$ls -l testfile

-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile

使用數字表示權限

除了符號,也可以使用八進制數字來指定具體權限,如下表所示:

數字 說明 權限

0 沒有任何權限 ---

1 執行權限 --x

2 寫入權限 -w-

3 執行權限和寫入權限:1 (執行) + 2 (寫入) = 3 -wx

4 讀取權限 r--

5 讀取和執行權限:4 (讀取) + 1 (執行) = 5 r-x

6 讀取和寫入權限:4 (讀取) + 2 (寫入) = 6 rw-

7 所有權限: 4 (讀取) + 2 (寫入) + 1 (執行) = 7 rwx

下面的例子,首先使用 ls -1 命令查看 testfile 文件的權限,然後使用 chmod 命令更改權限:

$ls -l testfile

-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile

$ chmod 755 testfile

$ls -l testfile

-rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile

$chmod 743 testfile

$ls -l testfile

-rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile

$chmod 043 testfile

$ls -l testfile

----r---wx 1 amrood users 1024 Nov 2 00:10 testfile

更改所有者和用戶組

在Linux中,每添加一個新用戶,就會為它分配一個用戶ID和群組ID,上面提到的文件權限也是基於用戶和群組來分配的。

有兩個命令可以改變文件的所有者或群組:

chown:chown 命令是“change owner”的縮寫,用來改變文件的所有者。

chgrp:chgrp 命令是“change group”的縮寫,用來改變文件所在的群組。

chown 命令用來更改文件所有者,其語法如下:

$ chown user filelist

user 可以是用戶名或用戶ID,例如

$ chown amrood testfile

$

將 testfile 文件的所有者改為 amrood。

注意:超級用戶 root 可以不受限制的更改文件的所有者和用戶組,但是普通用戶只能更改所有者是自己的文件或目錄。

chgrp 命令用來改變文件所屬群組,其語法為:

$ chgrp group filelist

group可以是群組名或群組ID,例如

$ chgrp special testfile

$

將文件 testfile 的群組改為 special。

SUID和SGID位

在Linux中,一些程序需要特殊權限才能完成用戶指定的操作。

例如,用戶的密碼保存在 /etc/shadow 文件中,出於安全考慮,一般用戶沒有讀取和寫入的權限。但是當我們使用 passwd 命令來更改密碼時,需要對 /etc/shadow 文件有寫入權限。這就意味著,passwd 程序必須要給我們一些特殊權限,才可以向 /etc/shadow 文件寫入內容。

Linux 通過給程序設置SUID(Set User ID)和SGID(Set Group ID)位來賦予普通用戶特殊權限。當我們運行一個帶有SUID位的程序時,就會繼承該程序所有者的權限;如果程序不帶SUID位,則會根據程序使用者的權限來運行。

SGID也是一樣。一般情況下程序會根據你的組權限來運行,但是給程序設置SGID後,就會根據程序所在組的組權限運行。

如果程序設置了SUID位,就會在表示文件所有者可執行權限的位置上出現‘s’字母;同樣,如果設置了SGID,就會在表示文件群組可執行權限的位置上出現‘s’字母。如下所示:

$ ls -l /usr/bin/passwd

-r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd*

$

上面第一列第四個字符不是‘x’或‘-’,而是‘s’,說明 /usr/bin/passwd 文件設置了SUID位,這時普通用戶會以root用戶的權限來執行passwd程序。

注意:小寫字母‘s’說明文件所有者有執行權限(x),大寫字母‘S’說明程序所有者沒有執行權限(x)。

如果在表示群組權限的位置上出現SGID位,那麼也僅有三類用戶可以刪除該目錄下的文件:目錄所有者、文件所有者、超級用戶 root。

為一個目錄設置SUID和SGID位可以使用下面的命令:

$ chmod ug+s dirname

$ ls -l

drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname

$

以上就是Linux系統文件權限和訪問模式的解析了,只要充分了解了Linux系統文件權限才能了解Linux文件之間的訪問模式。

Copyright © Linux教程網 All Rights Reserved