リモート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
なぜこれが起こっているのか、そしてそれを回避する方法の説明を探しています。
この問題の特定の属性は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ページでさらに多くの情報を見つけることができます。
i
を取り除くために拡張属性を変更したところ、大丈夫でした。
>Sudo chattr -i /etc/hosts
しかし、私が変更した属性を含め、lsattrs
出力の読み方の説明が必要です。