linux权限机制
权限
权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户以及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定文件进行什么样的操作。
每个进程都以某个用户的身份运行,所以进程的权限与用户的权限一样,用户的权限越大,该进程拥有的权限越大。
文件权限
linux中,每个文件拥有三种权限:
权限 对文件的影响 对目录的影响
r读取 可读取文件内容 可列出目录的内容
w写入 可修改文件内容 可在目录中创建或者删除文件
x执行 可作为命令执行 可访问目录内容
对于目录而言,必须拥有x执行权限,否则无法查看目录内容
UGO
linux权限基于UGO模型进行控制
U代表user,G代表group,O代表other
每一个文件的权限基于UGO进行设置
权限三个一组(rwx),对应UGO分别设置
每一个文件拥有一个所属用户和所属组,对应UG,不属于该文件所属用户或所属组的使用O权限。
命令ls -l可以查看当前目录下文件的详细信息,例如文件Code的详细信息:
drwxrwxr-x 3 liu liu 4096 5月 29 14:59 Code
第一部分:UGO
第二部分:链接数量(文件拥有几个链接)
第三部分:U:所属用户
第四部分:G:所属组
第五部分:大小
第六部分:时间(文件创建修改时间)
第七部分:文件名
UGO的权限就是第一部分,它的长度为十位,第一位是文件类型d是目录(directory),后九位分为三组,分别对应UGO权限。
U所属用户拥有的权限(rwx),G所属组拥有的权限(rwx),O其他拥有的权限(r-x)
修改文件所属用户、组
命令chown用以修改文件的所属用户:
chown username filename
-R参数递归的修改目录下的所有文件的所属用户
命令chgrp用以修改文件的所属组
chgrp groupname filename
-R参数递归的修改目录下的所有文件的所属组
修改权限
命令chmod用以修改文件的权限
chmod 模式 文件
模式如下格式:
u,g,o分别代表用户、组和其他
a可以代替ugo
+、-代表加入或删除对应权限
r、w、x代表三种权限
模式示例:
chmod u+rw filename
chmod g-x filename
chmod go+r filename
chmod a-x filename
例如使用vim test创建一个文件,然后ls -l test
-rw-rw-r-- 1 liu liu 14 6月 6 11:14 test
接着使用chmod +x test,再ls -l test
-rwxrwxr-x 1 liu liu 14 6月 6 11:14 test
我们可以看到test文件的所属用户,所属组以及其他拥有了执行它的权限。
修改权限
命令chmod也支持以数字方式修改权限,三个权限分别由三个数字表示:
-r = 4 (2^2)
-w = 2 (2^1)
-x = 1 (2^0)
使用数字表示权限时,每组权限分别对应数字之和:
rw = 4+2 = 6
rwx = 4+2+1 = 7
r-x = 4+1 = 5
所以使用数字表示UGO权限表示如下方式表示:
chmod 660 filename == rw-rw----
chmod 775 filename == rwxrwxr-x