Linux

Using sudo in Linux: A Complete Guide to Configuration and Security

This guide thoroughly explains how to properly use the sudo command for elevated privilege tasks. You'll learn to configure the sudoers file, add users, and apply security best practices.

Updated at February 16, 2026
10-15 min
Medium
FixPedia Team
Применимо к:Ubuntu 22.04+Debian 12+CentOS 8+Fedora 36+

Introduction / Why This Matters

The sudo command is a fundamental Linux administration tool that allows you to perform tasks as the superuser (root) without switching accounts. It enforces the principle of least privilege: you work as a regular user and elevate privileges only when necessary. This guide will help you use sudo confidently, configure permissions for other users, and avoid common pitfalls—which is critically important for system security.

Prerequisites / Preparation

Before you begin, ensure:

  1. You have terminal access (locally or via SSH).
  2. Your user already has sudo privileges (usually the first user created during installation). You can verify this with sudo -l.
  3. The sudo package is installed (it's included by default in most modern distributions).

Step 1: Verify sudo Availability

First, check if the utility is installed and accessible to your user.

# Check where sudo is located
which sudo
# Expected output: /usr/bin/sudo

# Verify you have permission to use sudo
sudo -v
# If the password is correct and the user is in the sudo group, output will be empty.
# If the user is not in sudoers, you'll see: "user is not in the sudoers file"

If which sudo returns nothing, install the package:

  • Debian/Ubuntu: sudo apt update && sudo apt install sudo
  • RHEL/CentOS/Fedora: sudo yum install sudo or sudo dnf install sudo

Step 2: Basic Syntax and Usage

The basic syntax is simple: sudo <command>. sudo will prompt for the current user's password (not the root password) and execute the command with root privileges.

# Everyday usage examples
sudo apt update                 # Update package list (Debian/Ubuntu)
sudo dnf install nginx          # Install a package (Fedora)
sudo systemctl restart sshd     # Restart a service
sudo nano /etc/fstab            # Edit a system file

⚠️ Important: sudo caches authentication for 15 minutes by default. Within this window, subsequent sudo commands won't prompt for a password. You can reset the timer with sudo -k.

Step 3: Configuring the sudoers File via visudo

Global privilege rules are stored in /etc/sudoers. Never edit this file with a regular text editor! Always use visudo, which validates syntax before saving, preventing system lockouts.

# Open the sudoers file for editing
sudo visudo

By default on Ubuntu/Debian, you'll see:

%sudo   ALL=(ALL:ALL) ALL

This means: all users in the sudo group can run any command as any user/group on any host.

Adding Privileges for a Specific User

Add this line to the end of the file (replace alex with the actual username):

alex   ALL=(ALL) ALL

This grants user alex full sudo privileges on all hosts.

Creating a Command Alias

For convenience, you can define a command alias:

Cmnd_Alias SOFTWARE = /usr/bin/apt, /usr/bin/dnf, /usr/bin/yum, /usr/bin/systemctl restart nginx
alex   ALL=(ALL) NOPASSWD: SOFTWARE

User alex will be able to run only the listed commands without a password.

💡 Tip: For RHEL-based distributions (CentOS, Fedora), the default group is often wheel. Check which group is configured in sudoers.

Step 4: Adding a User to the sudo Group

The most common way to grant privileges is to add a user to an existing group with sudo access (usually sudo or wheel).

# Add user 'ivan' to the 'sudo' group
sudo usermod -aG sudo ivan

# Check which groups the user belongs to
groups ivan
# Output should include: ivan : ivan sudo

⚠️ Important: After adding a user to the group, they must log out completely and log back in (or restart their SSH session) for changes to take effect. Simply refreshing the sudo token (sudo -k) does not apply new group privileges.

Step 5: Practical Examples and Advanced Scenarios

Running a root shell

# Get an interactive root shell (not recommended for daily use)
sudo -i

# Or run a command as root while preserving the current environment
sudo -s

Running a command as another user

# Run a command as user 'www-data' (useful for web servers)
sudo -u www-data systemctl reload apache2

Editing files with elevated privileges

# Direct editing via nano/vim
sudo nano /etc/hosts

# Alternative: use 'sudoedit' (opens a copy in $EDITOR, then safely replaces the original)
sudoedit /etc/ssh/sshd_config

Timeout adjustment (caching duration)

To reduce the sudo cache lifetime (e.g., to 5 minutes), add to /etc/sudoers:

Defaults timestamp_timeout=5

Set to 0 to require a password for every command, or -1 to never ask (insecure).

Step 6: Security and Best Practices

  1. Avoid NOPASSWD for all commands. Granting passwordless access is poor practice. If needed, restrict it to specific commands only.
  2. Don't use sudo su or sudo -i for routine tasks. It's better to run the needed command directly via sudo.
  3. Regularly audit /etc/sudoers and /etc/sudoers.d/. Remove unnecessary entries.
  4. Use aliases for grouping hosts or commands. This simplifies management in multi-user environments.
  5. Configure logging. By default, all sudo commands are logged to /var/log/auth.log (Debian/Ubuntu) or /var/log/secure (RHEL). Check these files during incident investigations.

Step 7: Common Errors and Troubleshooting

Error: "user is not in the sudoers file. This incident will be reported."

Cause: The user isn't added to the sudo group or lacks a corresponding sudoers entry. Solution:

  1. Log in as root (via recovery mode if sudo is unavailable) or use physical console access.
  2. Add the user to the group: usermod -aG sudo <username>.
  3. Alternatively, edit sudoers via visudo and add a line for the user.

Error: "sudo: command not found"

Cause: The sudo package is not installed. Solution: Install it using your distribution's package manager (see Step 1).

Error: "sudo: no tty present and no askpass program specified"

Cause: Attempting to run sudo non-interactively (e.g., in a script or CI/CD) without a password prompt. Solution: Configure NOPASSWD for specific commands in sudoers, or use tools like sshpass (with caution!). In CI/CD, prefer service accounts with limited privileges.

Syntax error in sudoers

Cause: Editing sudoers with a regular editor introduced a syntax error. Solution: Run sudo visudo—it will point to the erroneous line. If the system is locked, boot into recovery mode and fix the file manually.

Verification

After configuration, ensure everything works correctly:

  1. Check group membership: Run groups (without sudo). The output should include the sudo (or wheel) group.
  2. Test command: Run a command requiring privileges, e.g., sudo whoami. Expected output: root.
  3. Check privilege list: sudo -l will show which commands you can run without a password (if any).
  4. Validate sudoers syntax: sudo visudo -c (the -c flag checks syntax). Output /etc/sudoers: parsed OK means the file is valid.

Potential Issues

Issue: Sudo privileges don't apply after adding to the group. Solution: The user must log out and back in. In the current session, check group IDs with id. If the sudo group is missing, re-login.

Issue: Need to grant sudo to a user but have no visudo access. Solution: If you already have root access (e.g., via GRUB recovery mode), mount the root filesystem and edit /etc/sudoers via visudo in a chroot environment.

Issue: Too many entries in sudoers, making management difficult. Solution: Use the /etc/sudoers.d/ directory. Place separate configs for different users/groups there (e.g., /etc/sudoers.d/ivan). Files in this directory are automatically included in the main configuration. Ensure they have permissions 0440.

sudo touch /etc/sudoers.d/ivan
sudo chmod 440 /etc/sudoers.d/ivan
sudo visudo -f /etc/sudoers.d/ivan  # edit via visudo

F.A.Q.

What is sudo and why is it needed in Linux?
How to add a user to the sudo group?
Why does sudo ask for a password even though I already entered it?
How to safely configure passwordless sudo for a specific command?

Hints

Checking sudo command availability
Basic syntax and usage
Configuring the sudoers file via visudo
Adding a user to the sudo group
Practical examples and restrictions
Security and best practices
FixPedia

Free encyclopedia for fixing errors. Step-by-step guides for Windows, Linux, macOS and more.

© 2026 FixPedia. All materials are available for free.

Made with for the community