2014-02-06 171 views
2

我正试图修复Debian服务器上的一些权限问题。我的一个团队中的某个人正在改变权限,并且在这个过程的某个地方,事情被搞砸了。每当我现在sudo,我得到这个错误信息/警告: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 

我理解的意思:这个目录是由须藤组读取根写的可执行文件,并且写的,且为用户剩下没有特权。它是否正确?

回答

3

许可模式的最后三个数字分别是所有者,组和其他用户,并且是一个总和下列值:

4是用于读(R)

2是用于写(W)

1是用于执行(x)

所以,如果在/ var/lib中/苏伯是*** 720,这意味着:

  • 所有者权限= 7 = 4 + 2 + 1 =读+写+执行
  • 组权限= 2 =写出
  • 其他权限= 0 =没有权限。

所以,是的,你对这条产出线的解释是正确的。

文件模式与chmod命令

chmod MODE FILE 

改变现在,有趣的事情是,你可以指定模式作为一个八进制数字或一个以上的人可读的字符串(阅读以下)。要修复警告,您可以chmod 700 /var/lib/sudo,或更可能的sudo chmod 700 /var/lib/sudo

更可读的形式需要更多一点的说明中,虽然:

  1. 使用ug,或o来指示用户,组,或其他
  2. 使用+-授予或撤销权限
  3. 使用rwx进行读取,写入或执行。

所以这里会是chmod g-w /var/lib/sudo,其中,在伪英语,内容变化模式:该组撤销的/ var/lib中/须藤的写入。

4

040720值是在inode(st_mode元素为struct stat)中存储权限和文件类型信息的16位值的八进制表示形式。 4个最低有效(八进制)数字表示权限,其他数字表示文件类型。通过推断,040表示'目录'。 0720权限是读取,写入,执行用户(所有者),写入组(写入正在被抱怨的内容),并且不允许其他人访问。 0720的前0表示setuid,setgid和sticky位全部为零。

您可以通过运行以下命令来修复错误报告:

sudo chmod 700 /var/lib/sudo 

你可能想这样做递归(chmod -R),但持谨慎态度使数据文件的可执行文件,不应该。您可能需要修复所有者;该目录由root正确拥有,但您可能需要修复目录下的所有者。对于这一点,你可以用它来设置这两个用户(root)和组(sudo):

sudo chown -R root:sudo /var/lib/sudo