標籤:stat umask chmod suid
一、目的 本文將介紹linux環境下有關檔案訪問模式相關的命令。
umask用來設定預設的檔案訪問模式屏蔽值;chmod用來修改檔案的訪問模式。
本文將選取ubuntu14.04發行版做為描述基礎。
二、檔案訪問模式 linux使用檔案訪問模式保證檔案的安全性,通過一個12bit的資料結構表示檔案訪問模式的4組屬性:
1、SUID、SGID、Sticky屬性 ;也叫特殊屬性。
2、使用者的讀、寫、可執行屬性;也叫使用者屬性。
3、使用者所屬組的讀、寫、可執行屬性;也叫使用者所屬組屬性。
4、組內其他使用者的讀、寫、可執行屬性;也叫其他使用者屬性。
這些屬性有兩種展示方式:一種是文字表示方式,r表示可讀,w表示可寫,x表示可執行,s表示設定了SUID,-表示禁止該屬性。使用ls -al命令可以查看文字方式表示的檔案訪問屬性。還有一種表示方式是八進位,將12bit分為4組,每組可以使用八進位來表示,例如,User八進位值7(二進位為111)表示可讀、可寫、可執行;5(二進位為101)表示可讀、不可寫、可執行。
這兩種表示方式各有優缺點,文字表示方式直觀,八進位表示方式簡潔。
三、SUID和SGID屬性 SUID屬性只和可執行檔相關。正常情況下,當使用者啟動該可執行檔時,是以目前使用者的許可權啟動該可執行檔;如果設定了SUID屬性,那麼不管目前使用者是誰,都是以檔案的所有者的許可權啟動該可執行檔。
例如,目前使用者是zsy,而可執行檔passwd的所有者是root,如果沒有設定SUID屬性,那麼當zsy使用者啟動passwd可執行程式時,passwd的許可權只是zsy擁有的許可權,不能修改/etc/shadow檔案;如果設定了SUID屬性,那麼當zsy使用者啟動passwd可執行程式時,passwd的許可權是root擁有的許可權,可以修改/etc/shadow。
SGID屬性的作用類似,如果設定了SGID屬性,那麼都擁有檔案所屬組的許可權。
四、stat命令 stat命令可以查看檔案的一些基本屬性:檔案大小、所佔的塊大小、檔案訪問模式、檔案的所有者ID、檔案所屬組的ID、檔案建立時間等。
文法:stat filename
例如,使用stat命令來查看passwd檔案的屬性。可以看出passwd的檔案訪問模式的八進位表示方式是4755,對應的文字表示方式是-rwsr-xr-x。該檔案設定了SUID和SGID。
五、umask命令 umask命令設定了預設的檔案訪問模式屏蔽值,那麼當建立檔案時則自動禁止被屏蔽的屬性。
文法:umask value
例如,使用umask 2命令設定檔案訪問模式的屏蔽值為2,即0002。那麼當建立檔案時,自動化佈建其他屬性的寫入權限為禁止狀態。
六、chmod命令 chmod命令可以改變檔案的訪問模式。
文法:chmod 檔案訪問模式(文字表示方式或者八進位表示方式) filename
例如,使用chmod命令以文字表示方式增加檔案的可執行許可權,chmod u+x README.md;或者以八進位表示方式增加檔案的可執行許可權,chmod 644 README.md。
其中u+x的含義是:u表示檔案訪問模式中的使用者屬性,+表示增加,x表示可執行許可權。
八進位表示方式比較簡潔,所以建議使用八進位的表示方式修改檔案的訪問模式。
七、總結 linux系統下檔案有很多種屬性,例如:檔案大小、檔案的擁有者、檔案所屬的組、檔案訪問模式等,其中檔案訪問模式屬性的地位比較重要,因此重點介紹了檔案訪問模式的概念以及相關命令umask和chmod。
檔案訪問模式的表示方式有文字表示方式和八進位表示方式,應該熟練掌握。特殊屬性的SUID位影響了可執行檔的執行許可權,讀者應該正確理解SUID的含義以及使用方法。
著作權聲明: 原創作品,如非商業性轉載,請註明出處;如商業性轉載出版,請與作者聯絡。
linux隨筆(11)---umask和chmod