linux文件权限详解

Linux 小智 1280℃ 0评论

测试环境: centos7.0 64位

1. linux的文件属性
只要你使用linux命令行的方式来操作系统,那么肯定就用过ls命令,比如我们执行

[root@VM_112_250_centos ~]# ls -al
total 152
dr-xr-x---.   6 root root  4096 Dec  1 21:44 .
drwxr-xr-x.  19 root root  4096 Dec  2 23:04 ..
-rw-------    1 root root 65884 Dec  1 21:57 .bash_history
-rw-r--r--.   1 root root    18 Dec 29  2013 .bash_logout
-rw-r--r--.   1 root root   176 Dec 29  2013 .bash_profile
-rw-r--r--.   1 root root   176 Dec 29  2013 .bashrc
-rw-r--r--.   1 root root   100 Dec 29  2013 .cshrc
-rw-------    1 root root  9970 Nov 25 10:20 .mysql_history
-rw-------    1 root root    78 Nov 17 13:07 .mysql_secret
-rw-------    1 root root    16 Nov 22 12:52 .node_repl_history
drwxr-xr-x  171 root root  4096 Nov 25 12:40 .npm
-rw-------    1 root root    42 Nov 24 12:52 .npmrc
drwxr-----    3 root root  4096 Nov 21 13:57 .pki
drwxr-xr-x    4 root root  4096 Nov 25 12:40 .pm2
drwxr-x--x    2 root root  4096 Sep  9 15:01 .ssh
-rw-r--r--.   1 root root   129 Dec 29  2013 .tcshrc
-rw-------    1 root root  4892 Dec  1 21:44 .viminfo
-rw-------.   1 root root  2229 Jan 20  2015 anaconda-ks.cfg

ls是 “list” 的意思,主要用来显示文件的文件名与相关属性。参数 “-al” 则表示显示出文件所有的权限与属性信息。
我们以此行为例
drwxr-xr-x 4 root root 4096 Nov 25 12:40 .pm2
一共有7列,每一列的含义为

drwxr-xr-x  --> 文件权限
4 --> 连接数,表示有多少文件名连接到此节点(i-node)
root --> 文件所有者
root --> 文件所属用户组
4096 --> 文件大小,默认单位为B
Nov 25 12:40 --> 文件最后修改时间
.pm2 --> 文件名
对第一列 drwxr-xr-x  --> 文件权限 的详细说明
这一列一共有10个字符,代表这个文件的类型(第1个字符)和权限(后9个字符)
第一个字符的可能值为
[d]  --> 表示是一个目录 
[-] --> 表示是一个文件
[|] --> 表示为连接文件(linkfile)
[b] --> 表示设备文件里面的可供存储的接口设备
[c] --> 表示设备文件里面的串行端口设备,例如键盘,鼠标(一次性读取设备)
接下来的9个字符以3个为一组,且均以 “rwx” 来进行组合。其中 r 代表可读 read , w 代表可写 write , x代表可执行 execute . 需要注意的是,每组的3个字符的顺序是不为变的,如果没有该权限, 就会使用减号 [-] 来代替
第一组为 文件所有者的权限
第二组为 同用户组的权限
第三组为 其他非本用户组的权限

2. 改变文件的属性与权限

chgrp: 改变文件所属用户组
chown: 改变文件所有者
chmod: 改变文件的权限

改变所属用户组:chgrp
这个命令是change group的简称,不过,请记住,要被改变的组名必须要在 /etc/group 文件内存在才行,否则就会显示错误。
chgrp [-R] dirname/filename ...
选项与参数:
-R: 进行递归(recursive)的持续更改,也即连同子目录下的所有文件、目录都更改成这个用户组

改变文件所有者:chown
change owner的简称
chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:组名 文件或目录
参数:
-R : 进行递归(recursive)的持续更改,即连同子目录下的所有文件都更改
举例:

//创建一个文件夹
[root@VM_112_250_centos opt]# mkdir test
// 进入文件夹后,创建一个文件 .test
[root@VM_112_250_centos opt]# cd test/
[root@VM_112_250_centos test]# touch .test
[root@VM_112_250_centos test]# ls -al
total 8
drwxr-xr-x  2 root root 4096 Dec  3 00:19 .
drwxr-xr-x. 4 root root 4096 Dec  3 00:19 ..
-rw-r--r--  1 root root    0 Dec  3 00:19 .test
// 改变 .test
[root@VM_112_250_centos test]# chown -R mysql:mysql .test
[root@VM_112_250_centos test]# ls -al
total 8
drwxr-xr-x  2 root  root  4096 Dec  3 00:19 .
drwxr-xr-x. 4 root  root  4096 Dec  3 00:19 ..
-rw-r--r--  1 mysql mysql    0 Dec  3 00:19 .test

改变权限:chmod
权限的设置方法有两种,分别可以使用数字或者符号来进行权限的更改。
第一种:数字型改变文件权限
linux文件的基本权限有9个,分别是owner, group, others三种身份分别对应的read, write, execute权限, 字符表示就是 “-rwxrwxrwx” ,别去三个为一组,在这里我们可以采用数字(分数)代表各个权限

r:4
w:2
x:1
 每种(owner,group,others)身份的三个权限是累加的,比如当权限为[-rwxrwx---]时,对应分数则是
owner=rwx=4+2+1=7
group=rwx=4+2+1=7
others=---=0+0+0=0

所以当我们为一个文件设置[-rwxrwx—]这样的权限时,其对应的权限数字就是770
更改权限的命令chmod的语法是
chmod [-R] xyz 文件或目录
xyz:权限数字
-R : 进行递归(recursive)的持续更改,即连同子目录下的所有文件都更改
第二种:符号类型改变文件权限
上面已经提到权限就是9个,对应三种(user/owner,group,others)身份,所以我们可以通过u, g, o来代表3种身份的权限,用 a 代表所有(all)的身份。之外,加入,删除,设置用 + ,- ,=来表示
举例

[root@VM_112_250_centos test]# ls -al .test
-rw-r--r-- 1 mysql mysql 0 Dec  3 00:19 .test
//设置权限
[root@VM_112_250_centos test]# chmod u=rwx,go=rx .test
[root@VM_112_250_centos test]# ls -al .test
-rwxr-xr-x 1 mysql mysql 0 Dec  3 00:19 .test
//为所有身份添加write权限
[root@VM_112_250_centos test]# chmod a+w .test
[root@VM_112_250_centos test]# ls -al .test
-rwxrwxrwx 1 mysql mysql 0 Dec  3 00:19 .test
//去除所有execute权限
[root@VM_112_250_centos test]# chmod a-x .test
[root@VM_112_250_centos test]# ls -al .test
-rw-rw-rw- 1 mysql mysql 0 Dec  3 00:19 .test

3. 目录与文件的权限意义
权限对文件的重要性
r (read): 可读取此文件的实际内容,如读取文本文件的文字内容等
w(write): 可以编辑,新增或者修改该文件的内容(但能不能删除这个文件与这个用户有没有这个文件的write权限无关)
x(execute): 该文件具有可以被系统执行的权限,在windows中一个文件是否具有执行的能力,是根据 “拓展名” 来判断的,例如.exe, .bat, .com等,但是在linux下面,我们的文件是否能被执行则是由是否具有 “x” 这个权限来决定的,而与文件名没有绝对关系。
权限对目录的重要性
r(read contents in directory) : 表示具有读取目录结构列表的权限,也就是可以利用ls命令查询该目录下的文件名数据
w(modify contents of directory): 表示具有更改该目录结构列表的权限,就是:
新建新的文件与目录
删除已经存在的文件与目录(跟该文件有什么权限无关)
将已存在的文件或目录重命名
转移该目录内的文件,目录位置
x(access directory): 代表用户能否进入该目录

本文固定链接:心知博客 » linux文件权限详解
本站内容除特别标注外均为原创,欢迎转载,但请保留出处!

喜欢 (2)
发表我的评论
取消评论
表情

请填写您的昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址