How to Fix semanage command Not Found Error in CentOS/RHEL?

The semanage command is a crucial tool for managing SELinux (Security-Enhanced Linux) policies on CentOS and RHEL systems. SELinux provides mandatory access control (MAC) that enhances traditional Linux permissions by offering more granular security controls. The semanage utility allows administrators to modify SELinux policies without requiring deep knowledge of SELinux policy language.

However, users often encounter the frustrating "semanage command not found" error when trying to manage file contexts, ports, or other SELinux configurations. This error typically occurs because the required packages are not installed on the system.

Understanding the Error

The "semanage command not found" error has several possible causes:

  • The policycoreutils-python or policycoreutils-python-utils package is not installed

  • The package was accidentally removed during system updates

  • The command path is not included in the system's PATH environment variable

Verifying the Issue

First, confirm that semanage is missing by running:

semanage --help

If you see bash: semanage: command not found, the package needs to be installed.

Check your PATH variable to ensure it includes /usr/sbin and /sbin:

echo $PATH

Fixing the Error

Method 1: Install Using YUM (CentOS/RHEL 7)

For CentOS 7 and RHEL 7 systems, install the required package:

sudo yum update
sudo yum install policycoreutils-python

Method 2: Install Using DNF (CentOS/RHEL 8+)

For newer versions of CentOS and RHEL, use DNF:

sudo dnf install policycoreutils-python-utils

Method 3: Using EPEL Repository

If the standard repositories don't contain the package, add the EPEL repository:

sudo yum install epel-release
sudo yum install policycoreutils-python-utils

Verify the installation by running:

semanage --help

Common semanage Usage Examples

Once installed, you can use semanage for various SELinux management tasks:

# View file contexts
semanage fcontext -l

# Add a new port context
semanage port -a -t http_port_t -p tcp 8080

# List current port contexts
semanage port -l

Troubleshooting Tips

If semanage is still not working after installation:

  • Check for conflicting packages: Run rpm -qa | grep policycoreutils to identify any conflicts

  • Update system packages: Use sudo yum update to ensure all dependencies are current

  • Verify SELinux status: Check if SELinux is enabled with sestatus

  • Restart services: Restart SELinux-related services if needed: sudo systemctl restart auditd

Package Differences by Version

OS Version Package Name Install Command
CentOS/RHEL 6-7 policycoreutils-python yum install policycoreutils-python
CentOS/RHEL 8+ policycoreutils-python-utils dnf install policycoreutils-python-utils
Fedora policycoreutils-python-utils dnf install policycoreutils-python-utils

Conclusion

The "semanage command not found" error is easily resolved by installing the appropriate policycoreutils package for your system version. Once installed, semanage provides powerful capabilities for managing SELinux policies, file contexts, and port configurations. Regular system updates help prevent such package-related issues in the future.

Updated on: 2026-03-17T09:01:38+05:30

6K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements