Невозможно запустить «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 (к которому я переключаюсь, когда я 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 по-прежнему может изменять атрибуты и удалять атрибут immutable, но должен сделать это перед внесением изменений в файл, в отличие от стандартных разрешений no-write для файла, которые 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выходные данные, включая атрибут, который я изменил.

Связанный контент