你好,我是goldsunC
让我们一起进步吧!
Linux文件属性
文件权限在Linux基础中是一个很重要的概念,一个系统管理员应该熟练掌握文件权限的概念。
OK,现在我以普通用户goldsun
登录CentOS7
,使用su -
切换为root
用户,输入ls -al
,如下所示:
![e89e46b8515825d95810e38f1db7046c.png](https://i-blog.csdnimg.cn/blog_migrate/1f5980f056b0e1229e40bdde401a78d5.jpeg)
仔细观察一下,发现每一行内容的格式都大差不差,以其中的Documents
行为例吧,它是这样的:
drwxr-xr-x. 2 root root 6 Sep 17 11:53 Documents
第一栏drwxr-xr-x.
就是这个文件的类型与权限。
- 第一个字符
d
代表这个文件是个目录。 - 如果为
-
则是一个文件。 - 如果为
|
则表示为链接文件(link file)。 - 如果为
b
则表示为设备文件里面的可供存储的周边设备(可按块随机读写的设备)。 - 如果是
c
则表示为设备文件里面的串行端口设备,例如键盘、鼠标。
接下来的字符rwxr-xr-x.
中以三个为一组,且均为rwx
的三个参数的组合。其中:
r
代表文件可读。w
代表文件可写。x
代表文件可执行。
这三个参数的位置始终保持rwx
顺序不会改变,如果没有某个权限,会出现-
号。
字符三个为一组,第一组代表文件拥有者具备的权限,第二组代表相同用户组成员具备的权限,第三组代表其它用户具备的权限。
第二栏只有一个数字2
,它表示有2个文件名链接到此节点inode
。
每个文件都会将它的权限与属性记录到文件系统中的inode
中,不过,使用的目录树是使用文件名来记录,因此每个文件名就会链接到一个inode
,这个属性记录的就是有多少不同的文件名链接到一个相同的inode
号码。
第三栏表示这个文件(或目录)的拥有者账号,如此文件拥有者为root
。
第四栏表示这个文件的所属用户组,此文件所属用户组为root
。
第五栏表示这个文件的容量大小,默认单位为Bytes
,此文件大小为6B。这么小是因为里面没有东西哈哈哈。
第六栏为这个文件的创建日期或者是最近的修改日期。
第七栏就是文件名啦。
这七个字段的意义是一定要熟练掌握的。
Linux文件权限重要性
与Windows不一样的是,在Linux系统中每一个文件都拥有很多的属性,尤其是多了用户组的概念,这最大的用途就是让数据更加安全。
用户组有什么用呢?假如你是一个系统管理员,你有两个开发团队,每个团队分工不同,为了保证两个团队的文件数据能被安全保护,你就可以给两个团队分别创建用户组,然后赋予权限,使得团队之外的任何用户不能修改团队内的文件数据。
如果你没有将文件权限管理好,比如本来只有管理员能做的开关机,可以让其它用户执行,那么万一其它用户给你系统重新启动等,那你系统不就会经常莫名其妙挂掉。
甚至一些坏蛋胡乱执行rm -rf /*
那还了得。
修改文件权限
一个文件的属性与权限有很多,我们先介绍几个常用的修改用户组、拥有者、其他身份
的修改权限命令:
chgrp
:修改文件所属的用户组。chown
:修改文件的拥有者。chmod
:修改文件的权限。
修改文件用户组
修改一个文件的用户组很简单,直接使用chgrp(change group的缩写)
即可。要注意的是,要被修改的组名必须存在于/etc/group
文件中才行,否则会产生错误,如果没有该用户组,你可以自己创建一个用户组。
![16f8a422a874b058966bd2efb4344a9d.png](https://i-blog.csdnimg.cn/blog_migrate/745e97c6776da72ff0c131f1754cb247.jpeg)
如图所示etc/group
文件里面长这样,你看里面有一个users
用户组,而如下图所示,在我的Documents
目录中有这么一个空的emptyfile
文件:
![f375c4a78d805b05f9c6c6f33fbc8754.png](https://i-blog.csdnimg.cn/blog_migrate/c5352e2552e67fcfabd938218c51a12e.png)
它的所属用户组是root
,如果想给它改成users
,怎么改呢?如下:
![1eec875d540c4dcb2a9301e0a9bf8d53.png](https://i-blog.csdnimg.cn/blog_migrate/7fd150950579654b1891a32156d7e55b.jpeg)
只执行了chgrp users emptyfile
就可以了,很简单吧,chgrp
使用方法如下:
chgrp [-R] dirname/finame
参数:
-R:这个参数的意思为进行递归修改,也就是说连同子目录下的所有文件都更新成你要改的用户组,
不加这个参数的话今今修改你列出的文件。
修改文件拥有者
修改一个文件的拥有者使用的命令是chown(即change owner的缩写)
,要注意的是,当然修改的用户也必须是当前系统存在的用户啦。例如我将刚才的emptyfile
文件修改用户拥有者为goldsun
,操作如下:
![30892568ac324b03dae06b9d1e1d39e1.png](https://i-blog.csdnimg.cn/blog_migrate/0507479e0bb6c5731d1020f12d715b9e.png)
chown
的命令使用方法如下:
chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录
-R:递归修改
可以看到方法和chgrp
差不多,不过多了一种使用方法,即这个命令可以顺道把用户组也修改了,如下所示:
![04d84acc131ae2d1d2b6deaceb697113.png](https://i-blog.csdnimg.cn/blog_migrate/25a8fd7f37ff0ae0f52d1bec29690e9f.jpeg)
上图中使用chown
命令又把emptyfile
文件拥有者和所属用户组修改成了root
。
修改文件权限
chmod
用来修改文件的权限,文件的权限设置方法有两种,一种就是我们见到的rwx
,还可以使用数字来修改权限。其中字母和数字是有对应的关系的,如下:
r:4
w:2
x:1
因为每种身份有三个权限,三个权限的数字是需要累加的,如下所示:
rwx = 4+2+1= 7
rw = 4+2 = 6
rx = 4+1 = 5
wx = 2+1 = 3
因此如果你设置的权限为770
,那么对应的就是rwxrwx---
,懂了吗?
chmod
的命令使用方法如下:
chmod [-R] 权限 文件或目录
-R:仍然是递归的意思。
![c4990a395f4ced1372074188c7bf9cdd.png](https://i-blog.csdnimg.cn/blog_migrate/14e0a0ebaf6e4cf915614eac5288c2bd.png)
例如现在该文件的权限为rw-r--r--
,意思就是文件拥有者可读可写,用户组成员和其它用户都只读。对应的数字是644
。假如我想让所有用户都可读可写可执行,那么应该执行chmod 777 emptyfile
,如下所示:
![2ea43b9e754962b9c322ddb78e954ff0.png](https://i-blog.csdnimg.cn/blog_migrate/647b77b02e463cd5f95ead942dccdc1d.png)
实际上,chmod
命令可以有另外一种使用方法,即假如你现在不知道文件的权限,而你现在只想要让emptyfile
这个文件能够让所有人可执行,那么你只需要执行chmod +x emptyfile
即可,这样就给文件加上了可执行权限,如下所示:
![c9ebb464809682a217084b4d51639ad9.png](https://i-blog.csdnimg.cn/blog_migrate/42d17d063b045b9261686dd8a681fcc6.png)
如果你想去掉某个权限,使用-
减号就可以了!
- END -