在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
了。