Linux文件属性、权限、种类与扩展名详解

Linux文件属性与权限详解

    • 1.查看linux文件属性与权限
            • 第一列代表文件类型与权限
            • 第二列表示有多少文件链接到此节点(i-node)
            • 第四列代表文件所属群组
            • 第五列表示这个文件的容量大小,默认单位bytes
            • 第六列代表最近修改日期
    • 2.linux改变文件属性与权限
            • 改变所属群组,chgrp
            • 改为文件拥有者 chown
            • 改变权限,chmod
    • 3.目录与文件之权限意义
            • 权限对文件的重要性
            • 权限对目录的重要性
    • 4.linux文件种类与扩展名
            • 文件种类
            • linux文件扩展名

1.查看linux文件属性与权限

首先登入linux,并使用 下面的命令看看(需要su权限)

ls -al

Linux文件属性、权限、种类与扩展名详解_第1张图片
ls是【list】的意思,显示文件名和相关属性,【-al】是列出包括隐藏文件(文件名第一个字符为【.】时是隐藏文件)的所有文件详细的权限与属性
输出的属性解释如下

drwxr-xr-x.     3      root      root     18    4月 24 16:40  .config
文件类型与权限 链接数 文件拥有者 所属群组  大小   最后修改时间    文件名 
第一列代表文件类型与权限

可以发现,有十个字符

Linux文件属性、权限、种类与扩展名详解_第2张图片

  • 第一个字符代表文件的类型

    • 当为【d】则是目录
    • 当为【-】则是文件
    • 当为【l】则是链接文件(link file)
    • 当为【b】则是表示装置文件里面可供存储的接口设备,即可随机存取装置
      -当为【c】则表示装置文件里的串行端口设备,如键盘、鼠标等一次性读取装置
  • 接下来以三个字符为一组,且取值只能在r(可读)、w(可写)、x(可执行)。这三个字符位置不会改变,如果没有相关权限则显示为【-】

    • 第一组为文件拥有者的权限,如上例为rwx,代表对于文件拥有者root来说,可读可写可执行
    • 第二组为所属群组的权限,上例为r-x,代表文件属于root群组,且该群组的权限为可读可执行但不可写。
    • 第三组为相对于文件所属群组的其他人的权限,同上。
第二列表示有多少文件链接到此节点(i-node)

每个文件都会将他的权限和属性记录到文件系统的i-node,由于linux使用的目录树是使用文件名来记录,因此每个档名就会链接到一个i-node,这个属性即记录有多少不同的档名链接到相同的一个i-node。

第四列代表文件所属群组

相对于文件所属的群组,如果不在群组的账号权限是第一列的最后三位权限

第五列表示这个文件的容量大小,默认单位bytes
第六列代表最近修改日期

如果时间太久,就会只显示年份。如果想要完整的时间格式,可以用

ls -l --full-time

来显示完整的时间

对于更详细的ls用法,使用【ls --help】或【man ls】或【info ls】来查看官方的文档。

2.linux改变文件属性与权限

在学习修改权限之前,一定要搞清什么数据是可变的,什么是不可变的
常用指令如下:

  • chgrp 改变文件所属群组
  • chowm 改变文件所有者
  • chmod 改变文件的权限,SUID,SGID,SBIT等特性
改变所属群组,chgrp

chgrp即change group。现在,新建一个测试文件:

touch test.txt

新建文件无任何输出,linux的理念就是没有反馈信息就是最好的运行成功信息
来用【ls -al】看一下该文件的属性
Linux文件属性、权限、种类与扩展名详解_第3张图片
在改变群组之前,先学习一下chgrp用法:

chgrp [-R] group dirname/filename ...
选项-R:进行递归操作,即连同此目录下的所有文件、目录都改变。

将test.txt的群组改变为users并查看**(注意群组必须在/etc/group存在)**:

chgrp users test.txt
ls -al

Linux文件属性、权限、种类与扩展名详解_第4张图片

那如果改变在一个/etc/group里没有的群组:
在这里插入图片描述
便会报错invaild group(默认语系是英文时。上图默认语系是中文)

改为文件拥有者 chown

用法与改变群组完全一致,只不过把chgrp换为chown。
chown比chgrp还多一个功能就是他可以同时改变文件所有者及所属群组:

chown [-R] 用户名:组名 文件或目录

这种用法也可以

chown [-R] 用户名.组名 文件或目录

也可直接修改群组

chown [-R] .组名 文件或目录

同样,用户名需要在/etc/passwd中有记录。

改变权限,chmod

权限设定方法有两种,一种是数字一种是rwx符号。

  • 数字类型改变权限
    rwx分别对应如下数字分数:
符号 分数
r 4
w 2
x 1

前面提到,每三个符号为一组权限,我们只需要累加即可,如rwx=4+2+1=7,r-x=4+1=5
linux文件基本权限设定了三组,即owner/group/others,三个身份都有各自的权限,假设一组权限是【-rwxrwx—】则:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = — = 0+0+0 = 0
因此该权限为770,那么以数字方式改变权限语法:

chmod [-R] xyz 文件或目录
xyz即为数字分数

将test.txt改为完全的权限即777:

chomd 777 test.txt

Linux文件属性、权限、种类与扩展名详解_第5张图片
可以看到权限已经是【-rwxrwxrwx】

  • 符号类型改变文件权限
    linux将文件权限分为三种身份user、group、others,那么可以借u、g、o来表示 ,用a表示all,那么用符号改变的方式如下:
    Linux文件属性、权限、种类与扩展名详解_第6张图片
    将test.txt设定为【-rwxr-xr-x】,则:
    user(u): 具有读写执行权
    group(g)、others(o)具有读与执行权
chmod u=rwx,go=rx test.txt
或者
chmod u=rwx.g=rx,u=rx test.txt

Linux文件属性、权限、种类与扩展名详解_第7张图片
如果不清楚原先的属性,只需要对每个增加可写权限,就可以这样:

chmod a+w test.txt

如果拿掉权限就是【-】,要直接设定权限就用【=】

3.目录与文件之权限意义

权限对文件的重要性

文件是实际含数据的地方,对于文件来说:

  • r 可以读取此文件的内容
  • w 可以编辑、新增、或修改文件的内容,但不包含删
  • x 该文件可以被系统执行

对于【x】可能不太好理解,在windows下,一个文件能否被执行是靠扩展名如.exe,.bat等来判断,但在linux下,是靠是否有【x】来判断,与文件名无关。

对于【w】是没有删除权限的

权限对目录的重要性

对于目录来说

  • r 表示具有读取目录结构列表的权限
  • w 表示你具有异动该目录结构列表的权限,也就是:
    • 建立新的文件与目录
    • 删除已经存在的文件与目录(不论该文件的权限如何)
    • 将已存在的文件或目录更名
    • 移动该目录的文件、目录位置
  • x 代表用户能否进入该目录为工作目录。所谓工作目录即代表你当前所在的目录,也就是你需要cd改变到一个目录的话,你需要x权限

下表可以解释权限对文件和目录的区别
Linux文件属性、权限、种类与扩展名详解_第8张图片
请注意,如果你在某目录不具有x权限,那么你就无法切换到该目录,无法执行该目录下的任何指令,即使你有该目录的r或w权

要开放目录给人浏览时,至少给予r和
x权,但不要随便给w权!

上述强调,x在目录中是与【能否进入该目录】有关,w可以让使用者删除、更新、新建文件或目录
例如有两个档名:

  • /dir1/file1
  • /dir2
    假设你使用非roor用户(root用户无视权限),下图列了你完成某些操作所需的最小权限:
    Linux文件属性、权限、种类与扩展名详解_第9张图片

4.linux文件种类与扩展名

文件种类
  • 正规文件
    第一个字符为【-】,可分为
    • 文本文档(ASCII)
    • 二进制文件(binary)
    • 数据格式文件(data)
  • 目录
    第一个字符为【d】
  • 链接档
    即快捷方式,第一个字符为【l】
  • 设备与装置文件
    • 区块设备档,如硬盘或软盘,放在/dev/sda下,字符为【b】
    • 字符设备文件,如键盘鼠标,字符为【c]
  • 资料接口文件
    字符为【s】,即套接字,在/run或/tmp可以看到
  • 数据传输文件
    FIFO,字符为【p】
linux文件扩展名

前面提到过,linux没有扩展名的,能不能执行只看是否有【x】权,而我们看到的扩展名只是帮助人类判断这个文件是干嘛的,如.sh是脚本,.tar是压缩包,只是帮助人类识别。

以上内容根据《鸟哥的Linux私房菜-基础学习篇(第四版(Linuxidc.com))》有删改

你可能感兴趣的:(Linux学习笔记,linux,centos)