无法编辑 visudo

无法编辑 visudo

我必须授予我的用户运行权限sudo。我正在使用 CentO

# uname -a
Linux lab-hv1-centos1 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

并具有 root 访问权限。

很多资源建议运行visudo并添加行,例如

myuser    ALL=(ALL) ALL

但尝试运行visudo(甚至less /etc/sudousers)打印消息

E437: terminal capability "cm" required
Press ENTER or type command to continue

有些文章建议ncurses-term使用yum install ncurses-term.我已经成功地做到了这一点,而且这里列出的终端数量确实ls /usr/share/terminfo/d很高。然而它对我没有帮助:运行时的错误消息visudo仍然打印出来,我无法编辑这个文件。

所以,我想将我的用户添加到 sudo 组。但我的机器上不存在这个组。我使用创建了该组groupadd sudo,然后使用 command 将我的用户添加到该组useradd -G sudo myuser

这工作成功,但当我尝试运行任何命令时,sudo我仍然收到错误消息:

$ sudo ls
[sudo] password for myuser:
myuser is not in the sudoers file.  This incident will be reported.
$

错误信息确实正确。myuser属于名为的组sudo,但创建该组的是我。它只是被称为sudo,并不意味着属于该组的用户有权限。我相信如果我可以添加像这样的行

myuser    ALL=(ALL) ALL

或者

sudo    ALL=(ALL) ALL

/etc/sudousers已完成,但由于上述错误,我无法执行此操作 ( terminal capability "cm" required)

解决办法是什么?

答案1

安装 ncurses-term 软件包后是否启动了新的 shell?

如果您具有 root 访问权限,您可以考虑使用以下命令将文件复制/etc/sudoers/root/sudoers.backup并手动添加该行:

echo "myuser ALL=(ALL) ALL" >> /etc/sudoers

如果您想授予组而不是用户的访问权限,则需要在组名前添加百分号字符:

echo "%sudo ALL=(ALL) ALL" >> /etc/sudoers

请记住,最后一个匹配规则将在 sudoers 文件中有效,因此仍然建议使用编辑器编辑 sudoers 文件作为推荐方式。

编辑:

$TERM另外一个思考点,你的变量的值是多少?尝试TERM=vt100在发布之前使用它进行设置visudo或使用以下其中一项:

TERM=vt100 visudo
TERM=xterm visudo
TERM=dumb visudo

相关内容