Sudo错误消息

时间:2014-02-06 00:19:41

标签: linux unix permissions

我正在尝试修复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组写,而对其余用户没有任何权限。它是否正确?

2 个答案:

答案 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,这意味着:

  • 所有者权限= 7 = 4 + 2 + 1 =读取+写入+执行
  • 群组权限= 2 =写入
  • 其他权限= 0 =无权限。

所以是的,你对那条输出线的解释是正确的。

使用chmod命令

更改文件模式
chmod MODE FILE

现在,有趣的是你可以将MODE指定为八进制数字OR或指定为更易读的字符串(如下所示)。要修正警告,您需要chmod 700 /var/lib/sudo,或更有可能sudo chmod 700 /var/lib/sudo

更易读的形式需要更多解释,但是:

  1. 使用ugo表示用户,群组或其他
  2. 使用+-授予或撤消权限
  3. 使用rwx进行读取,写入或执行。
  4. 所以这里是chmod g-w /var/lib/sudo,在伪英语中,它读作更改模式:对于组,撤销写入/ var / lib / sudo 。 / p>