日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux文件權(quán)限隱藏的細(xì)節(jié)深入分析

linux是一個安全的操作系統(tǒng),她是以文件為基礎(chǔ)而設(shè)計的,其文件權(quán)限是比較復(fù)雜的,可以用stat命令以及l(fā)sattr命令來顯示某個文件的詳細(xì)信息: $ stat file1file: `file1"size: 11904 blocks: 24 io block: 4096 regular filedevice: 301h/769d inode: 355982 links: 1access: (0755/-rwxr-xr-x) uid: ( 503/ jack) gid: ( 503/ general)access: 2003-10-19 09:14:12.0000000000800modify: 2003-10-14 20:41:21.0000000000800change: 2003-10-19 18:56:25.0000000000800$ lsattr file----i--a----- file可以看到,文件權(quán)限的含義是比較廣的,先來看-rwxr-xr-x,第一位是文件的類型,它定義了用戶只能某種方式來操作文件,后面九位是文件的存取控制信息,linux的文件許可機制將用戶分為三類:文件屬主u(user)、文件屬組g(group)和其它用戶o(other) 。三類不同的用戶可以對文件擁有三種不同級別的權(quán)限:讀r(read)、寫w(write)和運行x(execute) 。于是形成了九位的權(quán)限信息,分為三組,分別對應(yīng)u,g,o 。除此之外,用戶還可以設(shè)置setuid與setgid位來改變程序的執(zhí)行身份 。用lsattr命令則可以看到文件的屬性,控制位包括 asacddiijsttu,這些也是能控制文件的存取的 。
由于篇幅有限,不可能就這些一一進(jìn)行分析,本文著力分析文件權(quán)限中w(write)的真正含義,挖出其背后隱藏的細(xì)節(jié),力圖使讀者能正確用好這個關(guān)鍵的權(quán)限位,不至于在系統(tǒng)管理中出現(xiàn)差漏 。
為了能更直觀的說明問題,本文采用實驗操作的方式,一步一步的進(jìn)行分析 。為了簡化操作,我們用o(other)這組權(quán)限來做實驗 。實驗中用到的權(quán)限位均屬于o(other), 進(jìn)行操作的用戶均非root用戶,屬于o(other) 。
在實驗之前,必須澄清一個概念,目錄也是一種文件,它主要包括了兩方面的信息,該目錄下文件的文件名稱與文件inode編號,它們之間有一一對應(yīng)的關(guān)系 。不過目錄文件比較特殊,不能用常規(guī)的方法進(jìn)行讀寫,必須用系統(tǒng)的專用命令來操作 。命令ls其實是對目錄文件進(jìn)行讀操作,命令mv,rm則是對目錄文件進(jìn)行寫操作 。
好了,該說說w(write)的真正含義了,一句話,linux文件權(quán)限中的w是對該文件的*內(nèi)容*進(jìn)行限定 。下面的實驗可以驗證 。
◆實驗1, 目錄文件: /test(rwx), 普通文件: /test/file(r--). 當(dāng)前目錄:/test
$ echo "abc" >filebash: file: permission denied試圖對file的內(nèi)容進(jìn)行改寫, 但file的權(quán)限是只讀,很顯然,操作失敗 。$ cat filehello world!沒有問題, 可以讀出file的內(nèi)容 。$ mv file file2$ lsfile2這是怎么回事呢, file的權(quán)限明明是只讀啊, 請注意, 前面提到了, 文件中的rw權(quán)限只是針對當(dāng)前文件的內(nèi)容進(jìn)行限定, 文件名不屬于當(dāng)前文件的內(nèi)容, 它是保存在上一級的目錄文件的內(nèi)容中 。而mv命令表面上是針對file的,其實是對/test的內(nèi)容進(jìn)行改寫,再看看/test的權(quán)限, 是可寫的(rwx) 。
【Linux文件權(quán)限隱藏的細(xì)節(jié)深入分析】許多用戶為了保護文件,將其權(quán)限設(shè)成只讀就不管了,這是非常危險的,誠然,可以達(dá)到保護文件內(nèi)容的目的(其實也未必,補充內(nèi)容中有論述),但你卻不能保證文件是否會被更名或被刪除,保險的方法是將文件父目錄的權(quán)限也設(shè)為只讀 。當(dāng)然,也有其他的方法,比如用chattri命令或?qū)⑽募到y(tǒng)用ro方式掛載等等,但這些不在本文論述范圍 。
$ rm -f file2$ ls$同樣的原因, 我們可以刪除file2, 與上一次操作不同的是,我們不是改寫/test的一條紀(jì)錄,而是在刪除/test的一條紀(jì)錄 。
◆實驗2, 目錄文件: /test(r-x), 普通文件: /test/file(rw-), 當(dāng)前目錄:/test
$ echo "abc" >file$ cat fileabc/test的權(quán)限雖然是只讀,但我們改寫的是file的內(nèi)容, 它的權(quán)限是可寫,當(dāng)然沒有問題 。$ mv file file2mv: cannot move "file" to "file2": permission denied$ rm -f filerm: cannot remove "file": permission denied我們已經(jīng)知道, 這兩條指令其實與file的權(quán)限無關(guān), 而是在改寫/test的內(nèi)容, 當(dāng)然操作失敗 。通過前面幾個操作,我們應(yīng)該要分清楚指令真正的操作對象是誰,這樣才能對文件權(quán)限作出正確的設(shè)定 。

推薦閱讀