位置:首頁 > 其他技術 > Unix > UNIX 文件權限/訪問模式

UNIX 文件權限/訪問模式

文件所有權是UNIX的一個重要組成部分,提供了一個安全的方法,用於存儲文件。 UNIX中的每個文件具有以下屬性:

  • 所有者權限: 所有者的權限,確定所采取的操作文件的擁有者可以執行文件。

  • 組權限: 該組的權限確定哪些操作用戶,誰是一個文件所屬的組的成員,可以執行該文件。

  • 其它權限: 彆人的權限表明什麼樣的操作,所有其他用戶可以執行該文件。

權限指示:

當用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)

文件訪問模式:

一個文件的權限是一個Unix係統安全防禦的第一線。 Unix權限的基本構建塊的讀,寫和執行權限,​​說明如下:

1. Read:

即閱讀,查看該文件的內容。

2. Write:

修改或刪除的文件的內容。

3. Execute:

作為一個程序執行權限的用戶可以運行一個文件。

目錄訪問方式:

目錄訪問方式列出,像其他文件中相同的方式組織。有一些差異,需要提及:

1. Read:

到一個目錄中的訪問意味著用戶可以讀取內容。用戶可以看看目錄裡麵的文件名。

2. Write:

訪問裝置,用戶可以添加或刪除的文件的目錄的內容。

3. Execute:

執行目錄並冇有真正有很大的意義,認為這是一個遍曆權限。

用戶必須擁有的bin目錄的執行權限,以執行ls或cd命令。

更改權限:

要改變文件或目錄的權限,使用chmod(其他模式)命令。有兩種方法使用chmod:符號模式和絕對模式。

使用chmod符號模式:

對於一個初學者,修改文件或目錄的權限最簡單的方法是使用符號模式。具有象征性的權限,可以添加,刪除,或使用下表中的操作符,想要指定的權限集。

Chmod 操作符 描述
+ Adds the designated permission(s) to a file or directory.
- Removes the designated permission(s) from a file or directory.
= Sets the designated permission(s).

下麵是一個例子,使用testfile的。運行ls -1 在 testfile將顯示文件的權限如下:

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

然後每個例子chmod命令從前麵的表上運行,其次testfile將ls-l,可以看到權限更改:

$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=r-x testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

這裡是如何將這些命令放在一行:

$chmod o+wx,u-x,g=r-x testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

使用chmod絕對權限:

使用chmod命令修改權限的第二種方法是使用一些指定每個組的文件的權限。

每個權限分配一個值,按照下表中所示,每一組的總的權限提供了許多用於該集合。

Number 八進製權限表示 Ref
0 No permission ---
1 Execute permission --x
2 Write permission -w-
3 Execute and write permission: 1 (execute) + 2 (write) = 3 -wx
4 Read permission r--
5 Read and execute permission: 4 (read) + 1 (execute) = 5 r-x
6 Read and write permission: 4 (read) + 2 (write) = 6 rw-
7 All permissions: 4 (read) + 2 (write) + 1 (execute) = 7 rwx

下麵是一個例子,使用testfile。運行ls -1 在 testfile 將顯示文件的權限如下:

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

然後每個例子chmod命令從前麵的表上運行,其次testfile將ls-l ,所以 可以看到權限更改:

$ 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

更改所有者和組:

在Unix上創建一個帳戶,一個所有者分配給每個用戶的ID和組ID。上麵提到的所有的權限也被分配基礎上的所有者和組。

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

  1. chown: chown命令代表“更改所有者”,是用來改變文件所有者。

  2. chgrp: chgrp命令代表“更改組”,是用來改變文件的組。

所有權變更:

chown命令更改文件的所有權。基本語法如下:

$ chown user filelist

用戶的值可以是一個用戶在係統上的一個用戶在係統上的用戶ID(UID)的名稱。

下麵的例子:

$ chown amrood testfile
$

更改給定的文件的所有者用戶amrood。

注意:超級用戶root擁有不受限製的能力改變任何文件的所有權,但普通用戶隻能改變他們所擁有的文件的所有者。

更改組所有權:

chrgp命令組文件的所有權更改。基本語法如下:

$ chgrp group filelist

組的值可以是係統或組ID(GID)係統上的一組一組的名稱。

下麵的例子:

$ chgrp special testfile
$

組給定的文件更改特殊組。

SUID和SGID文件權限:

通常,當執行一個命令,它會以完成其任務,必須具有特殊權限的執行。

作為一個例子,當用passwd命令更改您的密碼,新密碼存儲在文件 /etc/shadow文件。

作為一個普通用戶,冇有讀或寫訪問此文件出於安全原因,但是當改變你的密碼,需要寫這個文件的​​權限。這意味著passwd程序給額外的權限,這樣就可以寫入文件/ etc / shadow中。

其他權限的程序通過設置用戶ID(SUID)和設置組ID(SGID)位被稱為一種機製。

當執行一個程序,啟用了SUID位,繼承該程序的所有者的權限。啟動程序的用戶的權限運行程序冇有設置SUID位。

這才是真正為SGID。通常情況下,節目組權限執行,而是您的組將被改變隻是對這一計劃的程序的組所有者。

如果權限SUID和SGID位會出現字母“s”。位於所有者的權限位執行權限通常會位於SUID位將被“S”。例如,命令

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

這表明了SUID位設置該命令是由root。大寫字母S在執行位置,而不是一個小寫字母s表示,冇有設置執行位。

如果粘位上啟用的目錄,文件隻能被刪除,如果是以下用戶:

  • 所有者粘性目錄

  • 所有者被刪除的文件

  • 超級用戶root

要設置SUID和SGID位上的任何目錄嘗試以下操作:

$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$