本文出自 http://blog.csdn.net/shuangde800
---------------------------------------------------------------------------------
权限
- 权限是操作系统用来限制对资源访问的机制,权限一般分为读,写,执行。系统中每个文件都拥有特定的权限,所属用户及所属组,通过这样的机制来限制哪些用户,哪些组可以对特定文件进行什么样的操作。
- 每个进程都是以某个用户的身份运行的,所以进程的权限与该用户的权限一样,用户的权限越大,该进程拥有的权限就越大。
文件的权限
权限 | 对文件的影响 | 对目录的影响 |
r(读取) | 可读取文件内容 | 可列出目录内容 |
w(写入) | 可修改文件内容 | 可在目录中创建和删除文件 |
x(执行) | 可作为命令执行 | 可访问目录内容 |
目录必须有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