无法运行“sudo chmod +w /etc/hosts”

无法运行“sudo chmod +w /etc/hosts”

ESXi我以用户 xyz身份登录到我的远程虚拟机(已用完)。我想更改我的/etc/hosts以添加一些默认情况下不可见的网络名称。

我首先尝试跑步

sudo vi /etc/hosts

但当我进入时vi,它仍然告诉我该文件是只读的。以下是特权:

>ls -l /etc/hosts
-rw-r--r-- 1 root root 416 2013-06-19 08:08 /etc/hosts

我还注意到几乎所有其他文件/etc都有lsattr一个-----------------e-hosts只有----i------------e-.例如:

>lsattr /etc
...
-----------------e- ./python
----i------------e- ./hosts
...

然后我尝试这样做chmod,这就是我得到的:

>sudo chmod +w /etc/hosts
chmod: changing permissions of `/etc/hosts': Operation not permitted

我认为这很奇怪,因为 root (当我切换到 root 时sudo)应该能够做任何事情。我的sudoers文件看起来很普通:

  1 # /etc/sudoers
  2 #
  3 # This file MUST be edited with the 'visudo' command as root.
  4 #
  5 # See the man page for details on how to write a sudoers file.
  6 #
  7 
  8 Defaults        env_reset
  9 
 10 # Host alias specification
 11 
 12 # User alias specification
 13 
 14 # Cmnd alias specification
 15 
 16 # User privilege specification
 17 root    ALL=(ALL) ALL
 18 
 19 # Allow members of group sudo to execute any command after they have
 20 # provided their password
 21 # (Note that later entries override this, so you might need to move
 22 # it further down)
 23 %sudo ALL=(ALL) ALL
 24 #
 25 #includedir /etc/sudoers.d
 26 
 27 # Members of the admin group may gain root privileges
 28 %admin ALL=(ALL) ALL

我正在寻找解释为什么会发生这种情况以及如何解决它。

答案1

本期的具体属性i不可变的属性。

该文件已被标记不可变的

这意味着包括 root 在内的任何用户都无法更改它。 root 仍然可以更改属性并删除不可变属性,但必须先这样做,然后才能更改文件,这与 root 可以简单忽略的文件的标准无写权限不同。

据我所知,这些属性仅适用于 ext[234] 文件系统。

您可以查看 chattr 的手册页,

$man chattr

查看可用属性的完整列表和描述。

我实际使用过的唯一一个是 i.但其他一些包括:

A: atime remains unmodified when accessed
a: can only be opened for writing in append-only mode
c: compressed automatically
j: all data is written to the journal before being written to the file
s: blocks are zeros when file is deleted
u: contents of file are saved when file is deleted for later undelete

还有其他属性,但它们有些深奥,可以在 chattr 手册页中找到更多信息。

答案2

我更改了扩展属性以摆脱i然后我就没事了:

>sudo chattr -i /etc/hosts

但仍然想要解释如何读取lsattrs输出,包括我更改的属性。

相关内容