Linux:chmod 变更用户权限

基本使用

chmod(应该是change mode的意思?)用于在Linux终端中修改用户权限(读/写/运行),也就是 set permissions

chmod permissions file

或者是:

chmod permission1_permission2_permission3 file

需要注意,Linux下共有三种类型的用户:

  • Owner:文件所有者
  • Group:文件所有组
  • World:其他用户

所以我们需要同时设定三种用户对应的权限,即分别设定对应文件三种用户是否可读,可写,可执行,例如我们通过命令 ls -l 往往可以看到:

drwxr-xr-x username usergroup ....

可以看到最前面的一系列字符,首先 d 代表的是 directory 即这是一个目录,username文件所有者usergroup文件所有组,后面的9个字符其实就是对应三种用户的三个权限((r)ead (w)rite e(x)ecute):

  • rwx:文件所有者具有读、写、执行权限
  • r-x:文件所有组具有读和执行权限
  • r-x:其他用户具有读和执行权限

而对于计算机存储来说,我们只需要一个 bit0 或者 1 就可以表示是否具有一个权限,那显然对于三种权限我们只需要 xxx 三个 bit 即可,并且一个值对应特定的权限,例如:

chmod 755 some_file.txt

这个例子的 755 分别对应上述三种用户对象的权限:

  • 7:二进制表示为 111,即表示文件所有者 rwx 三种权限都有
  • 5:二进制表示为 101,即表示文件所有组权限为 r-x
  • 5:同理

如果你打算对目录下面的所有文件都设置权限,可以通过 -R 参数,表示 recursive,即递归的意思,即对指定的目录递归应用所指定的权限:

chmod -R 755 some_dir

其他

s 权限

chmod 还可以设置一些比较特殊的权限,例如 s,这个权限表示 setuid,表示将会根据这个 setuid 位来决定可执行文件的执行用户,或者是目录下的一些行为的结果。
例如下面的一个文件:

-rwsrw-r-x  root root passwd

这个是在 /usr/bin 下面的一个系统自带的可执行文件,即 passwd 命令,所有用户都可以通过这个命令来修改自己的密码。但是,用户密码是存放在 /etc/shadow 文件里面,而这个文件只有 root 用户才有权限进行修改。这样就与上述场景矛盾了,因为通常来说,一个用户执行的可执行文件,也只会拥有这个用户本身的权限,这也就意味着按理来说,普通用户通过 passwd 无法修改自己的密码,因为他们没有修改 /etc/shadow 的权限!

而这里就体现了 setuid 位的意义,你会发现 passwd 的文件所有者的权限为 rws,对于设置了 setuid 位的可执行文件,任何用户在执行这个文件时,都将以文件所有者这个用户来执行,也就是说,事实上每个普通用户在修改自己的密码的时候,都是借用了 root 来修改的,而 root 用户并不需要知道普通用户想要如何修改自己的密码!这样就可以在保证了系统文件的权限控制的同时,允许用户拥有一定的自我管理能力。这种做法往往能体现在一些权限管理的设计上面,例如我们可以为用户提供一些服务,而将这些服务涉及到的一些敏感操作封装在由系统或者管理员提供的渠道或者方法之中,系统不关注用户的操作内容,而用户也不需要关注系统如何实现自己的操作,这样彼此之间都可以隔离。

t 权限

这是粘滞位权限,借用了 9 9 9 位权限里面的最后一位

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值