天天看點

Linux檔案和目錄權限:chmod、更改所有者和所屬組:chown,umask指令,隐藏權限:lsattr/chattr

檔案和目錄權限chmod:

 我們使用ls -l可以看到檔案的詳細資訊,也知道第一列的第一個符号(字母)表示檔案的類型,在表示檔案的類型符号的後面的九個符号則表示的是檔案的權限,這些權限和檔案的所有者和所屬組都有關系:

<a href="https://s5.51cto.com/wyfs02/M00/08/61/wKiom1ngdLiyMdQUAAIS7OzdPNk378.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M01/A7/17/wKioL1ngcgOTsYeNAAMooKQ-bgY354.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M01/08/61/wKiom1ngdLuguxlAAAK79h_9jjs856.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M00/A7/17/wKioL1ngcgbjqnmZAANfHGLPO7Y993.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M02/A7/17/wKioL1ngcgiifOJoAALIWQlU_8A081.png" target="_blank"></a>

檔案權限有三個屬性:是否可讀用r表示、是否可寫用w表示、是否可執行用x表示。

權限可以用數字表示,r=4,w=2,x=1,-=0。rwx=(r+w+x)=7,rw-=(r+w+-)=6。

是以一個權限可以用數字這麼表示:

<a href="https://s4.51cto.com/wyfs02/M01/08/61/wKiom1ngdL-wcucvAAGEJZ8YNUk113.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M01/A7/17/wKioL1ngcgnieWyGAAJs3KA8YeU459.png" target="_blank"></a>

chmod指令:

   chmod是change mode的縮寫,mode就是權限的意思,此指令可以修改權限,下面我們将a.txt的權限改為rwx,用數字表示就是700:

<a href="https://s4.51cto.com/wyfs02/M02/08/61/wKiom1ngdMHQUTqIAASaWFFjMV8900.png" target="_blank"></a>

我們會發現檔案的第一列除了表示檔案類型符号,和表示權限符号之外還有一個 . 字元,這個點 . 表示的意義是此檔案受制于selinux防火牆,隻有修改配置檔案永久關閉selinux防火牆之後,新建立的檔案就不會帶有這個 . 了:

<a href="https://s1.51cto.com/wyfs02/M00/A7/17/wKioL1ngcgzBZCsQAAFLCNVKq5w846.png" target="_blank"></a>

  使用chmod 指令更改目錄權限的時候,隻會更改目标目錄本身,目标目錄下的子目錄權限不會随着更改。chmod -R指令則是可以批量更改目标目錄和下目标目錄的子目錄權限,這就是-R選項的作用:

<a href="https://s1.51cto.com/wyfs02/M00/08/61/wKiom1ngdMahRVpcAAbZ8CAeZXM203.png" target="_blank"></a>

chmod還有更直覺的用法,可以不用數字表示,可以直接用權限字元表示,u表示所有者,g表示所屬組,o表示其他使用者:

<a href="https://s3.51cto.com/wyfs02/M02/08/61/wKiom1ngdMeBaW61AAN7QfF1JqY000.png" target="_blank"></a>

chmod還有一種用法,chmod a+x 這個a表示全部,x則是權限符号,使用此指令能讓此目錄的所有者、所屬組和其他使用者都擁有x權限:

<a href="https://s1.51cto.com/wyfs02/M02/A7/17/wKioL1ngchKw5epJAAMGonCICy0361.png" target="_blank"></a>

chmod a-x則效果相反,可以把x指令全部去掉:

<a href="https://s3.51cto.com/wyfs02/M01/A7/17/wKioL1ngchOBUsZCAAMBT-CUv7U974.png" target="_blank"></a>

  除此之外還可以使用chmod u-x,chmod g-x,chmod o-x或chmod u+x,chmod +x,chmod o+x。

更改所有者和所屬組chown:

  chown是change owner的縮寫,此指令可以更改檔案的所有者和所屬組,passwd檔案裡可以檢視系統有哪些使用者:

<a href="https://s3.51cto.com/wyfs02/M01/08/61/wKiom1ngdMyAomUNAAdJWFur8VM226.png" target="_blank"></a>

更改某個檔案的所有者:

<a href="https://s2.51cto.com/wyfs02/M02/A7/17/wKioL1ngchfTows5AALjI9JIcn8058.png" target="_blank"></a>

  chown指令同時更改使用者和所屬組的用法:chown 使用者:組 檔案,需要在中間用冒隔開:

<a href="https://s2.51cto.com/wyfs02/M00/08/61/wKiom1ngdM6yi73zAAM7vLabTpo112.png" target="_blank"></a>

chown指令更改所屬組的用法:chown  :組 檔案,使用者名不寫即可:

<a href="https://s3.51cto.com/wyfs02/M00/A7/17/wKioL1ngchjC4yaeAAMHK0maR6M582.png" target="_blank"></a>

chown指令加了-R選項後,目标目錄的子目錄和檔案的使用者和所屬組都會随着目标目錄更改:

<a href="https://s4.51cto.com/wyfs02/M01/08/61/wKiom1ngdNCy6NapAAVJHAywpkM005.png" target="_blank"></a>

chgrp是change group的縮寫,此指令可以更改某個檔案所屬組:

<a href="https://s2.51cto.com/wyfs02/M01/A7/17/wKioL1ngchyhapB2AANpt14_5T4330.png" target="_blank"></a>

umask指令:

  在建立了檔案和目錄後,會發現檔案的預設權限是644,而目錄預設權限是755,系統有個概念叫umask,運作這個umask指令能看到使用者的umask值,通過這個值就可以确定檔案和目錄的預設權限是什麼:

<a href="https://s3.51cto.com/wyfs02/M02/08/61/wKiom1ngdNSC53qCAAUG5EFFSrc694.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/08/61/wKiom1ngdNTAGrRhAAEf0w91OeU201.png" target="_blank"></a>

  更改umask值就可以更改檔案和目錄的預設權限,更改了umask值就能發現檔案和目錄的預設權限和之前不一樣了:

<a href="https://s2.51cto.com/wyfs02/M01/A7/17/wKioL1ngcnuw41-qAAER_8m7YO0288.png" target="_blank"></a>

<a href="https://s2.51cto.com/wyfs02/M01/08/61/wKiom1ngdTKA33pwAARcjR4Td0Y959.png" target="_blank"></a>

更改了umask值為0002後(一般看作002),檔案的預設權限變成了664,目錄預設權限變成了775。因為目錄是必須有權限的,不然無法進入、打開目錄,這其中是有規律可循的。

umask值為偶數的計算公式:

777 - umask值 = 目錄的預設權限

666 - umask值 = 檔案的預設權限

例如:

<a href="https://s4.51cto.com/wyfs02/M01/A7/17/wKioL1ngcnzhB3paAACbPtzD0X4719.png" target="_blank"></a>

umask值為奇數的計算公式:

umask值為奇數的情況要一位一位的減,- 的值為0,不能使用偶數的計算方式計算:

<a href="https://s4.51cto.com/wyfs02/M01/08/61/wKiom1ngdTOwH5vqAAHwdU8r238354.png" target="_blank"></a>

隐藏權限lsattr/chattr:

  chattr是設定隐藏權限的指令,例如把123.txt修改一下:

<a href="https://s5.51cto.com/wyfs02/M02/08/61/wKiom1ngdTSxnQ5TAADNvllZ_O4173.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/A7/17/wKioL1ngcn2DcRLTAAD3zKKk0yg392.png" target="_blank"></a>

  修改完後編輯一下這個檔案,會發現有個紅字提示說你正在更改隻讀檔案。即便是編寫了内容想要儲存退出或者強制儲存退出也是不能成功的:

<a href="https://s5.51cto.com/wyfs02/M00/08/61/wKiom1ngdTbT-r6WAAT5_K4N6hI890.png" target="_blank"></a>

這時候檢視這個檔案的詳情也會發現沒有寫入權限:

<a href="https://s5.51cto.com/wyfs02/M02/A7/17/wKioL1ngcoDTnSH2AAE1GQz-70o543.png" target="_blank"></a>

lsattr指令就是用來檢視這種檔案的權限的:

<a href="https://s2.51cto.com/wyfs02/M00/A7/17/wKioL1ngcoGieAgEAADdJl6XN7Y106.png" target="_blank"></a>

這個i權限不僅不能編輯這個檔案,而且删除和重命名還有建立也不可以。

減掉i權限要使用chattr -i指令:

<a href="https://s2.51cto.com/wyfs02/M02/08/61/wKiom1ngdTfwGD_AAAEiIUFVgLo146.png" target="_blank"></a>

  除了i權限之外還有一個常用的權限是a權限,這個權限隻能追加和建立,不能删除、重命名還有不能更改檔案内容:

<a href="https://s5.51cto.com/wyfs02/M01/08/61/wKiom1ngdTjz2OUpAAETZ8ohMyQ584.png" target="_blank"></a>

同樣的-a可以減掉a權限:

<a href="https://s5.51cto.com/wyfs02/M00/A7/17/wKioL1ngcoLQOB1aAAEZme54NXw271.png" target="_blank"></a>

lsattr隻能檢視目标目錄的子目錄,要加-d選項才能檢視目标目錄本身:

<a href="https://s5.51cto.com/wyfs02/M00/08/61/wKiom1ngdTmzvK14AAHqf8cVNTU595.png" target="_blank"></a>

  使用chattr 指令給一個目錄加上i權限的話,那麼此目錄下的子目錄和檔案都不能删除和重命名,當然建立檔案或目錄也不可以,但是裡面的檔案内容可以編輯、追加:

<a href="https://s2.51cto.com/wyfs02/M01/A7/17/wKioL1ngcoSxUSa5AAId7uAgh6A427.png" target="_blank"></a>

使用chattr 指令給一個目錄加上a權限的話,此目錄下的子目錄和檔案都不能删除和重命名,但是建立目錄和檔案是可以的,同樣的裡面的檔案内容可以編輯、追加:

<a href="https://s2.51cto.com/wyfs02/M01/A7/17/wKioL1ngcoXheQmaAAOS0EZ5-ZI283.png" target="_blank"></a>

lsattr加-R選項可以檢視到所有的目錄下的多層子目錄:

<a href="https://s1.51cto.com/wyfs02/M02/08/61/wKiom1ngdT6gzMfDAAUcZcyt-Ec332.png" target="_blank"></a>

lsattr加-a可以看到隐藏檔案:

<a href="https://s4.51cto.com/wyfs02/M02/A7/17/wKioL1ngcojxFfNuAAHnrBGYccw553.png" target="_blank"></a>

本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/1972123,如需轉載請自行聯系原作者

繼續閱讀