天天看點

linux檔案系統權限控制

一、檔案權限的基礎知識點:

ugo表示與檔案關聯的3個部分:使用者、組、其他使用者

rwx讀、寫、執行

lsattr檢視檔案的隐藏屬性,下面是檔案的一些屬性:   

<code>append only (a)       </code>

<code>no atime  updates  (A)     </code>

<code>compressed(c)   </code>

<code>no  copy  on write (C)        </code>

<code>no dump (d)        </code>

<code>synchronous directory updates (D)         </code>

<code>extent format (e): the file is using</code><code>extents</code><code>for mapping the blocks on disk.</code>

<code>immutable (i)        </code>

<code>data jour‐nalling (j)        </code>

<code>secure deletion (s)        </code>

<code>synchronous updates (S)         </code>

<code>no tail-merging  (t)   </code>

<code>top  of  directory  hierarchy  (T)   </code>

<code>and undeletable (u)</code>

<code>attribute is used by the </code><code>htree program</code><code> code to indicate that a directory is being indexed using hashed trees(I)</code>

對應的中文解釋:

<code>+ :在原有參數設定基礎上,追加參數。         </code>

<code>- :在原有參數設定基礎上,移除參數。          </code>

<code>= :更新為指定參數設定。          </code>

<code>A:檔案或目錄的 atime (access time)不可被修改(modified), 可以有效預防 磁盤I/O錯誤的發生。  </code>

<code>S:硬碟I/O同步選項,功能類似sync。          </code><code>a:即append,設定該參數後,隻能向檔案中添加資料,而不能删除,多用于伺服器日志檔案安全,隻有root才能設定這個屬性。        </code>

<code>c:即compresse,設定檔案是否經壓縮後再存儲。讀取時需要經過自動解壓操作。        </code>

<code>d:即no dump,設定檔案不能成為dump程式的備份目标。       </code>

<code>i:設定檔案不能被删除、改名、設定連結關系,同時不能寫入或新增内容。i參數對于檔案 系統的安全設定有很大幫助。          </code>

<code>j:即journal,設定此參數使得當通過mount參數:data=ordered 或者  data=writeback 挂 載的檔案系統,檔案在寫入時會先被記錄(在journal中)。如果 filesystem被設定參數為 data=journal,則該參數自動失效。          </code>

<code>s:保密性地删除檔案或目錄,即硬碟空間被全部收回。          </code>

<code>u:與s相反,當設定為u時,資料内容其實還存在磁盤中,可以用于undeletion。      </code><code>各參數選項中常用到的是a和i。a選項強制隻可添加不可删除,多用于日志系統的 安全設定。而i是更為嚴格的安全設定,隻有superuser (root) 或具有 CAP_LINUX_IMMUTABLE處理能力(辨別)的程序能夠施加該選項。</code>

<code>e:表示采用ext檔案系統。</code>

chattr修改這些屬性:維基百科位址:https://en.wikipedia.org/wiki/Chattr

Chmod a+ 修改所有使用者組的檔案通路權限

遇到無法删除檔案的情況:

1)可能是隻有該檔案的隻讀權限 2)設定了immutable(不可改變)位.

二、2種特殊權限:a和I

1.關于i權限:

chattr +i 1.txt運作之後第5個段會出現i,之後這個檔案就不能修改也不能删除。

怎麼去掉該權限:chattr -i 1.txt

2. 關于a權限: Chattr +a 1.txt隻能用echo增加不能用vi去修改,不能删除。 如果是對于目錄設定這樣的權限,則:該目錄下隻運作增加檔案,不運作修改檔案和删除檔案。但在它的子目錄裡面建的子目錄或者子目錄裡面建的檔案可以删除掉。

三、授予權限:

比如我有一個user1使用者,然後某個的目錄的權限是root root 755,當我從root切換到user1的時候,就不能在該目錄下建立檔案或者目錄或者删除檔案。如果該目錄的上層目錄是777權限,那不管子目錄的權限是什麼都可以删除修改。 如果該上層777權限的目錄下面有個root的檔案,強制對該檔案修改内容,那麼該檔案的所屬組和屬主将會變成該使用者,其實内部原理是先把以前的檔案幹掉後重新建立: [user1@whitehat test]$ ll total 0 -rw-r--r-- 1 root root 0 Aug 6 16:13 abc [user1@whitehat test]$ vi abc total 4 -rw-r--r-- 1 user1 user1 9 Aug 6 16:14 abc Set_uid:可以臨時獲得檔案所屬主的權限。 Set_gid:某個目錄下面建立的目錄的所屬組會和這個目錄的所屬組相同 Sticky:/tmp目錄就是典型的擁有t這個權限的目錄。 1)set_uid.例如passwd這個指令,如下:
linux檔案系統權限控制
這個s就叫set_uid,被授予set_uid權限的隻能是二進制檔案,并且建立在可執行權限的基礎上,去掉執行權限x,就會變成大S。怎麼下發權限,權限下發之後,普通使用者就可以通過直接passwd修改密碼,如下:
linux檔案系統權限控制
[user1@whitehat ~]$ passwd Changing password for user user1. Changing password for user1. (current) UNIX password: New password: Retype new password: passwd: all authentication tokens updated successfully. 2)set_gid,首先這個是針對目錄的。
linux檔案系統權限控制
通過chmod g+s就實作了set_gid功能。在該目錄下面建立的檔案或者目錄(或者子目錄下面建立的子目錄)的組與父目錄的所屬組相同。
3)sticky,我們可以看看tmp目錄的權限,我們可以看到在最後有個t,當然root賬戶可以删除tmp下面的檔案,但是普通使用者就無法删除或者修改或者增加其他使用者建立的檔案:
使用chmod o+t對其授權 下圖顯示,怎麼用數字設定這3個權限:
linux檔案系統權限控制

四、set_uid/set_gid/sticky權限的數字表示:

說明:這些特殊标志顯示為小寫字母 (s, s, t). 若無執行權限則顯示為大寫字母 (S, S, T)。

繼續閱讀