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
輸出,包括我更改的屬性。