75

I recently found out that reboot works just as well as sudo reboot, from what I can tell. However, in a lot of instances, I see people saying to sudo reboot. Why is this? Are they the same, and just personal preference? Or are they different? Does sudo reboot do more than reboot?

6
  • 1
    Rebooting system by the regular user does not even sound logical. Changing runlevel of the root process (init) should be possible by root and only root user. You cannot even access filesystems shortcuts of sysrq by any other user. BUT ! You can reboot your linux by sysrq keys, it does not require sudo :) Feb 14, 2018 at 10:22
  • sudo is short for "Super-user Do". It has no effect on the command itself (this being reboot), it merely causes it to run as the super-user rather than as you. It is used to do things that you might not otherwise have permission to do, but doesn't change what gets done. If you already have permission to run reboot, then fine, just run reboot. Feb 15, 2018 at 0:26
  • This traditionally needs root to do. Old habits break hard. Feb 15, 2018 at 9:48
  • 6
    @SvetlanaLinuxenko > Rebooting system by the regular user does not even sound logical The user who is sitting at the console can just hit the power button or pull the plug if we don't let them cleanly reboot.
    – Kaz
    Feb 15, 2018 at 22:58
  • A lot of other distributions won't let you reboot if you're not root.
    – user253751
    Feb 15, 2018 at 23:46

5 Answers 5

131

On Ubuntu 14.10 and older, sudo is required.

The introduction of Systemd in 15.04 changed the way Ubuntu handles shutdown and reboot:

  1. When a single user is logged in, sudo isn't necessary. When more than one user is logged in then sudo is required.

  2. Applications can inhibit shutdown and reboot. You override these inhibitions with sudo.

  3. A single user logged in via ssh still requires sudo.

3
  • I think this includes a single user logged in mutilple times as well.
    – mckenzm
    Feb 14, 2018 at 1:58
  • 8
    It has nothing to do with the number of users connected. The ability to reboot without using sudo is dependent on being at the machine's console. If you ssh into a machine, you still won't be able to reboot it without sudo, even if you're the only user logged in. Conversely, if you're at the console, you can still reboot without sudo even if other users are connected remotely. Feb 14, 2018 at 11:47
  • 3
    @DaveSherohman: That's not necessarily true -- systemd still uses separate polkit actions depending on whether you're the only person logged in, or whether there are multiple. Meaning, the distro (or the sysadmin) could very easily make them behave differently.
    – user1686
    Feb 14, 2018 at 19:20
23

On my 14.04 machine, when I (as a normal user) type reboot, I get

reboot: Need to be root

That is the difference.

As Terrance pointed out in the comments, it works differently on later systems than mine. So you are probably seeing old writeups and/or users (like me) who have been habituated to typing sudo reboot!

7
  • Interesting! What I am wondering now, is if something changed between 14.04 and 17.10 to make it that you don't need to be root to reboot, or if there are other factors in play on my system changing that. Feb 13, 2018 at 19:06
  • 3
    @ZekeEgherman I actually think the difference happened when they changed from Upstart to Systemd for the commands. When I look at my reboot command it points as a link to /bin/systemctl. You can check yours by typing in ls -al $(which reboot).
    – Terrance
    Feb 13, 2018 at 19:07
  • @terrance, I also see the link to /bin/systemct1, what version are you? Feb 13, 2018 at 19:08
  • That is interesting! I just tried it on my 18.04 pre-release virtual machine, and it works as you say. @Terrance, I think you should write up the real answer. Feb 13, 2018 at 19:08
  • @ZekeEgherman 16.04. Ubuntu switched to Systemd at 15.04. So, 14.04 would still be Upstart then or initd if that is what you want to call it.
    – Terrance
    Feb 13, 2018 at 19:10
12

sudo rebootis used in tutorials / how-tos for compatibility reasons

While reboot might work

  • if you are root or
  • if you are on a host with systemd and
  • if no applications are blocking a reboot

sudo reboot will "always"* work, regardless of

  • whether you are root
  • whether there are other users logged in
  • whether there are applications blocking
  • whether init is systemd, System V, Upstart, whatever

* Well, it will certainly try - short of there being some kernel processes that are blocking/misbehaving it should work.

1
  • It'll always* work… if sudo is installed.
    – ave
    Feb 18, 2018 at 14:53
9

For myself many times if I type reboot it won't let me due to inhibitors from Chrome when watching YouTube and other opened tabs. So I'm forced to use sudo reboot--a bigger hammer.

This in Ubuntu 16.04

6

Thanks for the discussion, I'm glad to understand this now!

As Terrance mentioned, in version 15.04, they switched from Upstart to Systemd for the commands. This change means that reboot no longer requires root privileges.

As for why the *nix community instructs to sudo reboot, there are a few potential reasons:

  • Habit - People were so used to having to sudo reboot to reboot, they continue to do it despite the fact it is not needed
  • Non-updated users - The people instructing to sudo reboot are on versions of Ubuntu lower than 15.04, or other distros that use Upstart for commands.

  • Compatibility - This is what seems the most plausible to me: people are instructing to sudo reboot because it is guaranteed to reboot across all *nix systems, no matter what.

Additional note: from user535733's answer:

The introduction of systemd in 15.04 changed the way Ubuntu handles shutdown and reboot:

  1. When a single user is logged in, sudo isn't necessary. When more than one user is logged in, then sudo is required.

  2. Applications can inhibit shutdown and reboot. You override these inhibitions with sudo.

Not the answer you're looking for? Browse other questions tagged or ask your own question.