## 查看文件/目录权限
命令:`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)的权限,需要注意的是,加号(+)、减号(-)、等号(=)、逗号(,)的前后不允许有空格
- 序言
- Linux 的安装
- VMware 的安装
- VMware 的配置
- CentOS 下载与虚拟机硬件配置
- Linux 的分区
- ContOS 安装
- 虚拟机网络配置
- 远程连接工具安装
- 基础(旧)
- Linux 和 Windows 的区别
- 目录结构
- 注意事项
- Linux的常用命令
- 用户及用户组
- 文件及权限
- 目录与文件权限的意义
- 文件及目录管理相关
- 常用命令
- 系统安装
- Linux的简介
- Linux 各发行版介绍
- CentOS的部署
- 基础
- 文件和用户管理
- Linux目录结构
- 文件管理相关
- cd 切换目录
- pwd 显示当前位置
- ls 列出目录下的文件和子目录
- touch 创建文件
- mkdir 创建目录
- cp 复制文件/目录
- mv 移动或改名文件/目录
- rm 删除文件/目录
- chattr 改变文件属性
- lsattr 显示文件属性
- 用户管理
- useradd 添加用户
- passwd 修改用户密码
- id 查看用户ID信息
- userdel 删除用户
- usermod 修改用户信息
- groupadd 创建用户组
- groupdel 删除用户组
- su 切换用户帐号
- sudo 以管理员的身份执行命令
- 权限管理
- chmod 修改文件/目录权限
- chown 修改文件拥有者或所属组
- chgrp 修改文件所属组
- setfacl 设置文件权限列表
- getfacl 查看文件权限列表
- vim的使用
- 进程管理
- ps 查看进程
- top 动态显示进程
- kill 杀死进程
- nice 修改进程优先级
- jobs 显示后台任务列表及任务状态
- fg 将后台运行的进程调整至前台运行
- bg 将在后台暂停进行继续执行
- 磁盘管理
- lsblk 列出块设备信息
- fdisk 磁盘分区
- partprobe 重新读取分区表
- mkfs 建立文件系统(格式化)
- mont 挂载设备
- df 查看磁盘使用情况
- unount 卸载挂载设备
- 交换空间 swap
- free 查看内存使用状态
- mkswap 设置交换分区
- swapon 激活交换空间
- LVM逻辑卷管理
- LMV的工作原理
- pvcreate 创建物理卷
- pvs 查看物理卷
- pvscan 查看每个PV的信息
- pvdisplay 显示物理卷详细信息
- vgcreate 创建卷组
- vgs 查看卷组
- vgscan 查看每个VG的信息
- vgdisplay 显示卷组详细信息
- lvcreate 创建逻辑卷
- vgextend 扩展卷组空间
- lvextend 扩展逻辑卷空间
- resize2fs 调整文件系统大小
- RAID
- 文件查找和压缩
- which 命令查找
- find 根据文件名查找文件
- locate 查找文件
- tar 文件打包
- 软件安装
- RPM包管理
- yum 安装软件
- rpm 安装软件
- 源码包管理
- 计划任务
- at 一次性计划任务
- cron 循环任务
- 日志系统
- 网络管理
- ip 显示或设置网络设备
- OSI简介