檔所有權是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。上面提到的所有的許可權也被分配基礎上的所有者和組。
兩個命令都可以改變檔的所有者和組:
-
chown: chown命令代表“更改所有者”,是用來改變檔所有者。
-
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 $