测试环境: 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文件权限详解
本站内容除特别标注外均为原创,欢迎转载,但请保留出处!