From 08cf35aa36b692e8e47476d71e2167c905f70756 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Wed, 6 Mar 2024 09:36:48 -0500 Subject: [PATCH] fix: remove the need for executing crontab as root This was done by design previously - to fix an issue with RHEL not allowing running crontab as the current user - but is no longer necessary with the removal of non-Debian platform support. --- docker/etc/sudoers.d/dokku-docker | 2 +- plugins/scheduler-docker-local/functions.go | 9 +++------ plugins/scheduler-docker-local/install | 3 +-- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/docker/etc/sudoers.d/dokku-docker b/docker/etc/sudoers.d/dokku-docker index 6dfc5d175..1b5466a42 100644 --- a/docker/etc/sudoers.d/dokku-docker +++ b/docker/etc/sudoers.d/dokku-docker @@ -1 +1 @@ -dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-container-healthchecker,/usr/bin/docker-image-labeler,/usr/bin/pack,/usr/bin/crontab +dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-container-healthchecker,/usr/bin/docker-image-labeler,/usr/bin/pack diff --git a/plugins/scheduler-docker-local/functions.go b/plugins/scheduler-docker-local/functions.go index e59aea802..9b9da83a3 100644 --- a/plugins/scheduler-docker-local/functions.go +++ b/plugins/scheduler-docker-local/functions.go @@ -16,18 +16,16 @@ import ( func deleteCrontab() error { result, err := common.CallExecCommand(common.ExecCommandInput{ - Command: "/usr/bin/crontab", + Command: "crontab", Args: []string{"-l", "-u", "dokku"}, - Sudo: true, }) if err != nil || result.ExitCode != 0 { return nil } result, err = common.CallExecCommand(common.ExecCommandInput{ - Command: "/usr/bin/crontab", + Command: "crontab", Args: []string{"-r", "-u", "dokku"}, - Sudo: true, }) if err != nil { return fmt.Errorf("Unable to remove schedule file: %w", err) @@ -148,9 +146,8 @@ func writeCronEntries() error { } result, err := common.CallExecCommand(common.ExecCommandInput{ - Command: "/usr/bin/crontab", + Command: "crontab", Args: []string{"-u", "dokku", tmpFile.Name()}, - Sudo: true, }) if err != nil { return fmt.Errorf("Unable to update schedule file: %w", err) diff --git a/plugins/scheduler-docker-local/install b/plugins/scheduler-docker-local/install index 8e4c7ceb3..f7ddd44af 100755 --- a/plugins/scheduler-docker-local/install +++ b/plugins/scheduler-docker-local/install @@ -14,8 +14,7 @@ trigger-scheduler-docker-local-install() { fn-plugin-property-setup "scheduler-docker-local" - echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/crontab" >"/etc/sudoers.d/dokku-cron" - chmod "0440" "/etc/sudoers.d/dokku-cron" + rm -f "/etc/sudoers.d/dokku-cron" echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/docker-container-healthchecker" >"/etc/sudoers.d/dokku-docker-container-healthchecker" chmod "0440" "/etc/sudoers.d/dokku-docker-container-healthchecker"