【第六章】文件与目录的默认权限和隐藏权限

文件与目录的默认权限和隐藏权限

【例】你的系统有一个一般身份用户yzq,它的用户组属于yzq,它的根目录在/home/yzq,你是root,你想将你的~/.bashrc复制给它,可以怎么做?
【答】root可以将这个文件复制给yzq,但这个文件在根目录中却可能让yzq没办法读写(因为这个文件属于root,而yzq又不能使用chown)
所以可以这样做
cp ~/.bashrcc ~yzq/bahsrc //复制
chown yzq:yzq ~yzq/bashrc //修改权限

文件默认权限

用户建立的文件默认没有x权限,所以最大是666,即-rw-rw-rw-
用户建立的目录默认开放所有权限,即777,drwxrwxrwx

umask指定目前用户在建立文件或目录时候的权限默认值。
直接输umask查看默认权限值,加上-S可以以符号的形式看到
在这里插入图片描述
注意umask的数字指的是该默认值需要减掉的权限
4表示读,2表示写,1表示执行
比如022(0022中第一个数是特殊权限用的)中0表示user没有权限被减掉,而group和others被去掉了2,也就是说这两个的写权限都被去掉了。也就是说:
文件权限:-rw-rw-rw-------w--w-=-rw-r--r--
目录权限:drwxrwxrwx-d----w--w-=drw-r-xr-x
验证:
在这里插入图片描述
所以如果umask制定为022,那新建的数据就只有用户自己有w权限,而同用户组的人只有r权限。所以应该将umask设定为002:在这里插入图片描述
直接在umask后输002即可。
注意:不能直接用属性数字和umask相减(比如777-022这种)! 举例如果用666-003=663,得出权限是-rw-rw--wx,但003是-------wx,最后怎么会还有x呢

文件隐藏属性

chattr

配置文件隐藏属性(该命令只能在ext2、ext3、ext4的Linux传统文件系统上面完整生效)

chattr [+-=][ASacdistu] 文件/目录
A 设置了A属性后存取此文件(或目录)时,它的存取时间atime将不会被修改
S 加上S属性后进行文件的修改会同步写入磁盘中(一般文件是非同步写入磁盘的)
a 设置a属性后这个文件只能增加数据而不能删除和修改数据,只有root才能设置这个属性
c 设置这个属性后会自动将此文件压缩,读取时自动解压缩
d 设置这个属性将可使该文件(目录)不会被dump备份
i 这个属性可以让一个文件【不能被删除、改名、设置连接,也无法写入或新增数据】,只有root才能设置
s 设置s后如果被删除会直接从硬盘删除,无法恢复
u 如果被删除,数据内容还存在在硬盘中,还能恢复

在这里插入图片描述
有了i属性,连root都不能删除它。

lsattr

显示文件隐藏属性

lsattr [-adR] 文件/目录
-a 将隐藏文件的属性也显示出来
-d 如果后面接的是目录,仅列出目录本身的属性而非目录内的文件名
-R 连通子目录的数据也一并列出来

在这里插入图片描述

文件特殊权限

Set UID

在这里插入图片描述
s出现在user的x权限上时,被称为Set UID。

  • SUID权限仅对二进制程序有效
  • 执行者对该程序需要具有x的可执行权限
  • 本权限仅在执行该程序的过程中有效
  • 执行者将具有该程序拥有者的权限

比如root对保存密码的/etc/shadow的权限是-rw-r–r--,也就是这个文件对root可读且只能root写入。那我的个人用户保存在shadow里,我却可以修改我自己的密码,这是否冲突了?没有冲突,这就是UID的功能

  1. 我的个人账户yzq对/usr/bin/passwd这个程序来说有x的权限,表示yzq能执行passwd
  2. passwd的拥有者是root
  3. yzq执行passwd的过程中会【暂时】获得root权限
  4. /etc/shadow就可以被dmtsai所执行的passwd修改

但是我如果用cat来读取/etc/shadow就不能够读取,因为cat没有SUID的权限
另外SUID仅可用于二进制程序上,不能够用在shell脚本上

Set GID

s在user的x位置上称为SUID,在group的x位置上称为SGID

  1. SGID对二进制程序有用
  2. 程序执行者对该程序来说需要有x的权限
  3. 执行者在执行的过程中将会获得该程序用户组的支持

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201216210632245.png
如果我用yzq这个账号去执行locate时,那yzq将会取得slocate用户组的支持,因此就能够去读取mlocate.db
当一个目录设置了SGID的权限后,它将有一下功能:

  • 用户若对此目录具有r与x的权限时,该用户能够进入此目录
  • 用户在此目录下的有效用户组将会变成该目录的用户组
  • 用途:若用户在此目录下具有w的权限(可以新建文件),则用户所建立的新文件,该文件的用户组与此目录的用户组相同
Sticky BIT

SBIT目前只对目录有效:

  • 当用户对此目录具有wx权限时,即具有写入的权限
  • 当用户在该目录下建立文件或目录时,仅有自己与root才有权利删除该文件

举例:用户甲对A用户具有用户组或其他人的身份,并且拥有该目录w的权限,这表示甲对该目录内任何人建立的目录或文件均可删除、更名、移动等。不过如果将A目录加上SBIT权限时,甲只能针对自己建立的文件进行刚刚那几个操作,无法删除他人文件。

SUID/SGID/SBIT权限设置

在原来的三位数字之前再加一个数表示设置一个特殊权限

  • 4为SUID
  • 2为SGID
  • 1为SBIT

假设要将一个文件权限改为-rwsr-xr-x,因为s在user权限中,所以是SUID。原先设置权限是755,现在设置SUID的权限,所以在755前加上一个4,还是利用chmod

chmod 4755 filename

加入SUID权限
在这里插入图片描述
加入SUID和GUID权限
在这里插入图片描述
加入SBIT权限
在这里插入图片描述
注意这个
在这里插入图片描述
这里设置666权限,所以ugo都没有x权限,所以这里大写的S和T代表的就是空的。SUID表示该文件在执行的时候具有文件拥有者的权限,但是现在文件拥有者都不能执行了,哪里来的权限给其他人用,所以就是空的。

也可以用符号法加入权限:
在这里插入图片描述

观察文件类型

通过file命令简单的先判断文件的格式是什么
在这里插入图片描述
passwd这种执行文件的数据很多,包括这个文件的SUID权限、兼容Intel X86-64等级的硬件平台,使用Linux内核2.6.32的动态链接库等

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值