chmod 的权限设置

今天执行sudo 的时候突然报错:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

谷歌一下终于知道以前所忽略的一些文件权限相关的知识点。上述问题的解决方案是:

如果能够以root用户登录系统那么就修改/usr/bin/sudo 的权限

chmod 4755 /usr/bin/sudo

如果不能就比较困难了。下面介绍一下chmod 4755是怎么回事。

用过linux的人都熟悉chmod这个命令,这个命令用来改变某文件的权限,例如:

chmod 756 filename

表示将filename的权限设置为本用户(7)拥有读写执行权限,group用户拥有(5)读+执行权限,其他用户拥有读+写权限

也就是4为读权限,2位写权限,1位执行权限,组合用和来表示,这种设置保证任何1-7的权限值只有一种权限组合。

但是除了上述的读写执行权限之外还有第四种权限,例如:

chmod 4756 filename

上面的756跟上文提到的756意义相同,但是前面的4是什么意思呢?

这是文件的特殊权限,有三种:SUID,SGID,SBIT,我们只讲用的最多的第一种SUID.

SUID只能给binary设置,当设置了该权限后,binary的权限中的user上的x权限变成了s,这有什么作用呢?假设binary A的权限是755,也就是给所有用户可执行权限。但是A在执行时需要读写文件B,而B没有开放读写权限给other用户,那么other用户即使对A有执行权限也做不了什么事,这时候就需要SUID权限了,假设A设置了SUID权限,那么对于拥有可执行权限的other用户可以在执行A的过程中暂时获得对B的读写权限,那么other用就可以顺利的执行A。

于是我们就能够理解报错的意思以及解决方法的意思了。

猜你喜欢

转载自blog.csdn.net/wujianyongw4/article/details/79740857
今日推荐