Blame SOURCES/0008-frr-non-root-user.patch

9ad5e0
From 1d42fb941af17a29346b2af03338f8e18470f009 Mon Sep 17 00:00:00 2001
9ad5e0
From: Michal Ruprich <michalruprich@gmail.com>
9ad5e0
Date: Tue, 22 Nov 2022 12:38:05 +0100
9ad5e0
Subject: [PATCH] tools: Enable start of FRR for non-root user
9ad5e0
9ad5e0
There might be use cases when this would make sense, for example
9ad5e0
running FRR in a container as a designated user.
9ad5e0
9ad5e0
Signed-off-by: Michal Ruprich <mruprich@redhat.com>
9ad5e0
---
9ad5e0
 tools/etc/frr/daemons | 5 +++++
9ad5e0
 tools/frrcommon.sh.in | 4 ++++
9ad5e0
 2 files changed, 9 insertions(+)
9ad5e0
9ad5e0
diff --git a/tools/etc/frr/daemons b/tools/etc/frr/daemons
9ad5e0
index 8aa08871e35..2427bfff777 100644
9ad5e0
--- a/tools/etc/frr/daemons
9ad5e0
+++ b/tools/etc/frr/daemons
9ad5e0
@@ -91,6 +91,12 @@ pathd_options="  -A 127.0.0.1"
9ad5e0
 # say BGP.
9ad5e0
 #MAX_FDS=1024
9ad5e0
 
9ad5e0
+# Uncomment this option if you want to run FRR as a non-root user. Note that
9ad5e0
+# you should know what you are doing since most of the daemons need root
9ad5e0
+# to work. This could be useful if you want to run FRR in a container
9ad5e0
+# for instance.
9ad5e0
+# FRR_NO_ROOT="yes"
9ad5e0
+
9ad5e0
 # The list of daemons to watch is automatically generated by the init script.
9ad5e0
 #watchfrr_options=""
9ad5e0
 
9ad5e0
diff --git a/tools/frrcommon.sh.in b/tools/frrcommon.sh.in
9ad5e0
index 3c16c27c6df..4f095a176e4 100755
9ad5e0
--- a/tools/frrcommon.sh.in
9ad5e0
+++ b/tools/frrcommon.sh.in
9ad5e0
@@ -43,6 +43,10 @@ RELOAD_SCRIPT="$D_PATH/frr-reload.py"
9ad5e0
 #
9ad5e0
 
9ad5e0
 is_user_root () {
9ad5e0
+	if [[ ! -z $FRR_NO_ROOT  &&  "${FRR_NO_ROOT}" == "yes" ]]; then
9ad5e0
+		return 0
9ad5e0
+	fi
9ad5e0
+
9ad5e0
 	[ "${EUID:-$(id -u)}" -eq 0 ] || {
9ad5e0
 		log_failure_msg "Only users having EUID=0 can start/stop daemons"
9ad5e0
 		return 1
9ad5e0
diff --git a/doc/user/setup.rst b/doc/user/setup.rst
9ad5e0
index 25934df..51ffd32 100644
9ad5e0
--- a/doc/user/setup.rst
9ad5e0
+++ b/doc/user/setup.rst
9ad5e0
@@ -114,6 +114,16 @@ most operating systems is 1024.  If the operator plans to run bgp with
9ad5e0
 several thousands of peers than this is where we would modify FRR to
9ad5e0
 allow this to happen.
9ad5e0
 
9ad5e0
+::
9ad5e0
+
9ad5e0
+  FRR_NO_ROOT="yes"
9ad5e0
+
9ad5e0
+This option allows you to run FRR as a non-root user. Use this option
9ad5e0
+only when you know what you are doing since most of the daemons
9ad5e0
+in FRR will not be able to run under a regular user. This option
9ad5e0
+is useful for example when you run FRR in a container with a designated
9ad5e0
+user instead of root.
9ad5e0
+
9ad5e0
 ::
9ad5e0
 
9ad5e0
    zebra_options=" -s 90000000 --daemon -A 127.0.0.1"