Linux-(11)权限


权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读、写和执行。操作系统中每个文件都拥有特定的权限、所属用户和所属组。通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。

Linux中的每个进程都是以某个用户的身份运行,所以进程的权限与该用户的权限是一样的。

在Linux中文件的普通权限有三中,分别是:r(读)、w(写)、x(执行)

r(读):可以读取文件的内容;可以列出目录的内容

w(写):可以修改文件的内容;可以在目录中创建、删除文件

x(执行):文件可以执行;可以访问目录中的内容

这里有一点需要注意,目录必须拥有x(执行)权限,否则无法进入目录。

看下面这个文件夹,没有x权限

 

  drw-r--r--  3 lhc  lhc      4096  4月 26 17:11 001/
使用cd命令,无法进入

 

 

  lhc@lhc-virtual-machine:~/Documents$ cd 001
  -su: cd: 001: Permission denied
  lhc@lhc-virtual-machine:~/Documents$ 

 

权限的控制:

Linux权限基于UGO模型进行控制,U(User)、G(Group)、O(Other),权限3个一组(rwx),分别对UGO进行设置。文件的所属用户对应U权限,所属组对应G权限,其他用户和组对应O权限

通过ls -l查看目录下的文件,一般是这样的:

 

  drwxr-xr-x  3 lhc  lhc      4096  4月 26 17:11 001/
第一个字母d:表示文件类型 (d:文件夹、-:普通文件、l:链接)

 

接下来的rwxr-xr-x表示的就是UGO权限,前三个字母rwx代表U的权限,中间三个r-x代表G的权限,最后的r-x代表O的权限,“-”表示没有某一种权限。

针对这个就是所有者拥有读写执行权限,所属组拥有读和执行权限,其他用户拥有读和执行权限

权限后面的数字表示链接数,其后是所属用户,所属组,再后面是大小,时间,文件名

合起来就是:

类型UGO权限 链接数 用户 组 大小 时间 文件名

修改文件所属用户、组:

修改文件所属用户:

chown <用户> <文件>

参数:

-R 递归修改目录下的所有文件

修改文件所属组:

chgrp <组> <文件>

 

参数:

-R 递归修改目录下的所有文件

修改文件权限:

chmod <模式> <文件>

模式的表示方法如下:

u,g,o分别代表用户,组和其他,a可以代表所有

+,-代表加入或删除对应权限

r,w,x代表三种权限

例子:

chmod u+w file 给文件的所属用户增加写权限

chmod g-x file 去除文件的所属组的执行权限

chmod go+r file 给文件的所属组和其他用户增加读权限

chmod a-x file 去除所有用户的执行权限

chmod命令也支持以数字方式修改权限,三种权限分别由3个数字表示

r=4 (2的2次方)

w=2 (2的一次方)

x=1 (2的0次方)

使用数字表示权限权限的话,每一类用户的权限分别对应数字之和,即:

rw=4+2=6

rwx=4+2+1=7

rx=4+1=5

例如:

chmod 660 file 这个执行完后,文件的权限就变成rw-rw----

默认权限:

在Linux中使用umask来确定新建文件,目录的默认权限.每一个终端都拥有一个umask属性

umask通常是使用数字权限来表示的,通常,普通用户的umask是002,而root用户的默认权限是022.

文件的默认权限就是666-umask,目录的默认权限是777-umask

所以,对于普通用户,新建文件的权限是666-002=664,新建目录的权限是777-002=775

umask值的查看和修改都是通过umask命令

直接输入umask命令是查看, umask <数字>是修改.

Linux的普通权限基本就是这么多内容了,下次再写Linux的特殊权限

相关内容