文中有不對或者有不清楚的地方,請大家告訴我,謝謝!
linux檔案特殊屬性
linux檔案特殊屬性主要包括它的預設許可權、隱藏屬性和特殊許可權(suid/sgid/sbit)。
下面我們就來分別講解它的這些特殊屬性。
1. linux檔案預設許可權:umask
我們在新建立乙個檔案時,它都有自己的預設屬性。它們的預設屬性是通過「umask」值來設定的。
那麼如何來檢視和設定umask值呢?
① 檢視umask值
[root@localhost /]#umask(數字形式)
0022
[root@localhost /]#umask –s(符號形式)
u=rwx,g=rx,o=rx
上面的命令顯示出umask值的兩種表現形式。我們看到數字表現出來的有4位數字,第一位數字用來表示特殊許可權,我們在後面介紹,第二三四位數字分別用來表示使用者/組/其他使用者的許可權。
在預設許可權的屬性上,目錄檔案和普通檔案是不同的。因為我們不希望普通檔案具有可執行許可權,所以,普通檔案在預設情況下是沒有執行許可權的。又因為目錄檔案需要具有可執行許可權才可以進入,所以普通檔案的預設屬性最大為666,目錄檔案的預設屬性最大為777。
② umask值的意義
umask值就是指「linux檔案的預設屬性需要減掉的許可權」。比如linux普通檔案的最大預設屬性是666,目錄檔案的最大屬性是777。但是我們不想要使用者在新建立檔案時,檔案的屬性是666或777,那麼我們就要設定umask值。linux系統預置的umask值是022,那麼使用者在新建立普通檔案時,普通檔案的屬性就是666-022=644,新建立目錄檔案時,目錄檔案的屬性就是777-022=755。
③ umask值設定
我們不想要新建立的普通檔案的屬性是644,目錄檔案的屬性是755,我們想要新建立普通檔案的屬性是664,新建立目錄檔案的屬性是775。那麼我們就設定umask值為002即可。設定方法就是「umask 002」。
2. linux檔案隱藏屬性
檔案都具有隱藏屬性,隱藏屬性對於系統安全來說很重要。
① 設定檔案隱藏屬性
[root@localhost /]#chattr [-r] [-+=] [aacddijssu] 檔名
常用引數意義:
-r:遞迴處理。
-:刪除某個隱藏屬性,其他原本存在的屬性不改變。
+:新增某個隱藏屬性,其他原本存在的屬性不改變。
=:將隱藏屬性設定為指定的引數,其他原本存在的屬性會被改掉。
a(atime):如果設定了a屬性,則這個檔案的最後訪問時間atime不能被修改。 a
i(immutable):如果設定了i屬性,則不能對這個檔案做任何修該。如果某個目錄具有這個屬性,那麼只能修改該目錄下的檔案,而不能建立和刪除檔案。
s(secure deletion):如果設定了s屬性,則這個檔案將從硬碟空間中完全刪除。
u(undeletable):與s完全相反。如果設定了u屬性,則這個檔案雖然被刪除了,但是還在硬碟空間中存在,還可以用來還原恢復。
② 檢視檔案隱藏屬性
檔案既然有隱藏屬性,那麼我們如何檢視這些檔案的隱藏屬性呢?
[root@localhost /]#lsattr [-rvadlv] 檔名
-r:遞迴顯示目錄檔案下的所有檔案。
-a:顯示隱藏檔案的屬性。
[root@localhost /]#lsattr –ra caiwu
-----a------- caiwu/.bb.swo
------------- caiwu/aa
caiwu/aa:
------------- caiwu/aa/.
-----a------- caiwu/aa/..
-----a------- caiwu/.
------------- caiwu/..
------------- caiwu/bb
-----a------- caiwu/.bb.swp
-----a------- caiwu/.bb.swn
-----a------- caiwu/.bb.swpx
3. linux檔案特殊許可權
linux檔案特殊許可權主要體現在set uid、set gid、sticky bit這三個上面。
要理解這三個特殊許可權,就要先理解賬號的id(uid和gid)以及程序等概念。
① suid
suid就是set uid。設定它是為了讓普通使用者在執行某些程式時,能夠暫時具有該程式的擁有者許可權。
比如:在linux系統中普通使用者也可以使用passwd命令來修改自己的密碼。但是密碼檔案shadow只有root使用者有讀許可權,其他使用者沒有任何許可權,那麼普通使用者是怎樣通過passwd命令來修改自己的密碼呢?我們看下/usr/bin/passwd程式的屬性就知道了。
[root@localhost /]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 jan 7 2007 /usr/bin/passwd
我們發現passwd程式user的x許可權位變成了s。那麼在這裡就是這個s使普通使用者有許可權來執行這個程式。它讓普通使用者在執行passwd這個程式時暫時擁有了root的許可權。
因此,當某程式user的x許可權位變成s時,就是進行了set uid設定,簡稱suid。
suid僅可用於二進位制檔案
,對於其他普通檔案,目錄檔案和指令碼之類的檔案是無效的。
② sgid
sgid就是set gid。設定它用來作用於使用者組。
如果將sgid設定在二進位制檔案
上,則不論使用者是誰,在執行該程式時,它的有效使用者組將會變成改程式的使用者組所有者;
如果將sgid設定在目錄檔案
上,則在該目錄檔案內所建立的檔案或目錄的使用者組,將會變成該目錄的使用者組。
sgid一般用於團隊的專案開發上,在系統中很少使用。如果設定了sgid,那麼該二進位制檔案或者目錄group的x屬性位將會變成s。
③ sbit
sbit就是sticky bit。如果在設定了sbit屬性的目錄中,使用者在該目錄下擁有w和x許可權,那麼當使用者在該目錄下新建檔案時,只有檔案擁有者和root才有權利刪除。
比如:root在/目錄下建立了乙個資料夾test,test的許可權是0777。在沒有加特殊許可權前,任何人都可以在test目錄下做任何事,包括刪除別人建立的檔案。當我給test目錄設定了sbit屬性後,那麼bobyuan這個使用者在test下新建了乙個檔案bobtest, 屬性是0777;bob這個使用者進入test目錄下試圖刪除bobtest,發現沒有許可權刪除。
如果某個目錄設定了sbit屬性,那麼該目錄other的x屬性位將會變成t。如【drwxrwxrwt】。
sbit
僅可用於目錄檔案,對於普通檔案是不生效的。
如果某個檔案的user或者group或者other沒有設定x屬性,但是設定了suid或者sgid或者gbit,那麼,這些特殊屬性將會以大寫的s和t表現出來。
④ 設定suid/sgid/sbit
我們用數字形式來表示這三個特殊屬性,他們和r/w/x的數字表現形式類似。
suid:4
sgid:2
sbit:1
比如我要設定cat命令的suid屬性,那就可以用chmod 4755來實現。
比如我要設定test目錄的sbit屬性,那就可以用chmod 1777來實現。
注意,在設定目錄或者二進位制檔案的特殊屬性時,一定要給予這些目錄或者檔案可執行許可權。如果未給予可執行許可權,即使設定了特殊屬性,也將會是空的,會用大寫的s和t表示。
本文出自 「大浪淘沙」 部落格,請務必保留此出處
Linux檔案特殊屬性
文中有不對或者有不清楚的地方,請大家告訴我,謝謝!linux檔案特殊屬性 linux檔案特殊屬性主要包括它的預設許可權 隱藏屬性和特殊許可權 suid sgid sbit 下面我們就來分別講解它的這些特殊屬性。1.linux檔案預設許可權 umask 我們在新建立乙個檔案時,它都有自己的預設屬性。它...
Linux檔案的特殊屬性 sbjustyou的部落格
linux檔案的特殊屬性chattr對於一些特殊的檔案,為防止使用者誤操作,可以加特殊屬性,示例如下 i 鎖定示例檔案 root centos76 data ll test.txt rw r r 1 root root 48 mar 12 19 30 test.txt i鎖定檔案 root cent...
Linux檔案的特殊屬性chattr工具
linux系統下有許多檔案許可權設定的命令,本文主要介紹chattr工具給檔案加隱藏屬性,可以增加重要檔案的安全性。一 給檔案加a屬性,增加該屬性後,該檔案只能追加內容而不能覆蓋刪除,lsattr檢視chattr許可權 1.新增a屬性 root www lsattr 1.txt e 1.txt ro...