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`.
|
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
|
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/
|
IETF NSH draft - https://datatracker.ietf.org/doc/draft-ietf-sfc-nsh/
|
||||||
- Fedora Packaging:
|
- Fedora Packaging:
|
||||||
* OVN services are no longer restarted automatically after upgrade.
|
* 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)).
|
- Add --cleanup option to command 'ovs-appctl exit' (see ovs-vswitchd(8)).
|
||||||
- L3 tunneling:
|
- L3 tunneling:
|
||||||
* Use new tunnel port option "packet_type" to configure L2 vs. L3.
|
* 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.
|
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
|
Reporting Bugs
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
@ -95,6 +95,10 @@ Requires: openssl hostname iproute module-init-tools
|
|||||||
Requires(post): /usr/bin/getent
|
Requires(post): /usr/bin/getent
|
||||||
Requires(post): /usr/sbin/useradd
|
Requires(post): /usr/sbin/useradd
|
||||||
Requires(post): /usr/bin/sed
|
Requires(post): /usr/bin/sed
|
||||||
|
%if %{with dpdk}
|
||||||
|
Requires(post): /usr/sbin/usermod
|
||||||
|
Requires(post): /usr/sbin/groupadd
|
||||||
|
%endif
|
||||||
Requires(post): systemd-units
|
Requires(post): systemd-units
|
||||||
Requires(preun): systemd-units
|
Requires(preun): systemd-units
|
||||||
Requires(postun): 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
|
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.
|
# In the case of upgrade, this is not needed.
|
||||||
chown -R openvswitch:openvswitch /etc/openvswitch
|
chown -R openvswitch:openvswitch /etc/openvswitch
|
||||||
fi
|
fi
|
||||||
|
@ -10,8 +10,13 @@ PartOf=openvswitch.service
|
|||||||
[Service]
|
[Service]
|
||||||
Type=forking
|
Type=forking
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
|
Environment=HOME=/var/run/openvswitch
|
||||||
EnvironmentFile=/etc/openvswitch/default.conf
|
EnvironmentFile=/etc/openvswitch/default.conf
|
||||||
EnvironmentFile=-/etc/sysconfig/openvswitch
|
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 \
|
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
|
||||||
--no-ovsdb-server --no-monitor --system-id=random \
|
--no-ovsdb-server --no-monitor --system-id=random \
|
||||||
--ovs-user=${OVS_USER_ID} \
|
--ovs-user=${OVS_USER_ID} \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user