Sudo

無法編輯 visudo

  • December 3, 2015

我必須授予我的使用者執行權限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,然後使用命令將我的使用者添加到這個組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)

解決方案是什麼?

安裝 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

引用自:https://unix.stackexchange.com/questions/247129