封尘网

让学习成为一种习惯!

vim 强制修改root权限文件

在Linux系统上为了保证服务器的安全,我们都会禁止root用户远程ssh到服务器上的,虽然这样做法是有效减少不必的权限问题,但是也会带来一些麻烦。

普通用户ssh到服务器上,编辑了一个文件,并且修改了很多,保存的时候突然提示:E45: 'readonly' option is set (add ! to override)

有经验的朋友一看就知道是编辑的文件没有权限。这里我们可以利用sudo + tee命令实现普通用户修改root权限文件:

:w !sudo tee %
nameserver 10.0.10.1
nameserver 202.96.128.86
nameserver 114.114.114.114
Press ENTER or type command to continue

保存的时候使用命令:如下

:w !sudo tee %

根据提示按下回车键,

W12: Warning: File "/etc/resolv.conf" has changed and the buffer was changed in Vim as well

See ":help W12" for more info.

[O]K, (L)oad File:

输入:L

回到编辑界面后,直接退出
:q
此时成功保存了刚才普通用户修改root权限的文件了。

不过这里有个前提,此普通用户必须在sudo用户列表里存在,所以要在配置文件中添加:

echo 'swper   ALL=(ALL)       NOPASSWD: ALL' >>/etc/sudoers

在配置文件中最后添加一行,授权swper用户使用sudo。

我上面执行:w !sudo tee %命令时,没有提示输入密码,因为我在sudoers文件中配置NOPASSWD:ALL了。

提醒:本文最后更新于 2820 天前,文中所描述的信息可能已发生改变,请谨慎使用。