Linux的文件權限
在Linux的世界里,一切皆文件,用文件代表了系統的所有數據。既然文件那么重要,自然會給文件賦予一定的權限,要不然每個人都可以亂來,那系統會十分危險。所以文件的所有者會給文件設定權限,每個用戶在自己權限的范圍下做各自的操作。
我們可以先用 ll-d 查看一下文件的權限
第一位代表著問價類型,d 代表著是目錄文件,后面九位代表著權限。其中三位為一組,一共分為三組。分別代表著所有者,所屬組,其他三種不同類型的身份。
所有者:就是這個文件的擁有者,文件歸所有者所有,他有權更改所有用戶用文件的權限。 所屬組:就是所有者對所在的組設定的權限,這個權限將適用于該組的所有成員。 其他:就是除了以上兩種的其他成員。
每組成員分為三個常駐的普通權限:
r read 可讀 w write 可寫 x excut 執行
在上圖中發現又的地方顯示的是 — ,這意味著對應的成員沒有該權限。 這些權限也可以用十進制的數字來表示 把三組分開,分成三位的二進制來看,有權限代表1,為無權限代表0,那么
r-- 100 二進制 4 十進制 -w- 010 二進制 2 十進制 --x 001 二進制 1 十進制
所以rwx用數字分別表示為421,每個組的權限就是該組權限對應的數字相加和。比如上圖中所有者的權限為rwx,用十進制表示為7,1.txt的文件權限就是755。
當然,生產環境中,文件的所有者并不一定是root ,有可能只是一個普通用戶,那么當普通用戶所設的權限對root有什么影響呢。
由圖可以看出,即使所有者沒給root分權限他依舊可以讀寫操作。經過多次的實驗,發現讀寫權限對于root是無效的,但是無論哪個用戶擁有執行權限,root一樣也會有執行權限,所有人沒執行權限,root一樣也沒有。
在做實驗時引出了權限操作的兩個命令:
chgrp:chgrp命令用來改變文件或目錄所屬的用戶組。 -c或——changes:效果類似“-v”參數,但僅回報更改的部分; -f或--quiet或——silent:不顯示錯誤信息; -h或--no-dereference:只對符號連接的文件作修改,而不是該其他任何相關文件; -R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一并處理; -v或——verbose:顯示指令執行過程; chmod:用來變更文件或目錄的權限。 -c或——changes:效果類似“-v”參數,但僅回報更改的部分; -f或--quiet或——silent:不顯示錯誤信息; -R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一并處理; -v或——verbose:顯示指令執行過程;
在命令執行過程成對權限的改變和指定需要提及用戶:
更改權限 chmod who opt per file who:u g o a opt:+ - = per:r w x
示例:
對于只有讀權限時,用戶對文件只能讀取其中的內容,其他什么都不能做。
當對文件設置只寫權限時,用戶差看不到文件 ,但是可以寫入文件。
刪除文件可以用rm命令來刪除。刪除命令本身與用戶文件的權限無關,而是對文件父目錄的權限有關。當對父目錄沒有執行權限的時候,文件一樣不能刪除。
當用戶對文件沒有查看權限,但是有執行權限的話,用戶還是能進入目錄里,但是看不見目錄里面的內容。如果用戶知道目錄里的內容并對內容的文件有權限的話,用戶依然可以對內容里的文件進行操作。
當用戶對文件只有讀權限的話,用戶只能看見文件的內容,其余什么操作都不能做。
文件創建時如果輸入的權限位數不夠,或者是設置文件權限時位數不夠,則文件權限默認補位為前面補位,并且補0.
在三個權限的數字可以看出,如果權限為奇數的話,文件肯定有執行權限,如果為偶數的話,肯定沒執行權限。
講權限就不得不說umask值,這是個神奇是數字。他關系到用戶創建的默認權限,一般用戶的默認umask值為002,管理員為022。
計算文件的權限: umask+default permission=777(目錄)|666(文件)
在創建時時文件跟目錄的權限時不同的,少一個1,也就是少個執行權限。這也是為了安全,如果每個文件創建時默認都有執行權限,那么久可以隨意破壞系統,給管理員帶來布標的麻煩。
但如果吧umask值設的有奇數的話,為了保證原來的思想。對于文件而言又附加了一跳程序。
666-umask,如果為奇數,加1。偶數不變。
最后再說一下二進制文件,碎玉二進制文件要是沒有讀權限一樣能執行。 在文件中,要是沒有讀權限,查看不了文件類型。
原創文章,作者:phosphor,如若轉載,請注明出處:http://www.www58058.com/77110