主題列表:
1.默認(rèn)權(quán)限:umask
2.隱藏權(quán)限:chattr, lsattr
3.特殊權(quán)限:SUID/SGID/Sticky Bit
4.文件類型:file
系統(tǒng)環(huán)境:Redhat Fedora Core 6
文章作者:wuzhaikof
文件與(或)目錄是文件系統(tǒng)的具體表現(xiàn)形式,在Linux系統(tǒng)管理部分,文件與目錄管理映射了Linux文件系統(tǒng)管理策略的重要方面。本文主要就Linux文件系統(tǒng)(文件或目錄)的默認(rèn)權(quán)限與隱藏權(quán)限展開(kāi)論述,關(guān)于文件和目錄的路徑、權(quán)限、權(quán)限表示(和設(shè)置)方法等基本概念以及常規(guī)操作(移動(dòng)、刪除、復(fù)制、查看等)是學(xué)習(xí)本文的基礎(chǔ)。
一. 文件系統(tǒng)的默認(rèn)權(quán)限(umask)
當(dāng)我們?cè)谙到y(tǒng)中新建一個(gè)文件或目錄時(shí),系統(tǒng)會(huì)自動(dòng)賦予該文件或目錄一個(gè)初始訪問(wèn)權(quán)限(Value),我們稱為默認(rèn)權(quán)限,默認(rèn)權(quán)限與文件系統(tǒng)的umask值有關(guān)??梢栽诮K端下直接輸入umask來(lái)查看當(dāng)前系統(tǒng)的umask值。例如:
[root]#umask
0022
也許你會(huì)問(wèn)為什么自己系統(tǒng)的umask值只有三位數(shù)?這里第一位是特殊權(quán)限位,我們暫且不考慮它,先看后面三位數(shù)就可以了。那么這個(gè)值具體是怎樣運(yùn)用的呢?其實(shí)umask本質(zhì)是一個(gè)掩碼,為此我們有必要先了解Linux文件系統(tǒng)權(quán)限的表示方法及文件與目錄的約定權(quán)限。
1. 文件系統(tǒng)的權(quán)限表示方法有兩種。
一是直接用r、w、x來(lái)代表文件的所有者(u)、用戶組(g)、其他用戶(o)對(duì)某一文件或目錄的讀、寫(xiě)、執(zhí)行(x)權(quán)限,稱為字符表示法,例如上面的-rw-rw-rw-。二是用一組(三位)八進(jìn)制數(shù)來(lái)間接表示文件或目錄的權(quán)屬,稱為數(shù)字表示法,例如某文件的權(quán)限為755。
注:所謂數(shù)字表示法是指將讀取(r),寫(xiě)入 (w) 和執(zhí)行(x)分別以4、2、l來(lái)代表,沒(méi)有授予的部份就表示值為0,然后再把所授予的權(quán)限相加而成。
2.在不考慮umask的情況下,新建一個(gè)文件或目錄的權(quán)限應(yīng)該都是rwxrwxrwx,但為了提高安全性,會(huì)默認(rèn)去除新建文件的可執(zhí)行權(quán)限(x),而對(duì)于新建的目錄,可執(zhí)行位x與可否被允許進(jìn)入該目錄有關(guān),因此Linux約定:
新建文件的權(quán)屬是-rw-rw-rw-,權(quán)限值是666。
新建目錄的權(quán)屬是drwxrwxrwx,權(quán)限值是777。
那么,在給定系統(tǒng)umask的情況下,新建文件或目錄的默認(rèn)權(quán)限如下賦予:
新建文件的約定權(quán)限 - UMASK表示的權(quán)限 = 文件的默認(rèn)權(quán)限
新建目錄的約定權(quán)限 - UMASK 表示的權(quán)限 = 目錄的默認(rèn)權(quán)限
這里的減號(hào)(-)更確切地說(shuō)是屏蔽的意思。
例如當(dāng)前系統(tǒng)的UMASK值為002,或者表示為--- --- -w-。那么新建一個(gè)文件或目錄的默認(rèn)權(quán)限為:
新建文件的約定權(quán)限 - UMASK表示的權(quán)限 = 文件的默認(rèn)權(quán)限
-rw-rw-rw- - --- --- -w- = -rw-rw-r-
表示在約定權(quán)限的基礎(chǔ)上屏蔽除所有者(u)、同組用戶(g)之外其他用戶(o)的可寫(xiě)權(quán)限。此時(shí)當(dāng)你在系統(tǒng)中新建一個(gè)文件時(shí),該文件的默認(rèn)權(quán)限就是-rw-rw-r-了,這樣你就會(huì)理解為什么UMASK是一個(gè)掩碼值了。我們?cè)賹?shí)際操作一下吧。
[root]#umask 002
[root]#umask
002
[root]#touch test1
[root]#ls -dl test1
-rw-rw-r-- 1 root root 0 Jun 17 21:27 test1
test1的約定權(quán)限是rw-rw-rw-,但經(jīng)過(guò)umask屏蔽后,被賦予默認(rèn)權(quán)限為rw-rw-r--。
同理對(duì)于新建目錄的默認(rèn)權(quán)限采用同樣的規(guī)則。
新建目錄的約定權(quán)限 - UMASK 表示的權(quán)屬 = 目錄的默認(rèn)權(quán)限
rwxrwxrwx - --- --- -w- = rwxrwxr-x
[root]#mkdir testdir
[root]#ls -dl testdir
drwxrwxr-x 2 root root 4096 Jun 17 21:30 testdir
以上只拋磚引玉地概述UMASK的意義即簡(jiǎn)單的設(shè)定方法,需要注意的是,umask命令用來(lái)設(shè)置進(jìn)程所創(chuàng)建的文件的讀寫(xiě)權(quán)限,最保險(xiǎn)的值是0077,即關(guān)閉創(chuàng)建文件的進(jìn)程以外的所有進(jìn)程的讀寫(xiě)權(quán)限,表示為-rw-------。在~/.bash_profile中,加上一行命令umask 0077可以保證每次啟動(dòng)Shell后, 進(jìn)程的umask權(quán)限都可以被正確設(shè)定。
二. 文件系統(tǒng)的隱藏權(quán)限:chattr, lsattr
除了設(shè)置文件或目錄的讀(r)、寫(xiě)(w)、執(zhí)行(x)權(quán)限外,對(duì)于某些有特殊要求的檔案(如服務(wù)器日志)還可以追加隱藏權(quán)限的設(shè)定。這些隱藏權(quán)限包括:
Append only (a), compressed (c), no dump (d), immutable (i), datajournalling (j),secure deletion (s), no tail-merging (t),undeletable (u), no atime updates (A), synchronous directoryupdates (D), synchronous updates (S), and top of directoryhierarchy (T).
大部分屬性在文件系統(tǒng)的安全管理方面起很重要的作用。關(guān)于以上屬性的詳細(xì)描述請(qǐng)兄弟們查閱chattr的在線幫助man,注意多數(shù)屬性須要由root來(lái)施加。
1. 通過(guò)chattr設(shè)置檔案的隱藏權(quán)限。
[root]#chattr --help
Usage: chattr [-RV] [-+=AacDdijsSu] [-v version] files...
參數(shù)或選項(xiàng)描述:
-R:遞歸處理,將指定目錄下的所有文件及子目錄一并處理。
-V:顯示詳細(xì)過(guò)程有版本編號(hào)。
-v:設(shè)定文件或目錄版本(version)。
+ :在原有參數(shù)設(shè)定基礎(chǔ)上,追加參數(shù)。
- :在原有參數(shù)設(shè)定基礎(chǔ)上,移除參數(shù)。
= :更新為指定參數(shù)設(shè)定。
A:文件或目錄的 atime (access time)不可被修改(modified),可以有效預(yù)防例如手提電腦磁盤(pán)I/O錯(cuò)誤的發(fā)生。
S:硬盤(pán)I/O同步選項(xiàng),功能類似sync。
a:即append,設(shè)定該參數(shù)后,只能向文件中添加數(shù)據(jù),而不能刪除,多用于服務(wù)器日志文件安全,只有root才能設(shè)定這個(gè)屬性。
c:即compresse,設(shè)定文件是否經(jīng)壓縮后再存儲(chǔ)。讀取時(shí)需要經(jīng)過(guò)自動(dòng)解壓操作。
d:即no dump,設(shè)定文件不能成為dump程序的備份目標(biāo)。
i:設(shè)定文件不能被刪除、改名、設(shè)定鏈接關(guān)系,同時(shí)不能寫(xiě)入或新增內(nèi)容。i參數(shù)對(duì)于文件 系統(tǒng)的安全設(shè)置有很大幫助。
j:即journal,設(shè)定此參數(shù)使得當(dāng)通過(guò)mount參數(shù):data=ordered 或者 data=writeback 掛載的文件系統(tǒng),文件在寫(xiě)入時(shí)會(huì)先被記錄(在journal中)。如果filesystem被設(shè)定參數(shù)為data=journal,則該參數(shù)自動(dòng)失效。
s:保密性地刪除文件或目錄,即硬盤(pán)空間被全部收回。
u:與s相反,當(dāng)設(shè)定為u時(shí),數(shù)據(jù)內(nèi)容其實(shí)還存在磁盤(pán)中,可以用于undeletion.
各參數(shù)選項(xiàng)中常用到的是a和i。a選項(xiàng)強(qiáng)制只可添加不可刪除,多用于日志系統(tǒng)的安全設(shè)定。而i是更為嚴(yán)格的安全設(shè)定,只有superuser(root) 或具有CAP_LINUX_IMMUTABLE處理能力(標(biāo)識(shí))的進(jìn)程能夠施加該選項(xiàng)。我們來(lái)舉一個(gè)例子:
[root]#touch chattr_test
[root]#chattr +i chattr_test
[root]#rm chattr_test
rm: remove write-protected regular empty file `chattr_test`?y
rm: cannot remove `chattr_test`: Operation not permitted
呵,此時(shí)連root本身都不能直接進(jìn)行刪除操作,必須先去除i設(shè)置后再刪除。
chattr命令的在線幫助詳細(xì)描述了各參數(shù)選項(xiàng)的適用范圍及bug提示,使用時(shí)建議兄弟們仔細(xì)查閱。由于上述的這些屬性是隱藏的,查看時(shí)需要使用lsattr命令,以下簡(jiǎn)述之。
lsattr命令格式:
[root]#lsattr [-RVadlv] [files...]
參數(shù)或選項(xiàng)說(shuō)明:
-R:遞歸列示目錄及文件屬性。
-V:顯示程序版本號(hào)。
-a:顯示所有文件屬性,包括隱藏文件(.)、當(dāng)時(shí)目錄(./)及上層目錄(../)。
-d:僅列示目錄屬性。
-l:(此參數(shù)目前沒(méi)有任何作用)。
-v:顯示文件或目錄版本。
例:
[root]#chattr +aij lsattr_test
[root]#lsattr
----ia---j--- ./lsattr_test
關(guān)于lsattr的用法,詳情請(qǐng)參閱在線幫助man
三.檔案的特殊權(quán)限:SUID/SGID/Sticky Bit
接下來(lái)將概要性地介紹SUID/SGID/StickyBit等特殊權(quán)限及它們的設(shè)置方法,學(xué)習(xí)前需要掌握用戶(組)ID、程序(process)、(文件系統(tǒng)權(quán)限的表示和設(shè)置方法)等知識(shí)。
前面提到的r(讀)、w(寫(xiě))、x(執(zhí)行)是Linux文件系統(tǒng)的基本權(quán)限,三者規(guī)定了特定文件或目錄的所有者(user)、所有者所屬用戶組(group)、其他(others)對(duì)文件系統(tǒng)的存取權(quán)限。例如:
[root]#ll apple
-rw-r--r-- 1 root 8083 0 Apr 1 20:46 apple
然而結(jié)合前面介紹的UMASK值(0022),說(shuō)明還存在一些特殊的權(quán)限規(guī)范,這些權(quán)限包括SUID/SGID/StickyBit,系統(tǒng)中就直接存在這樣的例子:
[root]#ls -dl /tmp
drwxrwxrwt 342 root root 36864 Jun 14 22:13 /tmp
[root]$ll /usr/bin/passwd
-rwsr-xr-x 1 root root 27768 Jul 17 2006 /usr/bin/passwd
1.Set UID
Linux為了提高本地用戶賬號(hào)信息的安全性,特別指定了/etc/shadow(影子文件)以加密密碼的方式來(lái)存儲(chǔ)用戶的賬戶信息,同時(shí)這個(gè)文件的默認(rèn)權(quán)限是-r--------,限定只有superuser才能“強(qiáng)制”儲(chǔ)存,其他用戶沒(méi)有任何權(quán)限。可是你會(huì)發(fā)現(xiàn),為什么我們可以以普通用戶的身份修改我們自己的用戶密碼呢,畢竟更新密碼就必然會(huì)寫(xiě)入/etc/shadow文件的?
參照前面的例子(/usr/bin/passwd),我們認(rèn)為當(dāng)文件系統(tǒng)的“所有者權(quán)限組合”的可執(zhí)行位(x)被s(即rws------)取代時(shí),構(gòu)成特殊權(quán)限規(guī)定SetUID,簡(jiǎn)稱SUID。
SUID表示當(dāng)請(qǐng)求執(zhí)行包含SUID特殊權(quán)限的程序時(shí),能夠暫時(shí)擁有該程序所有者(對(duì)程序)的存取權(quán)限。假設(shè)普通用戶A通過(guò)passwd命令更新自己的密碼,而/usr/bin/passwd的所有者是root(root,root),也就是說(shuō),當(dāng)A請(qǐng)求執(zhí)行passwd命令時(shí),實(shí)際上是暫時(shí)獲得root(對(duì)/usr/bin/passwd)的執(zhí)行權(quán)限,并進(jìn)一步更新/etc/shadow的內(nèi)容。
需要注意的是,Linux規(guī)定SUID僅對(duì)系統(tǒng)中的二進(jìn)制可執(zhí)行文件設(shè)置有效,而且不可對(duì)Shell Script施加設(shè)置,畢竟Shell腳本只是對(duì)二進(jìn)制可執(zhí)行文件的調(diào)度組合,最終也是要遵從binary file的權(quán)限設(shè)置。
2.Set GID
相對(duì)于SUID,當(dāng)所有者所在的用戶組(group)的權(quán)限組合中可執(zhí)行位(x)被s所取代時(shí)(例如---rws---),便構(gòu)成SetGID的權(quán)限設(shè)置。SGID可以針對(duì)二進(jìn)制文件或目錄進(jìn)行設(shè)置:
a.二進(jìn)制可執(zhí)行文件:則當(dāng)請(qǐng)求執(zhí)行該文件(程序)時(shí),請(qǐng)求執(zhí)行者所在的用戶組(即effectivegroup)將暫時(shí)獲得該程序(binary file)所屬的用戶組ID(group ID)的存取權(quán)限.
b.目錄:假設(shè)目錄A,此時(shí)在A目錄下創(chuàng)建的文件或子目錄所屬的用戶組ID,將自動(dòng)被賦予A目錄的組ID
SGID主要用于多人組成的項(xiàng)目開(kāi)發(fā)上,一般比較少用到。
3. Sticky Bit
我們認(rèn)為,當(dāng)文件系統(tǒng)“其他(others)”的權(quán)限組合中可執(zhí)行位(x)被t所取代時(shí)(例如------rwt),便構(gòu)成StickyBit的權(quán)限設(shè)置。SBIT顧名思義可以起到限制訪問(wèn)的作用,是容易理解而好用的設(shè)置,它只對(duì)目錄有效。當(dāng)對(duì)一個(gè)目錄A施加了SBIT設(shè)定以后,并且使用者對(duì)A目錄有w和x權(quán)限時(shí),則使用者在A目錄下所創(chuàng)建的個(gè)人文檔(含目錄)只有使用者本身或root可以執(zhí)行刪除、更名、移動(dòng)等操作(是否可讀依實(shí)際權(quán)限r(nóng)而定)。
由前面所舉的/tmp目錄,我們做一下簡(jiǎn)單的測(cè)試:
[root]#ls -dl /tmp
drwxrwxrwt 342 root root 36864 Jun 14 22:13 /tmp
[root]#cd /tmp
[root]#touch orange
[root]#chmod 777 orange (注意這里設(shè)置orange權(quán)限全開(kāi))
[root]#logout (退出root,并以普通用戶登錄)
[console]$cd /tmp
[console]$rm orange
rm: cannot remove `orange': Operation not permitted
注意:SBIT一般僅針對(duì)目錄施加有意義。
接下來(lái)再簡(jiǎn)單介紹以上幾種特殊權(quán)限的設(shè)置方法。如果你已經(jīng)掌握了用(八進(jìn)制)數(shù)字來(lái)表示權(quán)限的規(guī)則,再結(jié)合chmod命令進(jìn)行設(shè)置就很簡(jiǎn)單了。以下是SUID/SGID/StickyBit約定對(duì)應(yīng)的八進(jìn)制數(shù)值:
*SUID 4
*SGID 2
*SBIT 1
設(shè)置時(shí)我們把表示特殊權(quán)限的數(shù)字放在其他三位數(shù)字權(quán)限的前面,現(xiàn)舉例如下:
[root]#touch banana ; ll banana
-rw-r--r-- 1 root 8083 0 Jun 16 18:16 banana
[root]#chmod 4775 banana ; ll banana
-rwsrwxr-x 1 root 8083 0 Jun 16 18:16 banana(注意SUID僅對(duì)二進(jìn)制文件有效)
[root]#chmod 6775 banana ; ll banana
-rwsrwsr-x 1 root 8083 0 Jun 16 18:16 banana (注意權(quán)限組合)
[root]#chmod 1775 banana ; ll banana
-rwxrwxr-t 1 root 8083 0 Jun 16 18:16 banana(注意SBIT一般僅針對(duì)目錄有意義)
以下再舉一個(gè)特例:
[root]#chmod 7666 banana ; ll banana
-rwSrwSrwT 1 root 8083 0 Jun 16 18:16 banana
呵,特殊權(quán)限位變成大寫(xiě)的了,注意例子中我們把banana文件的基本權(quán)限設(shè)為666,說(shuō)明banana沒(méi)有任何可執(zhí)行權(quán)限,這里特殊權(quán)限位為大寫(xiě),我們認(rèn)為是“空”,畢竟文件的所有者都沒(méi)有定義執(zhí)行權(quán)限,(程序的)請(qǐng)求執(zhí)行者當(dāng)然不能獲得執(zhí)行權(quán)限。
以上介紹了特殊權(quán)限SUID/SGID/StickyBit的基本概念及設(shè)定方法,個(gè)人認(rèn)為如果有條件,應(yīng)該重點(diǎn)把握SUID這一特殊權(quán)限,因?yàn)榫统绦蚨?,一個(gè)可以改變UID的程序是SUID程序。我們知道在各種操作系統(tǒng)中都普遍存在緩沖區(qū)溢出的可能,這是嚴(yán)重威脅系統(tǒng)安全的漏洞,而具有SUID特殊權(quán)限的程序就經(jīng)常被入侵者所利用,他們編寫(xiě)一些特殊代碼,迫使系統(tǒng)在執(zhí)行SUID程序時(shí)發(fā)生緩沖區(qū)溢出,進(jìn)而獲得superuser的執(zhí)行權(quán)限。當(dāng)然系統(tǒng)中默認(rèn)允許SUID的程序,例如passwd、ping、su等,在系統(tǒng)運(yùn)作均衡、提高管理效率及系統(tǒng)診斷方面也是必要的,只是我們應(yīng)當(dāng)根據(jù)實(shí)際需要,盡量減少這些安全隱患的存在。
四.文件類型:file
前面介紹了Linux文件系統(tǒng)權(quán)限的相關(guān)概念。我們知道Linux文件系統(tǒng)是Linux內(nèi)核支持的基本功能之一, 并由根 /開(kāi)始往下形成倒立樹(shù)狀的級(jí)連式結(jié)構(gòu)。文件與目錄是Linux文件系統(tǒng)的兩個(gè)基本元素,(廣義的)文件分為普通文件、目錄文件、連接文件和特殊文件??梢酝ㄟ^(guò)file命令來(lái)識(shí)別各種不同的文件類型。
應(yīng)用舉例:
[root]#file ~/.bashrc
/home/b/j/console/.bashrc: ASCII text
[root]#file /usr/bin/passwd
/usr/bin/passwd: setuid ELF 64-bit LSB executable, AMD x86-64,version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (usesshared libs), for GNU/Linux 2.6.9, stripped
[root]#file /usr/lib/python2.4/test/185test.db
/usr/lib/python2.4/test/185test.db: Berkeley DB 1.85 (Hash, version2, big-endian)
關(guān)于file命令的用法可以通過(guò)file –help 或 file的在線幫助man 了解更多詳情。
*******************************************************************************
愛(ài)華網(wǎng)本文地址 » http://www.klfzs.com/a/25101011/48843.html
愛(ài)華網(wǎng)



