From 2bbd8b3a5f8c284eab4347165d643cdbbdbd35db Mon Sep 17 00:00:00 2001 From: JK Date: Mon, 15 Apr 2024 12:52:08 +0200 Subject: [PATCH] fix using rsync if running sftpgo as non-root user (#1535) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jerome Küttner --- internal/sftpd/cmd_unix.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/sftpd/cmd_unix.go b/internal/sftpd/cmd_unix.go index 717b5cd2..f7d39eae 100644 --- a/internal/sftpd/cmd_unix.go +++ b/internal/sftpd/cmd_unix.go @@ -18,12 +18,14 @@ package sftpd import ( + "os" "os/exec" "syscall" ) func wrapCmd(cmd *exec.Cmd, uid, gid int) *exec.Cmd { - if uid > 0 || gid > 0 { + isCurrentUser := os.Getuid() == uid && os.Getgid() == gid + if (uid > 0 || gid > 0) && !isCurrentUser { cmd.SysProcAttr = &syscall.SysProcAttr{} cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)} }