Linux系統下經常遇到檔案或者檔案夾的權限問題,或者是因為檔案夾所屬的使用者問題而沒有通路的權限。根據我自己遇到的情況,對這類問題做一個小結。
在指令行使用指令“ll”或者“ls -a”,可以檢視檔案或者檔案的權限:
1 -rw-r--r--. 1 root root 6 Nov 9 16:42 a.txt
其中“-rw-r--r--”表示權限,一共有十個字元。
第一個字元,如果是“-”則表示是檔案,如果是“d”則表示是目錄(directory)。
後面9個字元每3個字元又作為一個組,則有3組資訊(“rw-”、“r--”、“r--”),分别表示所屬使用者本身具有的權限、所屬使用者的使用者組其他成員的權限、其他使用者的權限。
每一組資訊如“rw-”,每一個字元都有它自己的特定含義且先後位置是固定的,其中r是讀權限、w是寫權限、x是可執行權限、-沒有對應字元的權限。Linux裡面對這些字元設定對應的數值,r是4,w是2,x是1,-是0。上面的“rw-”則是6(=4+2+0),是以最開始a.txt的權限是644,屬于root使用者組的root使用者。
1.修改權限chmod
1.1改檔案的權限
我想修改檔案a.txt的權限為755,則為:
1 [root@master my]# ll
2 -rw-r--r--. 1 root root 6 Nov 9 16:42 a.txt #改之前權限是644
3 [root@master my]# chmod 755 a.txt
4 [root@master my]# ll
5 -rwxr-xr-x. 1 root root 6 Nov 9 16:42 a.txt #改後權限是755
1.2改檔案夾的權限
改之前:
1 [root@master test1]# ll
2 drw-r--r--. 2 root root 4096 Nov 9 16:42 my #改之前檔案夾my的權限是644
3 [root@master test1]# ll my/
4 -rwxr-xr-x. 1 root root 6 Nov 9 16:42 a.txt #改之前檔案夾my的裡面的檔案權限是755
1.2.1隻改變檔案夾本身權限,不改動子檔案(夾)
執行指令修改my檔案夾權限為600:
1 [root@master test1]# chmod 600 my/ #修改指令
2 [root@master test1]# ll
3 drw-------. 2 root root 4096 Nov 9 16:42 my #改my檔案夾之後權限是600
4 [root@master test1]# ll my/
5 -rwxr-xr-x. 1 root root 6 Nov 9 16:42 a.txt #改my檔案夾之後裡面的檔案權限還是755,沒有變化
1.2.2改變檔案夾及子目錄下所有檔案(夾)權限
執行1.2.1步驟之後,my檔案夾和裡面的檔案權限都是不同的。現在遞歸修改,都改為統一的權限777:
1 [root@master test1]# chmod -R 777 my/ #修改指令,注意中間是大寫的R,不是小寫
2 [root@master test1]# ll
3 drwxrwxrwx. 2 root root 4096 Nov 9 16:42 my #修改後my檔案夾權限是777
4 [root@master test1]# ll my/
5 -rwxrwxrwx. 1 root root 6 Nov 9 16:42 a.txt #修改後裡面的檔案變為了777
2.修改所屬使用者和使用者組chown
這個和修改檔案夾的權限是基本相同的,隻不過是把chmod指令換成了chown。
2.1修改檔案所屬使用者和使用者組
修改a.txt檔案所屬使用者(jay)和使用者組(fefjay):
1 chown jay:fefjay a.txt #修改檔案所屬使用者為jay,所屬使用者組為fefjay
2.2修改檔案夾所屬使用者和使用者組
1.2.1隻改檔案夾本身所屬使用者和使用者組,不改子檔案(夾)
僅修改檔案夾my本身所屬使用者(jay)和使用者組(fefjay):
1 chown jay:fefjay my #修改檔案所屬使用者為jay,所屬使用者組為fefjay
2.2.2改變檔案夾及所有子檔案(夾)所屬使用者和使用者組
遞歸修改檔案夾my及包含的所有子檔案(夾)的所屬使用者(jay)和使用者組(fefjay):
1 chown -R jay:fefjay my #修改檔案所屬使用者為jay,所屬使用者組為fefjay
3.總結
修改單個檔案(夾)就用指令:
1 chown或chmod “權限”或“名:組” 檔案(夾)名稱
修改檔案夾及子檔案夾所有檔案就用指令:
1 chown或chmod -R “權限”或“名:組” 檔案夾名稱