Command: sudo su -

I understand what su - does

  • logs you into root with the root environment
  • (as opposed to su which logs you into root with your environment)

And I understand what sudo does

  • you are root for one command

But I am unsure what this does: sudo su -

Anyone care to clarify


Solution 1:

In addition to what you said, su requires the root password and sudo requires your user password

Therefore sudo su - will put you into a root environment but it will ask you for your user password instead of the root password (once sudo has given you root privileges, su - can be executed with no password).

Solution 2:

If you are allowed (configuration of sudo) to use the su command, it asks you for your password and then logs you in as root.

Solution 3:

Short answer: you will get a root shell.

Long answer: it is different from doing 'su -' within a root shell. Once you exit (eg., Ctrl-D) from 'sudo su -', the execution of sudo will end.

Observed on Debian Wheezy with htop:

'sudo su -' has a child of 'su -', and 'su -' has a child of '-su'.

As mentioned above, root user can do 'su -' without entering password, so doing 'su -' inside of a root shell, you will have two different root shell processes. ending the inner one will let you return back to the outer one.