linux文件属性

一 文件属性的查看

有两种方式可以查看文件的属性
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

这里的总结是,如果是一次性的赋值,则直接数字型操作即可,如果单次许修改某个用户的某个权限,则可以用符号型的操作对用户权限进行+,-操作即可

你可能感兴趣的:(linux文件属性)