mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 09:58:01 +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:
parent
491a9d3b6b
commit
e3e738a3d0
@ -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
1
NEWS
@ -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.
|
||||
|
@ -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
|
||||
--------------
|
||||
|
||||
|
@ -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
|
||||
|
@ -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} \
|
||||
|
Loading…
x
Reference in New Issue
Block a user