我正在尝试修复Debian服务器上的一些权限问题。我的团队中的某个人正在改变权限,在这个过程的某个地方,事情变得搞砸了。每当我现在sudo,我收到此错误消息/警告:
sudo: /var/lib/sudo writable by non-owner (040720), should be mode 0700
我对括号中的数字感到困惑。这是什么意思?此外,可能运行什么命令来设置此类权限?应该如何设置这些权限?
/var/lib/sudo
权限为:
drwx-w---- 5 root sudo 4096 Feb 4 02:36 sudo
我理解的意思是:这个目录是root用户可读写的,可以由sudo组写,而对其余用户没有任何权限。它是否正确?
答案 0 :(得分:4)
040720值是16位值的八进制表示,用于在inode(st_mode
的{{1}}元素)中存储权限和文件类型信息。 4个最低有效(八进制)数字表示权限,其他数字表示文件类型。通过推理,struct stat
表示'目录'。 0720权限是读取,写入,执行用户(所有者),写入组(这是被抱怨的),并且没有其他人的访问权限。 0720的前导0表示setuid,setgid和sticky位都为零。
您可以通过运行以下命令来修复错误报告:
040
您可能希望以递归方式执行此操作(sudo chmod 700 /var/lib/sudo
),但要谨慎使数据文件不可执行。您可能需要修复所有者;该目录由chmod -R
正确拥有,但您可能需要修复目录下的所有者。为此,您可以使用它来设置用户(root
)和组(root
):
sudo
答案 1 :(得分:3)
权限模式的最后三位数分别适用于所有者,组和其他用户,并且是以下值的总和:
4用于读取(r)
2用于写(w)
1表示执行(x)
因此,如果/ var / lib / subo是*** 720,这意味着:
所以是的,你对那条输出线的解释是正确的。
使用chmod
命令
chmod MODE FILE
现在,有趣的是你可以将MODE指定为八进制数字OR或指定为更易读的字符串(如下所示)。要修正警告,您需要chmod 700 /var/lib/sudo
,或更有可能sudo chmod 700 /var/lib/sudo
。
更易读的形式需要更多解释,但是:
u
,g
或o
表示用户,群组或其他+
或-
授予或撤消权限r
,w
或x
进行读取,写入或执行。所以这里是chmod g-w /var/lib/sudo
,在伪英语中,它读作更改模式:对于组,撤销写入/ var / lib / sudo 。 / p>