2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00

redhat: allow dpdk to also run as non-root user

After this commit, users may start a dpdk-enabled ovs setup as a
non-root user.  This is accomplished by exporting the $HOME directory,
which dpdk uses to fill in it's semi-persistent RTE configuration.

This change may be a bit controversial since it modifies /dev/hugepages
as part of starting the ovs-vswitchd to set a hugetlbfs group
ownership.  This is used to enable writing to /dev/hugepages so that the
dpdk_init will successfully complete.  There is an alternate way of
accomplishing this - namely to initialize DPDK before dropping
privileges.  However, this would mean that if DPDK ever grows an uninit
/ reinit function, non-root ovs likely could never use it.

This does not change OvS+DPDK's SELinux requirements.  It still must be
disabled.

Signed-off-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: Russell Bryant <russell@ovn.org>
This commit is contained in:
aaron conole 2017-08-04 13:00:57 -04:00 committed by Russell Bryant
parent 491a9d3b6b
commit e3e738a3d0
5 changed files with 37 additions and 0 deletions

View File

@ -138,6 +138,13 @@ has to be configured with DPDK support (``--with-dpdk``).
Additional information can be found in :doc:`general`.
.. note::
If you are running using the Fedora or Red Hat package, the Open vSwitch
daemon will run as a non-root user. This implies that you must have a
working IOMMU. Visit the `RHEL README`__ for additional information.
__ https://github.com/openvswitch/ovs/blob/master/rhel/README.RHEL.rst
Setup
-----

1
NEWS
View File

@ -80,6 +80,7 @@ v2.8.0 - xx xxx xxxx
IETF NSH draft - https://datatracker.ietf.org/doc/draft-ietf-sfc-nsh/
- Fedora Packaging:
* OVN services are no longer restarted automatically after upgrade.
* ovs-vswitchd and ovsdb-server run as non-root users by default.
- Add --cleanup option to command 'ovs-appctl exit' (see ovs-vswitchd(8)).
- L3 tunneling:
* Use new tunnel port option "packet_type" to configure L2 vs. L3.

View File

@ -337,6 +337,17 @@ running. All other commands where executed when Open vSwitch was successfully
running.
Non-root User Support
-----------------------
Fedora and RHEL support running the Open vSwitch daemons as a non-root user.
By default, a fresh installation will create an *openvswitch* user, along
with any additional support groups needed (such as *hugetlbfs* for DPDK
support).
This is controlled by modifying the ``OVS_USER_ID`` option. Setting this
to 'root:root', or commenting the variable out will revert this behavior.
Reporting Bugs
--------------

View File

@ -95,6 +95,10 @@ Requires: openssl hostname iproute module-init-tools
Requires(post): /usr/bin/getent
Requires(post): /usr/sbin/useradd
Requires(post): /usr/bin/sed
%if %{with dpdk}
Requires(post): /usr/sbin/usermod
Requires(post): /usr/sbin/groupadd
%endif
Requires(post): systemd-units
Requires(preun): systemd-units
Requires(postun): systemd-units
@ -379,6 +383,15 @@ if [ $1 -eq 1 ]; then
sed -i 's:^#OVS_USER_ID=:OVS_USER_ID=:' /etc/sysconfig/openvswitch
%if %{with dpdk}
getent group hugetlbfs >/dev/null || \
groupadd hugetlbfs
usermod -a -G hugetlbfs openvswitch
sed -i \
's@OVS_USER_ID="openvswitch:openvswitch"@OVS_USER_ID="openvswitch:hugetlbfs"@'\
/etc/sysconfig/openvswitch
%endif
# In the case of upgrade, this is not needed.
chown -R openvswitch:openvswitch /etc/openvswitch
fi

View File

@ -10,8 +10,13 @@ PartOf=openvswitch.service
[Service]
Type=forking
Restart=on-failure
Environment=HOME=/var/run/openvswitch
EnvironmentFile=/etc/openvswitch/default.conf
EnvironmentFile=-/etc/sysconfig/openvswitch
@begin_dpdk@
ExecStartPre=/usr/bin/chown :hugetlbfs /dev/hugepages
ExecStartPre=/usr/bin/chmod 0775 /dev/hugepages
@end_dpdk@
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
--no-ovsdb-server --no-monitor --system-id=random \
--ovs-user=${OVS_USER_ID} \