Linux系统下的文件权限操作

0x00 前言

Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。这也是Linux有别于Windows的机制,也是基于这个权限机制,Linux可以有效防止病毒自我运行,因为运行的条件是必须要有运行的权限,而这个权限在Linux是用户所赋予的,通常使用chmod命令来修改文件权限。

0x01 数字法

  • 使用数字代替r、w、x,r等同于4,w等同于2,x等同于1,-等同于0

  • 权限组合使用那个数字的和来表示,例如r-w(5)、rw-(6)、rwx(7)

  • 使用三个数字来表示文件对拥有者、所属组、和其他三种角色的权限设定

  • $chmod 700 cat #cat的权限为-rwx------

0x02 文字法

  • 引入u、g、o、a分别代表拥有者、所属组、其他和全部
  • 引入三个操作符+、-、=分别代表增加、减去、设定
  • "u+w"表示给拥有者增加w权限
  • "u=rwx,go=rx"给拥有者设定rwx权限,给所属组和其他设定rx权限
  • chmod a-x cat #去除cat文件的执行权限

0x03 文件权限 SetUID

文件权限中不仅有rwx,还有sts可以出现在文件拥有者的x权位上,称为Set UID

  • ls -l /bin/su 查看su这个命令的权限是-rwsr-xr-x 1 root root 32184 Apr 11 14:50 /bin/su,可以看出s占用了x的权位。

注意

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

例子

  • 执行su,任何用户都会获得root权限,因为su的拥有者是root
  • 该权限仅在执行的su命令中有效,su能够切换用户权限的原理
  • u+s设置SUID权限
  • 需要提供给普通用户,但是又需要root权限才能正确执行的程序都拥有SUID
  • SUID是实际用户和有效用户发生不一致的触发条件
  • chmod u+s /bin/kill #现在当普通用户执行kill时,因为kill被授予了SetUID权限,在执行的一瞬间具有了root权限,用户想关闭任何服务都可以

还有就是sudo假借root权限也是如此,普通用户在使用sudo执行命令的过程中拥有root权限,但是命令结束后还是普通用户的权限,但是需要注意的是,Linux下如果sudo命令有效配置服务器时方便,但也是危险的。sudo su -可以让普通用户用自己的密码就能登录到root用户,所以有时候Set UID也很危险。

禁用sudo(test用户为例)–/etc/sudoers

$ groups  #查看当前用户所属用户组,如果有sudo用户组,则删除
$ sudo gpasswd -d test sudo  #将test从sudo组中删除
重启发现没有test用户没有sudo了
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值