在面试题中经常遇见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 file
和chmod 777 file
效果相同chmod ug=rwx,o=x file
和chmod 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