Bash編程018——權(quán)限管理
18.1權(quán)限介紹
Linux是一個(gè)支持多用戶的系統(tǒng)今缚,為了區(qū)分管理不同用戶的文件,Linux設(shè)置了不同的訪問權(quán)限區(qū)別不同的用戶。對一個(gè)文件而言若锁,將訪問它的用戶分為三類:文件擁有者,擁有者同組的成員斧吐,其他組的成員又固。
cd ~
ls -l
# 輸出如下:
總用量 64
drwxrwxr-x 2 ruo ruo 4096 1月 6 19:50 bin
drwxrwxr-x 4 ruo ruo 4096 1月 4 17:46 Codes
drwxr-xr-x 3 ruo ruo 4096 1月 9 16:32 Desktop
drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 Documents
drwxr-xr-x 4 ruo ruo 4096 12月 21 23:14 Downloads
-rw-rw-r-- 1 ruo ruo 151 12月 27 09:29 fault.c
drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 Music
drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 Pictures
-rw-rw-r-- 1 ruo ruo 9223 1月 4 18:07 ps.txt
drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 Public
drwxr-xr-x 3 ruo ruo 4096 12月 22 21:58 snap
drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 Templates
drwxrwxr-x 2 ruo ruo 4096 1月 6 19:59 Test
drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 Videos
如上所示,之前介紹過長格式中第一個(gè)字符表示文件的類型:d表示文件夾煤率、-表示文件仰冠、l表示鏈接文件等。那么后面9個(gè)字母即是針對上述三大類用戶的訪問權(quán)限蝶糯,訪問權(quán)限分為:可讀洋只、可寫、可執(zhí)行或可搜索(對目錄而言)(分別用字母r昼捍、w识虚、x表示,-表示)妒茬。9個(gè)字母舷礼,每三個(gè)一組,分別為讀郊闯、寫妻献、執(zhí)行的權(quán)限設(shè)置蛛株。
我們來新建一個(gè)文件演示具體權(quán)限。
cd ~
touch test.txt
ls -l test.txt
# 輸出如下:
-rw-rw-r-- 1 ruo ruo 0 1月 10 19:10 test.txt
可以看出其為普通文件育拨,文件持有者擁有讀寫權(quán)限谨履,文件持有者同組成員也具有讀寫權(quán)限,其他組的成員僅具有讀寫權(quán)限(注:root用戶對所有文件都具備權(quán)限)熬丧。
18.2 修改權(quán)限chmod
chmod是coreutils中的一個(gè)修改文件模式位設(shè)置的程序笋粟,可以幫助我們設(shè)置文件的權(quán)限。文件模式位可以采取符號表示或者八進(jìn)制數(shù)字表示析蝴,下面分別介紹它的用法害捕。
格式:chmod [ugoa] [+-=] [rwx] filename
其中ugoa表示不同類別的用戶,u代表文件持有者闷畸,g代表持有者同組的用戶尝盼,o代表其他用戶,a代表所有用戶。(這些用戶類別可以組合使用,若不給出指定用戶類別則默認(rèn)為a沸毁,但是這會受到掩碼設(shè)置的影響)
+-= 表示對文件進(jìn)行何種方式的設(shè)置,+表示添加權(quán)限赴精,-表示減少權(quán)限,=表示設(shè)置權(quán)限為給定的值绞幌。
rwx表示具體權(quán)限設(shè)置蕾哟。r表示讀取權(quán)限,w表示寫入權(quán)限莲蜘,x表示執(zhí)行或搜索的權(quán)限渐苏。
# 示例,修改之前創(chuàng)建test.txt文件的權(quán)限
chmod a= test.txt
ls -l test.txt
# 輸出如下:可以看出所有用戶的權(quán)限所有權(quán)限都被取消了(管理員除外)
---------- 1 ruo ruo 0 1月 10 19:10 test.txt
# 若此時(shí)試圖查看文件菇夸,會得到權(quán)限不夠的提示
cat test.txt
cat: test.txt: 權(quán)限不夠
chmod u=rwx test.txt
ls -l test.txt
# 輸出如下:
-rwx------ 1 ruo ruo 0 1月 10 19:10 test.txt
chmod ugo=rwx test.txt
ls -l test.txt
# 輸出如下:
-rwxrwxrwx 1 ruo ruo 0 1月 10 19:10 test.txt
另一種表示權(quán)限的方式是八進(jìn)制數(shù)字0~7琼富,其中4表示讀權(quán)限,2表示寫權(quán)限庄新,1表示執(zhí)行或搜索權(quán)限(不同權(quán)限值可以相加組合)鞠眉。0表示無權(quán)限,1表示執(zhí)行或搜索權(quán)限择诈,2表示寫權(quán)限械蹋,3(1+2)表示寫權(quán)限和執(zhí)行或搜索權(quán)限,4表示讀權(quán)限羞芍,5(4+1)表示執(zhí)行或搜索權(quán)限和讀權(quán)限哗戈,6表示讀寫權(quán)限,7表示所有權(quán)限荷科。這樣唯咬,就可以用三個(gè)八進(jìn)制數(shù)字對文件進(jìn)行權(quán)限管理纱注,不需要再使用ugoa。
chmod =000 test.txt
ls -l test.txt
# 輸出如下:可以看出所有用戶的權(quán)限所有權(quán)限都被取消了(管理員除外)
---------- 1 ruo ruo 0 1月 10 19:10 test.txt
chmod 222 test.txt
ls -l test.xt
# 輸出如下:
--w--w--w- 1 ruo ruo 0 1月 10 19:10 test.txt
chmod +111 test.txt
ls -l test.txt
# 輸出如下:
--wx-wx-wx 1 ruo ruo 0 1月 10 19:10 test.txt
更多用法請參考man chmod胆胰。