summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2025-12-04 14:25:00 +0000
committerDaniil Baturin <daniil@baturin.org>2025-12-04 14:25:00 +0000
commit2b5b541b9682f6e61f85a3ec121e249a098c5a35 (patch)
tree6364e8be2716136fbec0b9e68c240f6f16eabdd2 /src
parentdbecbd0c4f25f8b8d7055e5ed3ffc8e5be59b1f0 (diff)
downloadvyos-1x-2b5b541b9682f6e61f85a3ec121e249a098c5a35.tar.gz
vyos-1x-2b5b541b9682f6e61f85a3ec121e249a098c5a35.zip
vyos-op-run: T7901: skip permission checks if the user is root
Diffstat (limited to 'src')
-rw-r--r--src/vyos_op_run.ml3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/vyos_op_run.ml b/src/vyos_op_run.ml
index c7e38a753..6299a1d9c 100644
--- a/src/vyos_op_run.ml
+++ b/src/vyos_op_run.ml
@@ -217,6 +217,9 @@ let group_perms_match perms group cmd =
perm_list_matches group_perms cmd
let is_admin () =
+ (* If executed by root, skip all permission checks *)
+ if Unix.geteuid () = 0 then true else
+ (* Otherwise, check if the user is a VyOS admin *)
let admin_group = Unix.getgrnam vyos_admin_group_name in
let user_groups = Unix.getgroups () in
match (Array.find_opt ((=) admin_group.gr_gid) user_groups) with