|Original author(s)||Robert Coggeshall, Cliff Spencer|
|Developer(s)||Todd C. Miller|
|Initial release||Around 1980|
1.9.10 / March 3, 2022
sudo (// or //) is a program for Unix-like computer operating systems that enables users to run programs with the security privileges of another user, by default the superuser. It stands for "superuser do", as originally that is all it did, and it is its most common usage; however, a common false etymology is "substitute user, do", because sudo can run a command as other users as well.
Unlike the similar command su, users must, by default, supply their own password for authentication, rather than the password of the target user. After authentication, and if the configuration file (typically
/etc/sudoers) permits the user access, the system invokes the requested command. The configuration file offers detailed access permissions, including enabling commands only from the invoking terminal; requiring a password per user or group; requiring re-entry of a password every time or never requiring a password at all for a particular command line. It can also be configured to permit passing arguments or multiple commands.
Robert Coggeshall and Cliff Spencer wrote the original subsystem around 1980 at the Department of Computer Science at SUNY/Buffalo. Robert Coggeshall brought sudo with him to the University of Colorado Boulder. Between 1986 and 1993, the code and features were substantially modified by the IT staff of the University of Colorado Boulder Computer Science Department and the College of Engineering and Applied Science, including Todd C. Miller. The current version has been publicly maintained by OpenBSD developer Todd C. Miller since 1994, and has been distributed under an ISC-style license since 1999.
In November 2009 Thomas Claburn, in response to concerns that Microsoft had patented sudo, characterized such suspicions as overblown. The claims were narrowly framed to a particular GUI, rather than to the sudo concept.
This section needs additional citations for verification. (July 2020)
Unlike the command su, users supply their personal password to sudo (if necessary) rather than that of the superuser or other account. This allows authorized users to exercise altered privileges without compromising the secrecy of the other account's password. After authentication, and if the configuration file permits the user access, the system invokes the requested command. sudo retains the user's invocation rights through a grace period (typically 5 minutes) per pseudo terminal, allowing the user to execute several successive commands as the requested user without having to provide a password again.
As a security and auditing feature, sudo may be configured to log each command run. When a user attempts to invoke sudo without being listed in the configuration file, an exception indication is presented to the user indicating that the attempt has been recorded. The root user will be alerted via mail and an entry is recorded in the system.
/etc/sudoers file contains a list of users or user groups with permission to execute a subset of commands while having the privileges of the root user or another specified user. The program may be configured to require a password.
In some system distributions, sudo has largely supplanted the default use of a distinct superuser login for administrative tasks, most notably in some Linux distributions as well as Apple's macOS. This allows for more secure logging of admin commands and prevents some exploits.
Tools and similar programs
The program runas provides similar functionality in Microsoft Windows, but it cannot pass current directories, environment variables or long command lines to the child. And while it supports running the child as another user, it does not support simple elevation. A true su and sudo for Windows that can pass all of that state information and start the child either elevated or as another user (or both) is included with Hamilton C shell.
Graphical user interfaces exist for sudo – notably gksudo – but are deprecated in Debian and no longer included in Ubuntu. Other user interfaces are not directly built on sudo, but provide similar temporary privilege elevation for administrative purposes, such as pkexec in Unix-like operating systems, User Account Control in Microsoft Windows and Mac OS X Authorization Services.
Sudoedit is a program that symlinks to the sudo binary. When sudo is run via its sudoedit alias, sudo behaves as if the -e flag has been passed and allows users to edit files that require additional privileges to write to.
- Miller, Todd C. "A Brief History of Sudo". Retrieved 15 November 2018.
- "Sudo News". Retrieved 16 September 2021.
- Todd C. Miller (2011-06-17). "Sudo License". sudo.ws. Retrieved 2011-11-17.
- Miller, Todd C. "Troubleshooting tips and FAQ for Sudo". Retrieved 2009-11-20.
- "How do YOU pronounce "sudo"?". Ars Technica.
- Cohen, Noam (May 26, 2008). "This Is Funny Only if You Know Unix". The New York Times. Retrieved April 9, 2012.
- By (2014-05-28). "Interview: Inventing The Unix "sudo" Command". Hackaday. Retrieved 2022-01-10.
- "Aaron Toponce : The Meaning of 'su'".
- "Sudo - ArchWiki" (MediaWiki). wiki.archlinux.org.
- Haeder, A.; Schneiter, S. A..; Pessanha, B. G.; Stanger, J. LPI Linux Certification in a Nutshell. O'Reilly Media, 2010. p. 409. ISBN 978-0596804879.
- Miller, Todd C. "A Brief History of Sudo". Retrieved 2021-02-08.
- Lilly, Paul. "Microsoft has Patented "sudo." Yes, the Command". Retrieved 2009-11-13.
- Thomas, Claburn (2009-11-16). "Does New Microsoft Patent Infringe On Unix Program Sudo? Some in the open source community suspicious of Microsoft's intent". Dark Reading. Retrieved 2010-11-29.
A patent granted to Microsoft (NSDQ: MSFT) has stirred up worry that world's largest software company wants to claim Unix's "sudo" as its own. [...] In short, suspicions about this patent are overblown.
- Eaton, Nick (November 12, 2009). "Did Microsoft just sneakily patent an open-source tool?". seattlepi.com. Retrieved April 24, 2011.
- "Sudo Manual". Retrieved 2021-02-08.
- "RootSudo". Community Ubuntu Documentation. help.ubuntu.com. 2011-11-08. Retrieved 2011-11-17.
- "Top Ten Mac OS X Tips for Unix Geeks". MacDevCenter.com. Retrieved 2011-11-17.
- "SELinux Lockdown Part Five: SELinux RBAC". Retrieved 2012-11-17.
- "su". Hamilton Laboratories. Retrieved August 17, 2015.
- "Predefined aliases: sudo". Hamilton Laboratories. Retrieved August 17, 2015.
- Bicha, Jeremy (December 30, 2017). "Remove gksu from Ubuntu". Canonical, which owns Launchpad. Retrieved January 10, 2020.
- "Software Packages in "bionic"". Canonical. Retrieved January 10, 2020.
- "Introduction to Authorization Services Programming Guide". developer.apple.com. Retrieved 2011-11-17.
- "sudo-1.8.26 – execute a command as another user". OpenBSD ports. 2018-11-16.
- Bennett, Jonathan (2021-01-29). "This Week In Security: Sudo, Database Breaches, And Ransomware". Hackaday. Retrieved 2021-05-24.
- "sudoedit(8) - Linux manual page". man7.org. Retrieved 2021-05-24.