Linux入门基础 #7:Linux权限机制
本文出自 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
drwxrwxr-xd: 文件类型, d表示是目录,-表示是普通文件rwx: U权限rwx: G权限r-x: Other权限, -代表没有该权限
-rw-rw-r-- 1 shuangde shuangde 26 8月 24 22:50 input.txt
修改文件所属用户,组- 命令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 = 6rwx = 4 + 2 + 1 = 4 | 2 | 1 = 7r-x = 4 + 1 = 4 | 1 = 5
所以,使用数字表示ugo权限使用如下方式表示:chmod 660 test.cpp 等价于 rw-rw----chmod 775 test.cpp 等价于 rwxrwxr-x
- 命令chgrp(change group)用来改变文件的所属组:$ chgrp lab104 test.cpp 把test.cpp文件的所属组修改为lab104-R 参数递归地修改目录下的所有文件的所属组
- 命令chown(change own)用以改变文件所属用户$ chown shuangde test.cpp 把test.cpp文件的用户修改为shuangde-R 参数递归地修改目录下的所有文件的所属用户
- 每个进程都是以某个用户的身份运行的,所以进程的权限与该用户的权限一样,用户的权限越大,该进程拥有的权限就越大。