Linux檔案特殊屬性

2021-06-05 11:24:36 字數 3754 閱讀 5216

文中有不對或者有不清楚的地方,請大家告訴我,謝謝!

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...