Linux 查看与修改文件权限
由于工作需要,时常会使用到 linux 系统,最近在执行工作任务的时候,突然发现有一个新增的可执行文件无法执行,查资料后才知道是因为这个文件没有权限。
文件类型简单说明
在查资料时,对 linux 的文件类型有了些许了解
- 蓝色表示目录
- 绿色表示可执行文件
- 红色表示压缩文件
- 浅蓝色表示链接文件
- 灰色表示其它文件
- 红色闪烁表示链接的文件有问题了
- 黄色是设备文件,包括 block, char, fifo
Linux 用户组和权限
用户组和权限
对于 Linux 系统中的文件来说,有三种身份和四种权限。
三种身份分别为:
- u:文件的拥有者
- g:文件所属的群组
- o:其他用户
而对于每个身份,又有四种权限,分别为:
- r:读取文件的权限(read)
- w:写入文件的权限(write)
- x:执行的权限(execute)
- s:特殊权限
在系统中,文件的属性由 10 个字符来表示,第一个字符表示文件的类型,其余 9 个字符分为三组,分别表示文件的拥有者、群组以及其他人对该文件的访问权限,每组依次表示读取、写入、和执行的权限,如果没有该权限,则以-(一个减号)显示。
查看文件属性
通过ls
命令,我们可以获知文件的各种信息,其中就包括了文件的权限信息。
drwxr-xr-x 7 root root 4096 Sep 25 19:10 www
其中drwxr-xr-x
部分就是文件的权限属性了,通过这 10 个字符可以确定不同用户能对文件干什么。
文件类型 文件拥有者的权限 群组的权限 其他人的权限
d rwx r-x r-x
- 第一个字符代表文件(-)、目录(d),链接(l)
- 其余字符每 3 个一组(rwx),读(r)、写(w)、执行(x)
- 第一组 rwx:文件所有者的权限是读、写和执行
- 第二组 r-x:与文件所有者同一组的用户的权限是读、执行但不能写
- 第三组 r-x:不与文件所有者同组的其他用户的权限也是读、执行但不能写
文件权限的数字表示
除了以上的表示文件权限的方式外,也可以通过数字形式表示权限。
- 读取权限(r):4
- 写入权限(w):2
- 执行权限(x):1
根据文件在不同用户组的和表示数字形式的权限。
例如上面的 www 文件,他的权限就是:755
4+2+1=7(rwx)4+0+1=5(r-x)4+0+1=5(r-x)
权限修改方法
可以通过 chmod 命令进行文件权限的修改,增加或减少用户对文件的权限。
指令名称 : chmod
使用权限 : 所有使用者
使用方式 : chmod [-cfvR][--help] [—version] mode file…
说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。
参数 :
mode : 权限设定字串,格式如下 : [ugoa…][+-=][rwxx]…][,…],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
范例-利用数字形式改变文件权限
chmod 新的权限 文件列表
以上文 www 文件为例,通过以下命令,可以为 www 文件附加 777 权限。
chmod 777 www //等同于www拥有了drwxrwxrwx权限。
范例-利用字符形式改变文件权限
这个方式是直接利用用户组和权限字符来进行文件权限修改的,基本操作规则受下表约束:
chmod | u g o a |
+ - = |
r w x |
文件或目录 |
通过+
符号可以增加权限,-
符号可以减少权限,=
符号可以直接赋予权限。就像下面这样:
chmod +x www //为www文件附加所有用户组的执行权限。
数字形式可以一次改变文件的所有三种身份的四种权限,而字符形式则更为灵活,可以给某个身份的某个权限单独进行设置,例如上面的指令就是给三种身份都赋予执行的权限,你也可以分开单独设置:
chmod u+x www //只给拥有者加上可执行权限
chmod g+x www //只给群组身份加上可执行权限
chmod o+x www //只给其他人身份加上可执行权限
以上三条指令综合在一起等价于上面的那一条指令,都是给所有身份都开启可执行权限的功能,也可以像下面这样来操作:
chmod a+x www
a 表示 all,代表所有的 3 种身份。
通过+
符号可以增加权限,反之-
符号可以减少权限。
chmod -x www //为www文件去除所有用户组的执行权限。
最后来一个使用=
符号的操作范例
chmod u=rwx,g=rwx,o=rwx www //为www文件附加drwxrwxrwx(777)权限。
参考文章:
Linux 下用户组、文件权限详解
Linux 中的文件权限详解
Linux 新手入门:通过 chmod 改变文件权限
chmod 权限 命令详细用法