web-dev-qa-db-ja.com

'Sudo chmod + w / etc / hosts'を実行できません

リモートVM(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内の他のほとんどすべてのファイルに-----------------e-lsattrがあり、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

ルート(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

なぜこれが起こっているのか、そしてそれを回避する方法の説明を探しています。

2
amphibient

この問題の特定の属性はi不変属性です。

ファイルは不変とマークされました。

これは、rootを含むすべてのユーザーが変更できないことを意味します。ルートは引き続き属性を変更して不変属性を削除できますが、ルートが単に無視できるファイルへの標準の書き込み禁止権限とは異なり、ファイルに変更を加える前に最初に変更する必要があります。

私の知る限り、これらの属性はext [234]ファイルシステムにのみ適用できます。

Chattrのmanページを見ることができます。

$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

他の属性もありますが、それらはやや難解であり、chattrのmanページでさらに多くの情報を見つけることができます。

3
SuperMagic

iを取り除くために拡張属性を変更したところ、大丈夫でした。

>Sudo chattr -i /etc/hosts

しかし、私が変更した属性を含め、lsattrs出力の読み方の説明が必要です。

1
amphibient