Linux中的chmod命令与文件权限

在面试题中经常遇见chmod 777 a.txt 之类的命令。

一、chmod命令

指令名称 : chmod
使用权限 : 所有使用者
使用方式 : chmod [-cfvR][–help][–version] mode file…

下面分别介绍下各个参数的意义

1、mode

权限设定字串,格式如下 : [ugoa…][[+-=][rwxX]…][,…]

其中:

  • +:表示增加权限
  • -:表示取消权限
  • =:表示唯一设定权限。

用户组

在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其它组的概念

  • u:表示该档案的拥有者(user)
  • g:表示与该档案的拥有者属于同一个群体者(group)
  • o:表示其他以外的人(other)
  • a:表示这三者皆是(all)

访问权限

  • r:表示可读取
  • w:表示可写入
  • x:表示可执行
  • X:表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

2、其他参数

  • -c : 若该档案权限确实已经更改,才显示其更改动作
  • -f : 若该档案权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
  • –help : 显示辅助说明
  • version : 显示版本

3、举例

将档案 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

将档案 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt

将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

将 ex1.py 设定为只有该档案拥有者可以执行 :

chmod u+x ex1.py

将目前目录下的所有档案与子目录皆设为任何人可读取 :

chmod -R a+r *

4、数字表示

chmod也可以用数字来表示权限如 chmod 777 file

语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。

例如:

chmod a=rwx filechmod 777 file 效果相同
chmod ug=rwx,o=x filechmod 771 file 效果相同

chmod 755和chmod 4755的区别

chmod 4755 filename可以使此程序具有root权限

chmod 755 设置用户的权限为:

1.文件所有者可读可写可执行
2.与文件所有者同属一个用户组的其他用户可读可执行
3.其它用户组可读可执行

chmod 4755与chmod 755 的区别在于开头多了一位,这个4表示其他用户执行文件时,具有与所有者相当的权限。

例如:root用户创建了一个上网认证程序netlogin,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。

但是netlogin执行时可能需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。

这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。

二、查看权限

1、ls-l

查看权限的命令是la -l

显示的格式如下:

-rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc

前面的10个字符确定了它的权限

  • 第一个字符代表文件类型:
    • -:代表文件
    • d:代表目录
    • |:代表链接
  • 后面9个字符,3个位一组:表示不同用户类型的权限:
    • 第一组rwx:文件所有者的权限是读、写和执行
    • 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行
    • 第三组r–:不与文件所有者同组的其他用户的权限是读不能写和执行

后面的代表了其他的信息

  • 1 表示连接的文件数
  • root 表示用户
  • root表示用户所在的组
  • 1213 表示文件大小(字节)
  • Feb 2 09:39 表示最后修改日期
  • abc 表示文件名

2、目录权限

关于目录权限,r(浏览目录)和x(进入目录)是有区别的,尤其是和cd命令一起

  • r允许你列出目录内的文件
  • x只是允许你进入目录.
  • 如果只有x权限,没有r权限,可以执行cd命令进入目录,但是在目录内无法执行ls命令
  • 如果只有r权限,没有x权限,那么根本无法使用cd命令进入目录

三、参考地址

http://www.cnblogs.com/chengJAVA/p/4319420.html

http://www.cnblogs.com/123-/p/4189072.html

http://blog.csdn.net/water_cow/article/details/7174881

http://www.linuxidc.com/Linux/2014-10/107874.htm