Linux基础——文件属性和权限

文件属性和权限

  • 文件属性和权限是什么?
  • 文件属性
  • 修改文件属性
    • 修改group
    • 修改owner
    • 修改权限
    • 修改时间
  • 权限对于文件和目录的区别
  • umask和预设权限
  • 隐藏属性——chattr
  • 特殊权限
    • SUID
    • SGID
    • SBIT
    • 特殊权限设置
  • ACL
    • setfacl / getfacl
      • u:用户:权限
      • g:群组名:权限
      • m:权限
      • d:[u|g]:[user|group]:权限

文件属性和权限是什么?

  • 属性指文件的信息,如大小、创建时间等
  • 权限指对文件的操作,linux根据文件将用户的身份分为 owner/group/other,而每个身份对文件的操作又分为 read/write/execute

文件属性

通过命令 ls -al,可列出文件的属性,分为 文件类型和权限、链接数、owner、group、大小(单位为bytes)、最后修改时间、文件名( .表示当前目录,. .表示上一层目录)
在这里插入图片描述
上图红框为文件类型和权限,由10位组成

  • 第1位为文件类型,目录为 d,文件为 -,链接为 l,存储设备为 b(硬盘),外设为c(鼠标键盘)
  • 接下来每3个为一组表示owner/group/other的权限,- 表示无对应权限

修改文件属性

修改group

使用命令 chgrp groupname filename 修改文件的group,加上参数 -R 可递归修改目录下的文件,如下将1.txt的group改为root
Linux基础——文件属性和权限_第1张图片

修改owner

使用命令 chown ownername filename 修改文件的owner,加上参数 -R 可递归修改目录下的文件,如下将1.txt的owner改为root
Linux基础——文件属性和权限_第2张图片
chown命令可同时修改owner和group,如下将1.txt的owner和group改回song
Linux基础——文件属性和权限_第3张图片

修改权限

使用命令 chmod,可修改文件权限

  • 方式一:对指定位设置1修改权限,如下全部修改为可读可写可执行
    Linux基础——文件属性和权限_第4张图片
  • 方式二:指定身份修改,如下改回原样,u表示onwer,g表示group,o表示other
    Linux基础——文件属性和权限_第5张图片
  • 方式三:统一添加权限,如为所有身份添加可执行权限,a表示所有身份
    Linux基础——文件属性和权限_第6张图片
    反之,去掉所有身份的可执行权限
    Linux基础——文件属性和权限_第7张图片

修改时间

文件时间共有3种:

  • mtime 指的是文件内容被更新的时间,ls -l默认显示此时间
  • ctime 指的是文件状态被更新的时间,如权限、属性
  • atime 指的是文件上一次被读取的时间

通过命令ls -l 及 参数 --time 可查看上述时间,如下/etc/hdparm.conf文件上一次内容更新是2018.2.22(该文件第一次创建),状态更新为2022.2.26(安装虚拟机时间),上一次访问为2022.3.2
Linux基础——文件属性和权限_第8张图片
使用命令 touch 修改文件时间,-a 修改atime,-c修改ctime,-m修改mtime,-d 修改日期,-t修改时间
Linux基础——文件属性和权限_第9张图片
如上可看到 -d -t 修改了 mtime和atime

权限对于文件和目录的区别

字母 对于文件 对于目录
r 读取文件内容 读取文件列表(ls)
w 编辑(添删改)文件内容 增、删文件,修改文件名及移动文件
x 执行文件 进入目录(cd)

可看到rwx 对于文件来说是对其内容的操作对于目录是来说是对其组织结构的操作(x表示是否可进入目录)

umask和预设权限

  • 一般文件不需要x权限,故最大权限为 -rw-rw-rw-
  • 目录文件需要x权限才能进入,故最大权限为 drwxrwxrwx

命令 umask 查看权限预设值,0002对应为--------w-,说明需要去掉other的w权限
在这里插入图片描述
预设权限 = 最大权限 - 预设值

  • 文件预设权限: (-rw-rw-rw-) - (--------w-) = -rw-rw-r–
  • 目录预设权限:(drwxrwxrwx)- (--------w-) = drwxrwxr-x

在这里插入图片描述
如果要修改umask,直接在命令后面加上数字即可

隐藏属性——chattr

隐藏属性只在Ext2/Ext3/Ext4文件系统上存在,通过命令 chattr 设置隐藏属性,±= 表示添加删除设置参数

  • A 表示存取文件时atime不会改变
  • S 表示当对文件修改时,会同步到硬盘中
  • a 表示只能添加文件内容,而不能删除和修改
  • c 表示存储时自动压缩,读取时自动解压缩
  • d 表示文件不会被dump备份
  • i 表示只读,其他任何操作都无效
  • s 表示文件删除后会直接移除,u表示删除后还在硬盘(应该是回收站)

如下为1.txt添加 i 属性后无法删除
在这里插入图片描述
查看隐藏属性使用命令 lsattr ,-a 表示将隐藏文件的属性也显示出来,-d 表示只显示目录属性,-R表示递归显示
在这里插入图片描述

特殊权限

SUID

当s在owner的x位置时是SUID,这个权限只用于文件(不可用于脚本),使用者执行该文件时可临时获得该文件owner的权限
在这里插入图片描述

  • 用户密码存放于/etc/shadow,用户song要修改密码必然要修改shadow文件
  • 而该文件权限为-rw-r-----,owner为root,group为shadow,并不对song开放
  • 故用户song可通过命令passwd暂时获取root权限修改shadow文件从而实现修改密码

SGID

当s在group的x位置时是SGID
在这里插入图片描述

  • 权限用于文件时,使用者执行该文件时可临时获得该文件group的权限
  • 权限用于目录时,新建文件的group与此目录group相同

SBIT

当t在other的x位置时是SBIT,只对目录生效,当使用者在该目录下建立文件时,仅root和自己才有权力删除该文件
在这里插入图片描述
/tmp 存放临时文件,只有自身才能删除自己创建的临时文件

特殊权限设置

方式一:SUID/SGID/SBIT分别对应4/2/1,在设置rwx前再加一个数字,即可完成特殊权限的设置,大写S表示当前无x权限
Linux基础——文件属性和权限_第10张图片
方式二:通过符号设置,SUID为u+s,SGID为g+s,SBIT为o+t
Linux基础——文件属性和权限_第11张图片
或直接赋值设置
Linux基础——文件属性和权限_第12张图片

ACL

现有群组 group 权限为 rwxrwx—,现需要让用户 user 对群组可读

  • 方法1:让user加入群组,但这样user会额外拥有w/x权限
  • 方法2:让group修改权限为 rwxrwxr–,但这样其他用户会额外拥有 r 权限

ACL(Access Control List)就是为了解决上述问题,通过ACL可针对单一用户或文件设置权限

setfacl / getfacl

命令 setfacl / getfacl 设置 / 获取文件的ACL权限,-m 表示设置后续的acl参数给文件,-x 表示删除后续的acl参数,-b 移除所有的acl参数,-k 移除预设的acl参数,-R 递归设置,-d 预设acl参数(只对目录有效,目录下的所有新建文件都遵循预设值)

u:用户:权限

Linux基础——文件属性和权限_第13张图片
如上对用户 song 设置针对文件 test 的 rx 权限,如下未指定用户代表当前owner
在这里插入图片描述
如下红框部分即为上面所设置的权限
Linux基础——文件属性和权限_第14张图片

g:群组名:权限

如下对群组 test 设置针对文件 test 的 rx权限
Linux基础——文件属性和权限_第15张图片

m:权限

如下设置文件的有效权限,虽然用户 song 有 rx 权限,但实际只有 r 权限
Linux基础——文件属性和权限_第16张图片

d:[u|g]:[user|group]:权限

使用如上的命令针对目录,不能将ACL权限继承到目录中的新文件
Linux基础——文件属性和权限_第17张图片

如下对目录spaces设置ACL权限,使得新建的文件(或目录)也继承该权限
Linux基础——文件属性和权限_第18张图片

你可能感兴趣的:(#,Linux基础,linux,ubuntu)