我必须授予我的用户运行权限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