用户不在sudoers文件中。此事件将被举报


24

我需要安装一个软件包。为此,我需要root访问。但是系统说我不在sudoers文件中。尝试编辑一个时,它会发出类似的抱怨!如果我无权编辑自己,该如何将自己添加到sudoers文件中?

我已经安装了该系统,并且只有管理员。我能做什么?

编辑:我已经尝试过visudo。它要求我首先要在sudoers中。

amarzaya@linux-debian-gnu:/$ sudo /usr/sbin/visudo 

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for amarzaya: 
amarzaya is not in the sudoers file.  This incident will be reported.
amarzaya@linux-debian-gnu:/$ 

4
好吧,显然user not(is) the sudoers file。(标题中的错字)
Hello71,2010年

8
您现在在调皮的名单上-xkcd.com/838
亚伦·牛顿

Answers:


18

如果您可以在/etc/sudoers没有sudo或root访问权限的情况下添加自己,那将是一个安全漏洞。基本上,任何人都可以使自己扎根。

基本上,您需要根据站点策略要求该计算机的管理员添加您或为您安装软件包。

您还应该确保使用visudo编辑sudoers文件-它将在写入文件之前检查语法是否正确。而且,您可以将vi以外的其他编辑器与visudo一起使用。默认情况下,它将使用您设置为的任何内容$EDITOR,如果没有设置,则可以使用

# EDITOR=nano visudo

改用nano编辑器。


5
我是管理员,因为这是我的机器,并且我已经安装了此系统,但是它没有帮助:(
Sergiy Belozorov 2010年

9
如果是您的系统,则在安装时应该已经为root用户输入了密码。因此,以“ root”身份登录,然后执行visudo任务。
Hamish Downer 2010年

确实。我的错。我忘记了在安装时输入的密码。
谢尔盖·别洛佐罗夫

24

以root用户身份登录并用于/usr/sbin/visudo编辑文件并添加用户名。正常的vi / vim将无法编辑文件。

最简单的方法是直接向下浏览,直到看到“ root ALL=(ALL) ALL” 行,并使用相同的语法(yourusername ALL=(ALL) ALL)在该行下添加自己。或者,如果您想给自己更多的特权,则可以阅读sudoers联机帮助页


它要求我首先在sudoers列表中才能运行visudo。我已经安装了这个Debian,没有其他管理员。
谢尔盖·别洛佐洛夫

如果您以root用户身份登录,则无需运行sudo visudo; 快跑吧/usr/sbin/visudo。但是,您似乎已经从其他答案的注释中找到了答案。
Ricket 2010年

将相应的用户添加到“ sudo”或“ sudoers”(取决于发行版)组还不够吗?可悲的是,它不起作用,但是我可以发誓这曾经起作用...?
格里戈尔

5

只需键入命令:

$ su

并要求输入密码“ root”。打字和繁荣...它的工作!

这个问题是我的错误。由于我当时创建了用户名和密码,因此又回到了工厂。


谢谢,这真的很有帮助,并节省了我的培根!但是我很好奇,为什么简单地添加此命令然后再输入root密码,就可以允许特权提升……。这似乎违反了“用户不在sudoers文件中。将报告此事件”消息的目的
Sol

1

扎根后,最简单的方法可能是:

echo 'amarzaya ALL=(ALL) ALL' >> /etc/sudoers

7
您应该确保使用visudo编辑sudoers文件,而不是直接编辑它或将文本回显到该文件。这将确保它在语法上是正确的,并确保您不会将自己锁定在访问范围之外,也不会授予他人不当访问权限。
6

1

如果您的sudoers文件已经包含这种行

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

然后,最干净的处理方式可能是将admin组授予用户。例如,将用户 oracle 添加到admin 组中

usermod -aG admin oracle

那就是我想要的。对我来说,最干净的也是,不会混淆sudoers文件。
webjunkie 2012年

1
正确的命令是usermod -g oracle admin
kvanberendonck

-1:语法为usermod -g $group $user。您可能正在考虑adduser语法,即adduser $user $group
Blacklight Shining

1
…实际上,您最有可能想要usermod -aG $group $user-g将用户的主要组设置为您指定的组,-G如果没有,-a则将用户从未列出的组中删除。-g还将更改用户主目录中上一个组拥有的所有文件的组所有权。因此,如果您像我一样,并且将umask设置为007
Blacklight,

1
@BlacklightShining。你是对的。先前的评论者提出了错误的语法,并且由于oracle通常也是一个小组,因此确实存在混淆的余地。我不应该“更正”。
Alain Pannetier 2014年

-1

如果仍然su可以使用进行root访问,则可以使用此单行代码将自己添加到/etc/sudoers/

su -c 'echo $USER ALL=(ALL)ALL >> /etc/sudoers'

要激活更改,请注销并再次登录。例如,结束您的X会话或通过shell enter注销exit



-1

如果无法使用该sudo命令,则可以使用以下方法:

  1. Ctrl+ Alt+F1
  2. 如果用户不是root用户,则注销用户
  3. 以root身份登录
  4. 使用root特权
  5. 注销(exit)– Ctrl+ Alt+ F7进入GUI

-1:这仅在实际具有GUI的某些本地环境中有效。
Blacklight Shining

-1

您需要做的就是将您添加<username>whell组中。

# usermod -aG whell username

然后使用您的用户名登录并享受:)


-3

首先使用以下内容登录:

$ su

然后继续:

$ sudo apt-get update

或任何正常的


1
您不需要su-sudo做到了。
西蒙·希恩

它们实际上并不是完全相同的东西。sudo是“以超级用户身份执行”,但是您使用用户密码登录。su是“切换用户”,默认情况下(不带参数)它将尝试切换到root用户,在这种情况下,您需要输入root密码。但是您也是正确的-在su之后使用sudo是多余的,因为您已经是root用户。
亚伦·牛顿

@ aaron.newton我实际上将其读为Switch User和DO;您可以选择任何用户以与该-u标志一样运行命令。它主要用于根,但也是如此su
Blacklight Shining

@ aaron.newton我实际上将其读为Switch User和DO;您可以选择任何用户以与该-u标志一样运行命令。它主要用于根,但也是如此su
Blacklight Shining
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.