權限
權限是操作系統用來限制對資源訪問的機制,權限一般分為讀,寫,執行。系統中每個文件都擁有特定的權限,所屬用戶及所屬組,通過這樣的機制來限制哪些用戶,哪些組可以對特定文件進行什麼樣的操作。
每個進程都是以某個用戶的身份運行的,所以進程的權限與該用戶的權限一樣,用戶的權限越大,該進程擁有的權限就越大。
文件的權限
目錄必須有x權限,否則無法查看其內容。x也叫浏覽權限
UGO
Linux權限基於UGO模型進行控制:
U代表User,G代表Group,O代表Other
每一個文件的權限基於UGO進行設置
權限三個一組(rwx),對應UGO分別設置
每一個文件擁有一個所屬用戶和所屬組,對應UG,不屬於該文件所屬用戶或所屬組的使用O權限
命令ls -l可以查看當前目錄下的文件信息
drwxrwxr-x 2 shuangde shuangde 4096 8月 25 00:33 hdu
-rw-rw-r-- 1 shuangde shuangde 26 8月 24 22:50 input.txt
drwxrwxr-x
d: 文件類型, d表示是目錄,-表示是普通文件
rwx: U權限
rwx: G權限
r-x: Other權限, -代表沒有該權限
修改文件所屬用戶,組
命令chown(change own)用以改變文件所屬用戶
$ chown shuangde test.cpp 把test.cpp文件的用戶修改為shuangde
-R 參數遞歸地修改目錄下的所有文件的所屬用戶
命令chgrp(change group)用來改變文件的所屬組:
$ chgrp lab104 test.cpp 把test.cpp文件的所屬組修改為lab104
-R 參數遞歸地修改目錄下的所有文件的所屬組
修改權限
命令chmod用以修改文件的權限
$ chmod 模式 文件
模式為如下格式:
u,g,o分別代表用戶,組和其他
a可以代指ugo
+, -代表加入或刪除對應的權限
r, w, x代表三種權限
示例:
$ chmod u+rw test.cpp 把test.cpp的用戶權限增加rw
$ chmod g-x test.cpp 把test.cpp的組權限刪除x
$ chmod go+r test.cpp 把test.cpp的組和其他權限增加r
$ chmod a-x test 把test.cpp的ugo權限刪除x
命令chmod也支持以數字(二進制)方式修改權限, 3個權限分別由三個數字表示:
-r = 4 (2^2)
-w = 2 (2^1)
-x = 1 (2^0)
實際上就是按照二進制: 111, 每位代表rwx相同順序的位置,如果該位為0,則表示沒有該權限。
沒有權限 = 0
使用數字表示權限時,每組分別為對應數字之和:
rw = 4 + 2 = 4 | 2 = 6
rwx = 4 + 2 + 1 = 4 | 2 | 1 = 7
r-x = 4 + 1 = 4 | 1 = 5
所以,使用數字表示ugo權限使用如下方式表示:
chmod 660 test.cpp 等價於 rw-rw----
chmod 775 test.cpp 等價於 rwxrwxr-x