linux檔案許可權系統之初體驗

2021-06-01 02:24:08 字數 3510 閱讀 3146

linux中的一切都是檔案,它的檔案分為以下幾類:

目錄檔案:就是目錄

連線檔案:類似windows的快捷方式

裝置檔案:通常在/dev中,又分為塊裝置檔案和字元裝置檔案,塊裝置是以字元塊為傳輸單位,而字元裝置是以單個字元為傳輸單位。

套接字:  這類檔案通常作用於網路資料連線中,通常放在/var/run目錄中

管道檔案:用於多個程序間的通訊,它是指上是乙個檔案緩衝區

當我們使用ls –al這條命令列出目錄中的檔案資訊時,我們可以看到它的檔案屬性是以下格

式:-rwxrwxrwx,其中』-』這個表示檔案型別:

【d】表示目錄;【-】表示檔案;【l】表示連線檔案;【b】表示塊裝置檔案;【c】表示字元設

備檔案;

而後面的9個屬性又分為三組,沒三個一組,分別表示使用者,群組和其它。其中【r】表示

可讀;【w】表示可寫;【x】表示可執行。同時,這三種屬性可以分別用數字來表示:

【r】:4;【w】:2;【x】:1

以上所述是檔案的基本許可權,此外,linux下的檔案還有三個特殊的許可權:suid/sgid/sticky bit

suid:當s許可權取代user的x時,也就是類似-r-s—x—x,稱為set uid,簡稱為suid,這時,當

使用者執行這個檔案時,就會暫時得到這個檔案擁有者的許可權。

setgid:與suid類似,只不過它的s是取代群組的x。

sbit:當t許可權取代其它的x時,就表示sbit,它只對目錄有效,對檔案沒有任何效果。在具

有sbit的目錄下,使用者若再該目錄下具有w及x的許可權,則當使用者在該目錄下建立檔案或

目錄時,只有檔案擁有者與root才有許可權刪除。

檔案許可權的更改

chgrp:改變檔案所屬群組

用法:chgrp [-r] dirname/filename;//下列的-r引數統一為目錄下檔案的遞迴

例:chgrp users install.log

chown:改變檔案擁有者

用法:chown [-r] 擁有者檔案或目錄

chown [-r] 擁有者:群組 檔案或目錄

例:chown huli install.log

chown huli:usersinstall.log

注意:當我們使用cp將自己的檔案拷貝給另乙個使用者時,該檔案的擁有者和群組並沒有改

變,因此,要讓這個檔案徹底地屬於這個使用者,還必須修改該檔案的擁有者和群組。

chmod:更改檔案屬性

前面已經提到過,r,w,x三個屬性分別對應的數字是4、2、1。而9個屬性又分為三組,那麼

一組的屬性就是這三個屬性的的累加。

例如,當屬性為【-rwxr-x---】時,可知

owner=rwx=4+2+1=7;group=r-x=4+1=5;others=---=0+0+0=0;

這個檔案的許可權就為750

用法:chmod [-r] xyz 檔案或目錄

其中xyz就是剛剛提到的檔案許可權,如上面的750

例:chmod 777 ~/.bashrc

還有一種更改檔案許可權的方法。可以使用u,g,o分別表示三組的屬性,a表示all,語法如下:

chmod [ugoa][+-=] [rwx] 檔案或目錄

引數:其中u表示使用者,g表示群組,o表示其他,a表示所有,+表示加入屬性,-表示減去屬性

=表示設定屬性。

例:chmod u=rwx,go=rx ~.bashrc

chmod a+w~/.bashrc

chmod a-x~/.bashrc

注意:目錄屬性有乙個特別之處,那就是能否進入它與x這個屬性有關

例:cd /tmp

mkdir testing

chmod 766testing

su huli

cd testing;//permissiondenied

可以看到,在上面的例子中,我在/tmp下建立了乙個目錄,並將目錄的許可權更改為【rwxrw-rw-】

然後將切換到huli這個使用者下,可以看到,該使用者對於這個目錄有讀寫的許可權,但是沒有執

行許可權,這時,我使用cd命令進入這個目錄,會看到permission denied的提示資訊,表示

沒有許可權進入該目錄。這時,如果你將x許可權補上,chmod o+x testing,再使用cd命令,便

可以順利進入該目錄。

由此可知,能否進入該目錄是與x屬性息息相關的。

前面提到過suid/sgid/sbit這幾個許可權,那麼這裡就理所當然地要涉及到這幾個許可權的設定。

與普通屬性相似,suid/sgid/sbit所對應的數字也為4、2、1

例:將檔案的許可權更改為【-rwsr-xr-x】

chmod 4755 test

將檔案的許可權更改為【-rwxr-sr-t】

chmod 3755 test

由此可知,這三個許可權是設定在最前面。

注意:當乙個檔案的許可權為【-rw-rw-rw-】時,我們再來更改這幾個特殊許可權試試看

chmod 7666 test;ls –l test

可看到,列印出的結果為【rwsrwsrwt】,為什麼是大寫的s和t呢,這是因為檔案原來的基礎屬性中,使用者,群組和其它中都沒有x這個屬性,而suid表示「該檔案在執行時,具有檔案擁有者的許可權」,但檔案擁有者都無法執行了,又哪來的許可權給別人呢,因此,大寫的s和t都表示空的意思。

檔案與目錄的預設許可權

當我們新建立乙個檔案或者目錄時,它的預設屬性是什麼呢?這就與umask相關。umask就是「檔案或者目錄的屬性預設值要減掉的許可權」。如果檢視umask值和檔案或者目錄的屬性預設值呢?

umask有兩種方式來檢視。

第一種是直接使用umask

第一組數字就是指剛才講到的特殊屬性

第二種是以符號的形式列印unmask  -s

u=rwx,g=rx,o=rx

檔案與目錄的屬性預設值也是不一樣的。預設許可權下,檔案是沒有可執行許可權的,也就是

666,【-rw-rw-rw-】;

而由於x與是否進入此目錄有關,因此預設為所有許可權開放,即為777,【drwxrwxrwx】;

當新建立乙個檔案或者目錄時,它們的屬性就是上面的預設屬性減去umask的值。

檔案的隱藏屬性

檔案有隱藏屬性,在系統安全性方面,該隱藏屬性非常的重要

chattr:設定檔案隱藏

用法:chattr [+-=] [asacdistu] 檔案或者目錄名

所有的引數就不一一枚舉了,這裡只列舉兩個比較重要的引數

a:設定了a之後,這個檔案只能增加資料,而不能刪除,只有root才能設定這個屬性。

i:它的作用很大,它可以讓乙個檔案「不能被刪除、改名、設定連線,也無法寫入或者增加資料」

注意:這兩個屬性是較常用的屬性,而且只有root才能設定

lsattr:顯示檔案的隱藏屬性

格式:lsattr [-ar] 檔案或者目錄

-a表示將隱藏檔案的屬性也顯示出來,而-r連同子目錄的屬性也一並列出來。

bing之初體驗

哈哈,期待已久的微軟搜尋引擎bing 必應 的中文版今天終於推出了。剛開始使用google搜尋其主頁時怎麼也搜尋不到,還以為微軟食言。後來轉念一想,bing很可能是google未來的最大競爭對手,在當前這個還不為人所熟知的階段,很有可能給對方穿穿小鞋的。於是用在ie自帶的搜尋工具條上鍵入bing之後...

Statspack之初體驗

呵呵,今晚之前從來沒有做過statspack 好像有點丟人 這幾天乙個資料庫實在被折磨得不行了,明明sga max size有1.5g,但是實際看整個例項才用了200 m記憶體,慢得要死,頻繁讀寫硬碟,偏偏硬碟又不是磁碟陣列,io狂慢,唉,痛苦啊。於是決定花點時間學下例項優化,今天列印了幾頁perf...

ZigBee之初體驗

古人說 工欲善其事,必先利其器 簡單看懂原理圖還是有必要的,雖然自己幾乎沒有硬體基礎,短時期畫所謂的版子不具現實意義。晶元原理圖自從有人說u是晶元標誌,p是埠,c是電容,r是電阻,s是按鍵,led是led燈。後才漸漸明白 引腳標記相同的,學長說表示版子內部已連線,至於露在外面的引腳他們說是用來跳線用...