I have recently started to managing FreeBSD server along with Ubuntu Linux. However, sudo command, always shows me the following error:
zsh: command not found: sudo
How do I solve this problem and use sudo under a FreeBSD 9.x/10.x/11.x system?
Sudo is a program designed to allow a sysadmin to give limited root privileges to users and log root activity. Unlike su, sudo authenticates users against their own password rather than that of the target user. Sudo allows a system administrator to delegate authority to give certain users (or groups of users) the ability to run some (or all) commands as root or another user while providing an audit trail of the commands and their arguments. This allow the delegation of specific commands to specific users on specific hosts without sharing passwords among them.
Let us see how to install and use sudo on a FreeBSD system.
FreeBSD Install sudo command using port system
To install the port, enter:
# cd /usr/ports/security/sudo/ && make install clean
FreeBSD Install sudo command using pkg_add or pkg command
To add the binary package use the pkg_add on older version of FreeBSD such as FreeBSD 9.x, run:
# pkg_add -rv sudo
# pkg_add -r sudo
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.0-release/Latest/sudo.tbz... Done.
For the latest version of FreeBSD such as FreeBSD 11.x+ use the pkg command:
# pkg install sudo
Updating FreeBSD repository catalogue... FreeBSD repository is up to date. All repositories are up to date. The following 1 package(s) will be affected (of 0 checked): New packages to be INSTALLED: sudo: 1.8.23_2 Number of packages to be installed: 1 The process will require 3 MiB more space. 669 KiB to be downloaded. Proceed with this action? [y/N]: y [rsnapshot] [1/1] Fetching sudo-1.8.23_2.txz: 100% 669 KiB 228.5kB/s 00:03 Checking integrity... done (0 conflicting) [rsnapshot] [1/1] Installing sudo-1.8.23_2... [rsnapshot] [1/1] Extracting sudo-1.8.23_2: 100%
How do I configure sudo?
The default configuration file is located at /usr/local/etc/sudoers. This file MUST be edited with the visudo command as root. Failure to use visudo may result in syntax or file permission errors that prevent sudo from running.
% su -
Allow user vivek to run all admin tasks via sudo:
vivek ALL=(ALL) ALL
Allow members of group wheel to execute any command:
%wheel ALL=(ALL) ALL
Save and close the file.
Task: Become a root user with sudo
Type the following command to run shell as the target user:
% sudo -s
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. Password: <Enter Your Own Password Here> fdbsd9#
In this following example run login shell as the target user:
$ sudo -i
Password: [email protected]:~ #
Use the id command to verify the user and group names and numeric IDs:
Task: Run any command as root
The syntax is:
sudo /path/to/command sudo /path/to/command arg1
In this example, restart ftpd service:
% sudo /etc/rc.d/ftpd restart
Password: <Enter Your Own Password Here> Stopping ftpd. Starting ftpd.
How to list user’s privileges or check a specific command
To see what commands you are allowed to run, type:
$ sudo -l
$ sudo -ll
User vivek may run the following commands on examplejail: Sudoers entry: RunAsUsers: ALL Commands: ALL