一 文件属性的查看
有两种方式可以查看文件的属性
ls -l
或者ll
以/boot的目录为实例如下:
[root@young boot]# ls -al
总用量 86184
dr-xr-xr-x. 5 root root 4096 1月 25 23:35 .
dr-xr-xr-x. 17 root root 224 1月 25 23:34 ..
-rw-r--r--. 1 root root 140894 8月 23 2017 config-3.10.0-693.el7.x86_64
drwxr-xr-x. 3 root root 17 1月 25 23:31 efi
drwxr-xr-x. 2 root root 27 1月 25 23:31 grub
drwx------. 5 root root 97 1月 25 23:35 grub2
-rw-------. 1 root root 51368677 1月 25 23:34 initramfs-0-rescue-628dd9f9691b430bb749933926c9d0bc.img
-rw-------. 1 root root 20830793 1月 25 23:35 initramfs-3.10.0-693.el7.x86_64.img
-rw-r--r--. 1 root root 611338 1月 25 23:32 initrd-plymouth.img
-rw-r--r--. 1 root root 293027 8月 23 2017 symvers-3.10.0-693.el7.x86_64.gz
-rw-------. 1 root root 3228420 8月 23 2017 System.map-3.10.0-693.el7.x86_64
-rwxr-xr-x. 1 root root 5877760 1月 25 23:34 vmlinuz-0-rescue-628dd9f9691b430bb749933926c9d0bc
-rwxr-xr-x. 1 root root 5877760 8月 23 2017 vmlinuz-3.10.0-693.el7.x86_64
-rw-r--r--. 1 root root 166 8月 23 2017 .vmlinuz-3.10.0-693.el7.x86_64.hmac
由上可以看到,显示的结果如下,分为七列:
* 代码例1 *
一 二 三 四 五 六 七
-rw-r--r--. 1 root root 140894 8月 23 2017 config-3.10.0-693.el7.x86_64
drwxr-xr-x. 3 root root 17 1月 25 23:31 efi
二 文件权限信息
第一列主要体现的是用户的文件信息,由下图的分四块,分别为
- 文件类型
- 属主权限
- 属组权限
- 其他用户权限
由下图1可以分析出,上面给出的代码例1中第一行的
文件config-3.10.0-693.el7.x86_64
是一个文件属性,创建用户为root,用户组为root,属主权限为读写,用户组和其他用户都只能读
而文件efi
则是一个目录,创建用户和用户组都为root,属主有读写和操作权限,属组和其他用户都只能读和操作,不能写
图1
为何能够判断第一个文件是文件第二个文件是目录呢,这是由于文件类型规定如下:
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
三 更改文件属性的几个命令
目前学习到的有三个 chgrp
chown
chmod
chgrp
改变文件的属组
记忆 > change group
chgrp [-R] 属组名文件名 其中 -R表示的为迭代更改目录下所有文件
案例:
[root@young abcd]# ll
-rw-r--r--. 1 root root 5 5月 12 16:06 abc
改变单个文件
[root@young abcd]# chgrp bin abc
[root@young abcd]# ll
-rw-r--r--. 1 root bin 5 5月 12 16:06 abc
迭代改变文件夹
[root@young abcd]# chgrp -R root /boot/abcd
[root@young abcd]# ll /boot/abcd
-rw-r--r--. 1 root root 5 5月 12 16:06 abc
chown
改变文件的拥有者
记忆 > change own
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名 这个命令也可以改变文件的用户组
[root@young abcd]# ll
-rw-r--r--. 1 root root 5 5月 12 16:06 abc
[root@young abcd]# chown root:root abc
[root@young abcd]# ll
这里将用户和用户组一起改了
-rw-r--r--. 1 root root 5 5月 12 16:06 abc
chmod
改变文件的权限信息
记忆 >change mode
因为在判断读写的时候以三位二进制进行判断比如100即为读,010为写,001为操作权限
数字型权限赋值
所以读写权限的设定可以转换为数字,按顺序推断的话,可以得出以下的顺序
- 只读 r:4 < 2^2 < 100 机器码
- 只写 w:2 < 2^1 < 010 机器码
- 只操作 x:1 < 2^0 < 001 机器码
则可以根据数字的累加来设定文件的三个属性,比如 - 7为机器码的111 >rwx则为全部的权限
- 5 为机器码的101 >r-x则为读和操作权限
由此可以按照此原理进行试验
案例:
//想文件改为所有用户都只能读和操作,即为101101101
[root@young abcd]# ll
-rw-r--r--. 1 root root 5 5月 12 16:06 abc
[root@young abcd]# chmod 555 abc
[root@young abcd]# ll
-r-xr-xr-x. 1 root root 5 5月 12 16:06 abc
//想文件只有用户可以操作所有权限,其他用户都只能看,即111100100
[root@young abcd]# chmod 744 abc
[root@young abcd]# ll
-rwxr--r--. 1 root root 5 5月 12 16:06 abc
符号型的权限设置方式
这种方式,没有数字型的方便,但是在只需要改单个用户的个别权限的时候,比较适合使用
由于三个用户为
- user
- group
- other
而读写分别为 - r
- w
- x
则可以对单个用户的单个权限进行赋值(=)或者加减(+,-),这里linux还支持了对所有的用户进行操作,命令支持u,g,o,a
例1 如果需要直接赋值用户的三个权限,用户的所有者有所有权限,其他用户都只能看,就需要 chmod u=rwx,g=r,0=r,但是这明显没有数字方式的方便快捷
[root@young abcd]# ll
总用量 4
-rwxr--r--. 1 root root 5 5月 12 16:06 abc
[root@young abcd]# chmod u=rwx,g=r,o=r abc
[root@young abcd]# ll
总用量 4
-rwxr--r--. 1 root root 5 5月 12 16:06 abc
例2 如需要将所有用户的写权限去除,就不需要对所有用户的所有权限进行一次赋值,直接chmod a-w 即可
[root@young abcd]# ll
-rwxr--r--. 1 root root 5 5月 12 16:06 abc
[root@young abcd]# chmod a-r abc
[root@young abcd]# ll
//去掉所有的读权限
--wx------. 1 root root 5 5月 12 16:06 abc
这里的总结是,如果是一次性的赋值,则直接数字型操作即可,如果单次许修改某个用户的某个权限,则可以用符号型的操作对用户权限进行+,-操作即可
网友评论