Linux之文件和目录的权限

  Linux是一个多用户的操作系统,正确的设置文件权限非常重要。

1.1 权限设置针对的用户

  Linux为三种人准备了权限——文件所有者,文件属组用户和其他人。其中root用户不应该算在其他人中,因为root用户具有控制一台计算机的完整权限。文件所有者一般是文件的创建者,但也不一定,可以中途改变一个文件的属主,但是必须由root用户来实施。

  可以将文件交给一个组,这个组就是文件的属组,文件属组中的用户成员享有对该文件的某些特殊权限,一帮情况下其他人享有最低的权限。

 

1.2 需要设置的权限

  文件相关的权限一般由三种:读取(r) 写入(w)以及执行(x);对于文件而言读取权限意味着可以打开并查看文件的内容,写入权限意味着对文件的修改,而文件的可删除和重命名是由父目录的权限来控制的。

要让一个文件可执行,必须设置其可执行权限,可执行文件有两类,一是可以直接由CPU运行的二进制文件;另一类是Shell脚本程序。

  对于目录而言,所谓的执行权限实际控制着用户能否进入目录,而读取权限控制目录中的内容能够列出,写入权限控制着目录中的创建,删除和重命名文件。

 

1.3 查看文件和目录的属性

  使用下面的命令查看一个文件或者目录的详细信息:

$ ls -l /bin/login

  查看一个目录的信息使用-ld命令:

$ ls -ld ./etc/

 

1.4 改变文件所有权:chown和chgrp

  chown命令用于改变文件的所有权。 chown命令的基本语法如下:

chown [OPTION]...[OWNER][:[GROUP]] FILE...

 

上面的命令将FILE的属主更改为OWNER,属组更改为GROUP,举例如下:

$ sudo chown lewis:root days

 

将days文件的属主更改为lewis,而把其属组更改为root组。如果只要更改文件的属组,可以省略”:GROUP“,如果只改变属组那么可以省略前面的”OWNER“。这样一个一个的更改文件的所有权很是麻烦,可能一个目录下有多个文件和子目录,chown命令提供了-R命令,来改变一个目录下面的文件和子目录的所有权,

$ sudo chown -R  :group  iso/

将iso目录下的所有子目录和文件属组改为group。

  Linux也提供了单独的chgrp命令来更改文件的属组,如:

$ sudo chgrp group days

 

同样chgrp可以使用-R命令对一个目录进行所有权的设置。

 

1.5 改变文件的权限:chmod

  chmode用于改变文件的权限,使用”用户组+/-权限“的方式,来表示给相应的用户增加和减少权限,具体来说用户组包括:  

  u:文件属主

  g:文件属组

  o:其他人

  a:所有人

而权限包括

  r:读取

  w:写入

  x: 执行

以下面的命令为例:

$ sudo chmod u+x days

 

上述命令使得文件属主拥有了对文件days的执行权限。同样的也可以减少某个用户的权限,如将全部用户的执行权限去除:

$ sudo chmod a-x days

 

还可以直接通过”用户组=权限“的方式统一设置某个用户组的权限:

$sudo chmod ug=rw,o=r days

 

该命令将文件属主和文件属组都设置为拥有读写权限,其他人的权限改为只读权限。最后一种常用规则是”用户组1=用户组2“的方式,将用户组1的权限设置的和用户组2一致:

$sudo chmod o=u days

 

1.6 文件权限的八进制表示

  上述的chmod助记符虽然意义明确,但是有时候显得太罗嗦了,系统管理员更喜欢用八进制语法来修改权限,其实八进制语法也是很简单的,权限一共有三种,那么就可以使用三位二进制来表示,那么rwx为三位,每一位置1表示拥有该权限,比如将文件设置为只写对应位为010,其八进制值为2,以此类推,我们也知道用户组包括文件属主(u),文件属组(g)以及其他人(o)三种,那么可以各自使用三位一共为9位来设置权限:

$ sudo chmod 711 prog

 

分析上面的命令,7对应u权限,1对应g权限,1对应o权限,所以设置后的结果为,u具有rwx权限,g具有x权限,o也具有x权限。

 

注意:只有文件的属主和root用户才有权修改文件的权限

 

posted on 2017-08-29 09:46  CodeBeauty  阅读(453)  评论(0编辑  收藏  举报

导航