Intereting Posts
Достаточно ли включить опцию HAVE_RELIABLE_STACKTRACE в конфигурационном файле и собрать kernel ​​для включения Live Kernel Patching? Как настроить параметры клавиатуры и профиля при подключении к Solaris через SSH? Подсчитывать запущенные процессы с использованием wc и ps читать первую строку из сжатого файла .gz без распаковки всего файла Символьная ссылка не является рекурсивной Как определяется, какой сертификат центра сертификации будет использоваться в цепочке системных сертификатов Значение fstab для не root-разделов Извлечение файла 2.7z 7z Как игнорировать переданную директорию в поиске каталога поиска? Как поймать сигнал в командной строке? Как включить Acer Aspire One 725 0802 touchpad & F Keys? Есть ли способ отправить почту без сервера ретрансляции? Драйвер AMD Radeon на монетном дворе 18 Как указать конкретный продукт в файле udev hwdb? Сделайте systemd перезагружать только один процесс openvpn, а не всю группу

Не удалось запустить '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 

Я ищу объяснение, почему это происходит и как его обойти.

Специфическим атрибутом в этой проблеме является i , неизменяемый атрибут.

Файл был отмечен неизменным .

Это означает, что он не может быть заменен любым пользователем, включая root. Root может по-прежнему изменять атрибуты и удалять неизменяемый атрибут, но сначала должен сделать это, прежде чем вносить изменения в файл, в отличие от стандартных прав на отсутствие записи в файл, который root может просто игнорировать.

Эти атрибуты применимы только к файловым системам ext [234], насколько я знаю.

Вы можете увидеть страницу man для chattr,

 $man chattr 

для просмотра полного списка и описания доступных атрибутов.

Единственное, что я когда-либо использовал, – это я. Но некоторые из них включают:

 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 

Существуют и другие атрибуты, но они несколько эзотеричны, и многое другое можно найти на них на странице man chattr.

Я изменил расширенные атрибуты, чтобы избавиться от i и тогда я был в порядке:

 >sudo chattr -i /etc/hosts 

Но все равно хотелось бы объяснить, как читать вывод lsattrs , включая атрибут, который я изменил.