RHEL7: Changes between versions.

Share this link


The RHEL 7 release brought many changes from RHEL 6, some of them breaking backward compatibility (Systemd, etc). Unfortunately, such changes happened between minor versions of RHEL 7 too.
Here you will find a non-exhaustive list of such changes.


Syntax Change

The RHEL 7.1 release completely changed the way the various NFS services worked.

The nfs-secure-server service doesn’t work the same way anymore, the nfs-idmap service has a new brother, nfs-idmapd, and the Kerberos NFS client gets a new nfs-client.target.

Most of this is not really explained in the official Red Hat documentation!

Hopefully, there is a Kerberos NFS tutorial that took a long time to update!

Migration Problems

When installing or migrating to RHEL 7.3, don’t disable IPv6 without running the dracut -f command just after, otherwise NFS won’t work (see details).


From RHEL 7.2 to RHEL 7.3, Networkmanager underwent a major evolution, going from v1.0.6 to v1.4.0. Modularity was at the heart of the changes. There are certainly other changes unknown at this time.

Nmcli Syntax Change

In RHEL 7.0, you could write:

# nmcli con mod myConn ipv4.addresses ""

Since RHEL 7.1, you have to do it in two steps:

# nmcli con mod myConn ipv4.addresses
# nmcli con mod myConn ipv4.gateway

Or, in only one step:

# nmcli con mod myConn ipv4.addresses ipv4.gateway

New Unit File Directives

With RHEL 7.3, the NetworkManager service got two new directives in its unit file for security purpose:

  • ProtectSystem=true
  • ProtectHome=read-only

These directives forbid some changes made to respectively system (/usr, /boot, /root, /run/user) and /home directories, mainly the creation of symbolic links to them (see details here). If you use a non-standard directory structure, you may need to remove these directives.


With RHEL 7.2, Systemd moves from v208 to v219. It’s still too early to say if changes breaking backward compatibility happened.

New Systemd Directives

Some new directives regarding security have been introduced in the v219 version of Systemd.

In the NetworkManager chapter above, the ProtectSystem and ProtectHome directives were already mentioned but some others exist (see details here).

Conflicts with Docker

At least one change has already been reported concerning execution of Docker containers. You can read an article on the CentOS blog about Fixing CentOS 7 systemd conflicts with docker.

RemoveIPC Directive

A new option called RemoveIPC was introduced in RHEL 7.2 through Systemd v219. When set to yes, this option forces a cleanup of all allocated inter-process communication (IPC) resources linked to a user leaving his last session. If a daemon is running as a user with a uid number >=1000, it may crash.

This option should always be set to no by default but, due to the logic of package upgrade, it is highly advisable to set RemoveIPC=no in the /etc/systemd/logind.conf file followed by # systemctl restart systemd-logind (source).

Certificate Verification in Python

The Python standard library includes multiple modules that provide HTTP client functionality, including httplib, urllib, urllib2, and xmlrpclib. While these modules support HTTPS connections, they traditionally performed no verification of certificates presented by HTTPS servers, and offered no way to easily enable such verification (source).

In RHEL 7.0 and RHEL 7.1, there was no certificate verification.

In RHEL 7.2, a new file was created called /etc/python/cert-verification.cfg with verify=disable as main content.

In RHEL 7.3, the same file now displays verify=platform_default: this means that certificate verification depends on hard-coded value in the ssl module. According to the ssl module used, certificate verification will happen or not. However, it is perfectly possible to assign enable or disable to the verify directive to define the wanted behavior.


Up to RHEL 7.2, the semodule -l command was displaying the version of the loaded policy:

[root@rhel72]# semodule -l
abrt 1.4.1
accountsd 1.1.0
acct 1.6.0

With RHEL 7.3, this information is not given anymore:

[root@rhel73]# semodule -l

This can be a problem with configuration management tool like Puppet. More details about this serious compatibility problem are available here and here.

Libvirt Based Containers

With RHEL 7.3, it seems that execution of real-time libvirt based containers doesn’t work as before. New parameters need to be set up (see details here).

Other Compatibility Problems?

Leave a comment if you find another problem not listed here.

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5.00 out of 5)

Upcoming Events (CET)

There are no events.

RHCSA7: Task of the day

Allowed time: 5 minutes.
Create a user account named "tony" with password “redhat” and belonging to a secondary group called “team”.

RHCE7: Task of the day

Allowed time: 15 minutes.
Configure a httpd server with a password protected directory under the /var/www/html/private directory.

Poll for favorite RHEL 7 book

What is your favorite RHEL 7 book to prepare RHCSA & RHCE exams?

View Results

Loading ... Loading ...

Poll for most difficult RHCSA 7 topic

What do you think is the most difficult RHCSA 7 topic?

View Results

Loading ... Loading ...

Poll for most difficult RHCE 7 topic

What do you think is the most difficult RHCE 7 topic?

View Results

Loading ... Loading ...