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)} }