多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 查看文件/目录权限 命令:`ls [-lhda] [filename/dirname]` 功能:列出指定目录下的所有文件及目录 权限:所有用户均可执行 ~~~ 选项: -l 长格式显示,显示详细信息 -h 人性化显示,文件大小会被按大小转成 KB、MB、GB 等 -a 显示全部,包括隐藏文件 -d 显示目录本身属性,而并非目录下的目录及文件信息 -i 显示 i-node 节点信息 参数:需要显示的目录路径,默认为当前目录 ~~~ 参数:需要显示的目录路径,默认为当前目录 使用 `ls -la` 命令之后,会看见类似以下结果 ~~~ [root@localhost ~]# ls -la 总用量 76 dr-xr-x---. 2 root root 4096 7月 5 11:14 . dr-xr-xr-x. 25 root root 4096 7月 21 05:48 .. -rw-------. 1 root root 1272 7月 4 09:15 anaconda-ks.cfg -rw-------. 1 root root 196 7月 21 09:21 .bash_history -rw-r--r--. 1 root root 18 5月 20 2009 .bash_logout -rw-r--r--. 1 root root 176 5月 20 2009 .bash_profile -rw-r--r--. 1 root root 176 9月 23 2004 .bashrc -rw-r--r--. 1 root root 100 9月 23 2004 .cshrc -rw-r--r--. 1 root root 27338 7月 4 09:15 install.log -rw-r--r--. 1 root root 7572 7月 4 09:14 install.log.syslog -rw-r--r--. 1 root root 129 12月 4 2004 .tcshrc [root@localhost ~]# ~~~ 可以看出,这个结果一共有 9 列,分别如下: ~~~ -rw-r--r--. 1 root root 7572 7月 4 09:14 install.log.syslog [ 1 ] [2][ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] ~~~ 1. 权限控制区,权限控制区一共有 11 位 * 第1 位是表示的是文件的类型 * d 表示是目录 * \- 表示是文件 * l 表示是链接文件(linkfile) * b 表示设备文件里可供存储的接口设备 * c 表示设备文件里的串型端口设备 * 第 2-10 位为用户权限,按顺序每隔三位,分别为:所有者、所属组、其它人的权限,此权限分为“`r`”(读取)、“`w`”(写)、“`x`”(执行) * 第 11 位:当文件或者文件夹只使用了selinux context的属性会是一个点“.”,只要设置了acl,就是那个setacl设置的,后面将是一个加号“+” 2. 第 2 列表示引用次数,就是有多少个链接指向这个文件 3. 第 3 列表示的是文件的所有者 4. 第 4 列表示文件的所属组 5. 第 5 列表示文件/目录的大小,默认单位为 `kb` 6. 第 6 列表示文件的创建或最后一次修改时间 7. 第 7 列表示的是文件名,文件名前面有一个小点“.”的,是隐藏文件 >[danger] 如果当前用户有权限,就有权限字母"r(读)"、“w(写)”、“x(执行)”来表示,没有相应权限,就用小横杠“-”表示 如果目录中,该用户组只有`r`权限的话,那么该用户组的用户是无法进入该目录的 ## 修改文件/目录所属用户组 命令:`chgrp [-R] [groupName] [filename/dirname]` 功能:修改文件/目录的所属用户组 权限:超级用户 ~~~ 选项: -R 可选,递归修改,也就是说还会将该目录下所有的子目录及文件一起改掉 参数: groupName 新的用户组名称 filename/dirname 需要修改的文名或目录名 ~~~ >[danger] 需要注意的是,新的用户组必须是**已经存在**的,否则是无法修改成功的 如果需要递归修改,参数`R`是大写 ## 修改文件/目录的所有者 命令:`chown [-R] [username] [filename/dirname]` 功能:修改文件/目录的所有者 权限:超级用户 ~~~ 选项: -R 可选,递归修改,也就是说还会将该目录下所有的子目录及文件一起改掉 参数: username 新的用户名 filename/dirname 需要修改的文名或目录名 ~~~ 如果需要所有者及所属组一起修改,可以用 `chown username:groupname filename` 的方式修改 如 `chown root:root install.log` >[danger] 需要注意的是,新的用户名必须是**已经存在**的,否则是无法修改成功的 如果需要递归修改,参数`R`是大写 ## 修改文件/目录权限 >[info]修改权限使用`chmod`命令,但修改方式有两种,分别可以使用数字或者符号来对权限进行修改 #### 一、数字类型修改文件权限 命令:`chmod [-R] xyz filename/dirname` 选项: -R 递归修改,也就是说还会将该目录下所有的子目录及文件一起改掉 参数:x 所有者的权限数字表示           y 所属组的权限数字表示           z 其它人的权限数字表示 Linux 的文件基本权限一共有 9 位,分别是“所有者(owner)”、“所属组(group)”、“其它人(other)”三部分各占三位,这三位分别是“读(r)”、“写(w)”、“执行(x)”三种权限,我们可以用数字来表示各种权限,权限对应如下表 r  = 4 w = 2 x  = 1 如果拥有多个权限,则可以用数字累加,如果当前权限为 `[-rwxr--r--]`,那么,去掉第一位的文件类型表示,后面的 9 位分别拆开为 `owner=rwx = 4+2+1 = 7` `gruoup=r-- = 4+0+0 = 4` `other=r-- = 4+0+0 = 4` 即,上面的权限可以用数字 `744` 表示 如果想将权限设置为 `[-rw-r-x-r--]`,拆开分别是`rw-` 即4+2+0=6、`r-x`即 4+0+1=5、`r--`即 4+0+0=4,所以应该为 654,可以使用命令 `chmod 654 filename` 如果想将权限设置为 `[-rwxrwxrwx]`,那么,可以使用命令 `chmod 777 filename` #### 二、符号类型修改文件权限 使用符符号修改法,可以使用 +、-、=来设置,加号(+),顾名思义就是给加上权限,而减号(-)就是减去某项权限,而等号(=)就是用来直接设置权限,会覆盖以前的权限,而权限的分组有三个,即 所有者 `user(u)`、所属组 `group(g)`和其它人 `other(o)`,分别用 `u`、`g`、`o`来表示相应的权限组,如果要一起设置以上三个所有权限组,可以用 `a` 表示,即`all` 示例: ~~~ [root@localhost test]# ls -lh -rw-r--r--. 1 root root 0 7月 21 22:06 howie.txt [root@localhost test]# chmod g+w howie.txt # 给用户组加上 写入的权限 [root@localhost test]# ls -lh -rw-rw-r--. 1 root root 0 7月 21 22:06 howie.txt # 这里可以看到,该文件所属用户组已经有了 w 的权限 [root@localhost test]# chmod ug-w,o-r howie.txt # 给所有人及所属组减去写(w)的权限,给其它人减去读(r)的权限 [root@localhost test]# ls -lh -r--r-----. 1 root root 0 7月 21 22:06 howie.txt # 此时我们可以看到,相应的权限已经被减掉了 [root@localhost test]# chmod u=rwx,go=r howie.txt # 设置所有者权限为 rwx,设置所属组及其它人权限为 r [root@localhost test]# ls -lh -rwxr--r--. 1 root root 0 7月 21 22:06 howie.txt # 此时可以看到,已经设置成为我们想要的权限了 [root@localhost test]# chmod a=r howie.txt # 给所有权限组设置为只有 r 的权限 [root@localhost test]# ls -lh -r--r--r--. 1 root root 0 7月 21 22:06 howie.txt # 已经正确的设置成功了 [root@localhost test]# ~~~ >[danger] 如果一次给多个权限组相同的操作,多个权限组可以直接写在一起,例如 ug+w 表示同时给所有者及所属组都加上读(w)的权限 如果一次给多个权限组不同的权限操作,可以用逗号分隔,例如 ug+w,o-r 表示给所有者及所属组增加写(w)权限的同时又给其它人减去读(r)的权限,需要注意的是,加号(+)、减号(-)、等号(=)、逗号(,)的前后不允许有空格