2021-05-12 14:32:11
RHEL7檔案許可權
本文介紹Linux下的檔案許可權 作業系統為RHEL7.2_X86_64
可以從以下三種存取方式限制存取許可權:
1 只允許使用者自己存取
2 允許一個預先指定的使用者組中的使用者存取
3 允許系統中的任何使用者存取
檔案的所屬使用者或者root使用者可以將這些許可權改變為任何他想指定的許可權。
一個只有讀許可權的檔案,是禁止進行任何修改的。
只有執行許可權的,允許它想一個程式一樣執行。
檢視許可權
我們之前已經很多次用到 ls命令了,如你所見,我們用它來列出並顯示當前目錄下的檔案,當然這是在不帶任何引數的情況下,它能做的當然不止這麼多,現在我們就要用它來檢視檔案許可權。
[root@VM_200_13_CentOS ~]# ls -l
total 8
drwxr-xr-x 2 root root 4096 Aug 14 11:37 auth
-rw-r--r-- 1 root root 7 Aug 14 11:34 auth.txt
檔案型別
基本許可權
| 基本許可權 | 說明 |
| :------------- | :------------- |
| r | 對檔案而言,具有讀取檔案內容的許可權
對目錄來說,具有瀏覽目錄的許可權 |
| w | 對檔案而言,具有新增、修改檔案內容的許可權
對目錄來說,具有刪除、移動目錄內檔案的許可權 |
| x | 對檔案而言,具有執行檔案的許可權
對目錄了來說該使用者具有進入目錄的許可權 |
| - | 表示不具有該項許可權 |
舉例說明:
例子 | 說明 |
---|---|
-rwx------ | 檔案所有者對檔案具有讀取、寫入和執行的許可權 |
-rwxr--r-- | 檔案所有者具有讀、寫與執行的許可權 其他使用者則具有讀取的許可權 |
-rw-rw-r-x | 檔案所有者與同組使用者具有讀寫許可權 其他使用者具有讀取和執行許可權 |
drwx--x--x | 目錄所有者具有瀏覽目錄修改(刪除、移動)目錄和進入目錄的許可權 同組使用者和其他使用者具有進入目錄的許可權 |
drwx------ | 除了目錄所有者具有完整的許可權之外 其他使用者對該目錄完全沒有任何許可權 |
特殊許可權
其實檔案與目錄設定不止這些,還有所謂的特殊許可權。由於特殊許可權會擁有一些“特權”。
因而使用者若無特殊需求,不應該啟用這些許可權,避免安全方面出現嚴重漏洞,造成入侵,甚至摧毀系統!
s
SUID
SUID(Set UID)當一個可以執行檔案具有SUID許可權,使用者執行這個程式時,將以這個程式的所有者身份執行。
在設定s許可權時檔案屬主必須先設定相應的x許可權,否則s許可權並不能正真生效。
chmod命令不進行必要的完整性檢查,即使不設定x許可權就設定s許可權,chmod也不會報錯,當我們ls -l時看到rwS,大寫S說明s許可權未生效。
Linux修改密碼的passwd便是個設定了SUID的程式,普通使用者無讀寫/etc/shadow檔案的許可權確可以修改自己的密碼。
可執行的檔案搭配這個許可權,便能得到特權,任意存取該檔案的所有者能使用的全部系統資源。
請注意具備SUID許可權的檔案,駭客經常利用這種許可權,以SUID配上root帳號擁有者,無聲無息地在系統中開扇後門,供日後進出使用
[root@VM_200_13_centos ~]# su - test
Last login: Sun Aug 14 19:05:04 CST 2016 on pts/0
[test@VM_200_13_centos ~]$ which passwd
/bin/passwd
[test@VM_200_13_centos ~]$ ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd
該檔案的所屬使用者和所屬使用者組均為root,顯然test使用者不具有該執行檔案的讀寫執行許可權
但是該檔案被賦予了SUID許可權,任意執行該執行檔案的使用者都能以該檔案所屬使用者(root使用者)的身份執行該檔案
[test@VM_200_13_centos ~]$ passwd
Changing password for user test.
Changing password for test.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
因為具有SUID許可權所有普通使用者執行該命令能修改密碼
SGID
設定在檔案上面,其效果與SUID相同,只不過將檔案所有者換成使用者組,該檔案就可以任意存取整個使用者組所能使用的系統資源。
強調: SUID一般用在檔案上(指令碼) SGID用在目錄上比較多
t
t許可權代表SBIT(Sticky):只針對目錄有效,對檔案無效,作用是防止別人刪除掉對方的資料
因為SUID、SGID、Sticky占用x的位置來表示,所以在表示上會有大小寫之分。
加入同時開啟執行許可權和SUID、SGID、Sticky,則許可權表示字元是小寫的
如果不具有x許可權,會以大寫顯示
[root@VM_200_13_centos ~]# mkdir test
[root@VM_200_13_centos ~]# ll
total 4
drwxr-xr-x 2 root root 4096 Aug 14 19:59 test
[root@VM_200_13_centos ~]# chmod u+s test/
[root@VM_200_13_centos ~]# ll
total 4
drwsr-xr-x 2 root root 4096 Aug 14 19:59 test
[root@VM_200_13_centos ~]# chmod u-x test/
[root@VM_200_13_centos ~]# ll
total 4
drwSr-xr-x 2 root root 4096 Aug 14 19:59 test
[root@VM_200_13_centos ~]# chmod g+s test/
[root@VM_200_13_centos ~]# ll
total 4
drwSr-sr-x 2 root root 4096 Aug 14 19:59 test
[root@VM_200_13_centos ~]# chmod g-x test/
[root@VM_200_13_centos ~]# ll
total 4
drwSr-Sr-x 2 root root 4096 Aug 14 19:59 test
[root@VM_200_13_centos ~]# chmod o+t test/
[root@VM_200_13_centos ~]# ll
total 4
drwSr-Sr-t 2 root root 4096 Aug 14 19:59 test
[root@VM_200_13_centos ~]# chmod o-x test/
[root@VM_200_13_centos ~]# ll
total 4
drwSr-Sr-T 2 root root 4096 Aug 14 19:59 test
修改許可權
chmod
命令:chmod
作用:修改檔案的許可權
語法:chmod [選項] MODE 檔案...
選項 | 說明 |
---|---|
-c | 只輸出成功修改許可權的檔案許可權更改資訊 |
-f | 忽略大部分的錯誤資訊 |
-v | 輸出詳細資訊 |
-R | 遞回更改目錄和檔案的許可權 |
-rwxrwxrwx
-rwxrwxrwx的第一個字元表示這是一個普通檔案,之後每三個字元分別代表的是使用者許可權、使用者組許可權、其他使用者許可權
使用者許可權用u表示
使用者組許可權用g表示
其他使用者許可權用o表示
那麼chmod命令的MODE第一種方式可以為指定使用者或使用者組或其他使用者授權
u+x:表示授予使用者對該檔案的可執行許可權
g+r:表示授予使用者組對該檔案的可讀許可權
o-w:表示取消其他使用者對該檔案的寫許可權
[root@VM_200_13_centos ~]# ll
total 4
drwsr-Sr-T 2 root root 4096 Aug 14 19:59 test
[root@VM_200_13_centos ~]# chmod u-x test/
[root@VM_200_13_centos ~]# chmod g+w test/
[root@VM_200_13_centos ~]# chmod o+w test/
[root@VM_200_13_centos ~]# ll
total 4
drwSrwSrwT 2 root root 4096 Aug 14 19:59 test
如果要為檔案設定多個使用者許可權(使用者許可權、使用者組使用者許可權、其他使用者許可權)這種方式就很麻煩,需要多次設定
這種情況使用許可權的二進位制數表達形式設定會非常效率
許可權 | 二進位制 | 十進位制 |
---|---|---|
r | 100 | 4 |
w | 10 | 2 |
x | 1 | 1 |
s | SUID:100 SGID:10 |
SUID:4 SGID:2 |
t | 1 | 1 |
- | 0 | 0 |
對於 -rwxrwxrwx 除去第一位表示檔案型別外
rwxrwxrwx每三位為一組用二進位制表示:111 111 111
rwxrwxrwx每三位為一組用十進位制表示:7 7 7
最終我們使用計算出的十進位制數為檔案進行授權
[root@VM_200_13_centos ~]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 14 20:41 a
[root@VM_200_13_centos ~]# chmod 000 a
[root@VM_200_13_centos ~]# ll
total 0
---------- 1 root root 0 Aug 14 20:41 a
例子 | 說明 |
---|---|
-rwx------ | 二進位制:111000000 十進位制:700 許可權:所屬使用者具有讀寫執行,所屬使用者組使用者和其他使用者沒有任何許可權 |
-rwx---rwx | 二進位制:111000111 十進位制:707 許可權:所屬使用者和其他使用者具有讀寫執行,所屬使用者組使用者沒有任何許可權 |
-rwx--xrwx | 二進位制:111001111 十進位制:717 許可權:所屬使用者和其他使用者具有讀寫執行,所屬使用者組使用者只有執行許可權 |
[root@VM_200_13_centos ~]# chmod 711 a
[root@VM_200_13_centos ~]# ll
total 0
-rwx--x--x 1 root root 0 Aug 14 20:41 a
如果要授予特殊許可權SUID(4)、SGIU(2)、SBIT(1)則要使用4位元1進位制數表示
[root@VM_200_13_centos ~]# ll
total 0
---------- 1 root root 0 Aug 14 20:41 a
[root@VM_200_13_centos ~]# chmod 7000 a
[root@VM_200_13_centos ~]# ll
total 0
---S--S--T 1 root root 0 Aug 14 20:41 a
chown
命令:chown
作用:修改檔案擁有者和所屬組
語法:chown [選項] [所屬使用者][:所屬使用者組] 檔案...
選項 | 說明 |
---|---|
-c | 只輸出成功修改許可權的檔案許可權更改資訊 |
-f | 忽略大部分的錯誤資訊 |
-v | 輸出詳細資訊 |
-h | 修復符號連結 |
-R | 遞回更改目錄和檔案的許可權 |
--deference | 作用於符號連結的指向,而不是連結檔案本身 |
[root@VM_200_13_centos ~]# ll
total 0
---S--S--T 1 root root 0 Aug 14 20:41 a
[root@VM_200_13_centos ~]# chown test:test a
[root@VM_200_13_centos ~]# ll
total 0
------S--T 1 test test 0 Aug 14 20:41 a
[root@VM_200_13_centos ~]# chown root a
[root@VM_200_13_centos ~]# ll
total 0
------S--T 1 root test 0 Aug 14 20:41 a
[root@VM_200_13_centos ~]# chown :test1 a
[root@VM_200_13_centos ~]# ll
total 0
------S--T 1 root test1 0 Aug 14 20:41 a
[root@VM_200_13_centos ~]# mkdir -p ~/aa/b/c
[root@VM_200_13_centos ~]# touch aa/a
[root@VM_200_13_centos ~]# chown -R -v :test1 aa/
ownership of 'aa/a' retained as root:test1
ownership of 'aa/b/c' retained as root:test1
ownership of 'aa/b' retained as root:test1
ownership of 'aa/' retained as root:test1
預設許可權
我們建立檔案的預設許可權是怎麼來的?如何改變這個預設許可權呢?
umask設定了使用者建立檔案的預設許可權,它與chmod的效果剛好相反。
umask設定的是許可權二補數,而chmod設定的是檔案許可權碼。
一般在/etc/profile、宿主目錄下的.bash_profile或 .profile中設定了umask的預設值。
umask命令允許你設定檔案建立時的預設模式,對應每一類使用者(檔案屬主、同組使用者、其他使用者)存在一個相應的umask值中的數位。
對於檔案來說,這一數位的最大值分別是6。
系統不允許你在建立一個文字檔案時就賦予它執行許可權,必須在建立後用chmod命令增加這一許可權。
目錄則允許設定執行許可權,這樣針對目錄來說,umask中各個數位最大可以到7。
該命令的一般形式為:umask nnn 其中nnn為umask置000 - 777。
我們只要記住umask是從許可權中拿走相應的位即可。
如:umask值為022,則預設目錄許可權為755,預設檔案許可權為644。
計算方法:
檔案預設許可權=666-umask值 666-022=644
目錄預設許可權=777-umask 值 777-022=755
舉例:建立 一個檔案:
umask=033
touch c.txt
那麼c.txt的預設檔案許可權是?
umask掩碼為033
666-033=633 結果為:644
檔案屬性
命令:chattr
作用:可改變存放在ext2、ext3、ext4、xfs、ubifs、reiserfs、jfs等檔案系統上的檔案或目錄屬性
語法:chattr [選項] [屬性] [-v(版本)] 檔案...
選項 | 說明 |
---|---|
-R | 遞回處理,將指定目錄下的所有檔案及子目錄一併處理 |
-v | <版本編號> 設定檔案或目錄版本 |
-V | 顯示指令執行過程 |
+ | 開啟檔案或目錄的指定屬性 |
- | 關閉檔案或目錄的指定屬性 |
= | 指定檔案或目錄的指定屬性 |
屬性 | 說明 |
---|---|
A | 即Atime,告訴系統不要修改對這個檔案的最後存取時間 |
S | 即Sync,一旦應用程式對這個檔案執行了寫操作 使系統立刻把修改的結果寫到磁碟 |
a | 即Append Only,系統只允許在這個檔案之後追加資料 不允許任何進程覆蓋或截斷這個檔案 如果目錄具有這個屬性,系統將只允許在這個目錄下建立和修改檔案 而不允許刪除任何檔案 |
b | 不更新檔案或目錄的最後存取時間 |
c | 將檔案或目錄壓縮後存放 |
d | 當dump程式執行時,該檔案或目錄不會被dump備份 |
D | 檢查壓縮檔案中的錯誤 |
i | 即Immutable,系統不允許對這個檔案進行任何的修改 如果目錄具有這個屬性,那麼任何的進程只能修改目錄之下的檔案 不允許建立和刪除檔案 |
s | 徹底刪除檔案,不可恢復,因為是從磁碟上刪除 然後用0填充檔案所在區域 |
u | 當一個應用程式請求刪除這個檔案 系統會保留其資料塊以便以後能夠恢復刪除這個檔案 用來防止意外刪除檔案或目錄 |
t | 檔案系統支援尾部合併(tail-merging) |
X | 可以直接存取壓縮檔案的內容 |
注意事項:
chattr命令的作用很大,其中一些功能是由Linux核心版本來支援的,不過現在生產絕大部分跑的
linux系統都是2.6以上核心了。
通過chattr命令修改屬效能夠提高系統的安全性,但是它並不適合所有的目錄。
chattr命令不能保護/、/dev、/tmp、/var目錄。
lsattr命令是顯示chattr命令設定的檔案屬性。
這兩個命令是用來檢視和改變檔案、目錄屬性的,與chmod這個命令相比,chmod只是改變檔案的讀寫、執行許可權,更底層的屬性控制是由chattr來改變的。
應用舉例:
用chattr命令防止關鍵密碼檔案被修改
[root@VM_200_13_centos ~]# chattr +i /etc/passwd
[root@VM_200_13_centos ~]# lsattr /etc/passwd
----i----------- /etc/passwd
要想修改此檔案就要把i屬性去掉
[root@VM_200_13_centos ~]# chattr -i /etc/passwd
[root@VM_200_13_centos ~]# lsattr /etc/passwd
---------------- /etc/passwd
讓某個檔案只能往裡面追加資料但不能刪除
適用於各種紀錄檔檔案,還是以密碼檔案為例
[root@VM_200_13_centos ~]# chattr +a /etc/passwd
[root@VM_200_13_centos ~]# lsattr /etc/passwd
-----a---------- /etc/passwd
[root@VM_200_13_centos ~]# chattr -a /etc/passwd
[root@VM_200_13_centos ~]# lsattr /etc/passwd
---------------- /etc/passwd
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-08/134710.htm
相關文章