@@ -86,8 +86,10 @@ func (m *MacOSNetJail) Execute(command []string, extraEnv map[string]string) err
86
86
}
87
87
88
88
// When running under sudo, restore essential user environment variables
89
- if sudoUser := os .Getenv ("SUDO_USER" ); sudoUser != "" {
90
- if user , err := user .Lookup (sudoUser ); err == nil {
89
+ sudoUser := os .Getenv ("SUDO_USER" )
90
+ if sudoUser != "" {
91
+ user , err := user .Lookup (sudoUser )
92
+ if err == nil {
91
93
// Set HOME to original user's home directory
92
94
env = append (env , fmt .Sprintf ("HOME=%s" , user .HomeDir ))
93
95
// Set USER to original username
@@ -103,29 +105,28 @@ func (m *MacOSNetJail) Execute(command []string, extraEnv map[string]string) err
103
105
cmd .Stderr = os .Stderr
104
106
cmd .Stdin = os .Stdin
105
107
108
+ // Set group ID using syscall
109
+ cmd .SysProcAttr = & syscall.SysProcAttr {
110
+ Credential : & syscall.Credential {
111
+ Gid : uint32 (m .groupID ),
112
+ },
113
+ }
114
+
106
115
// Drop privileges to original user if running under sudo
107
- if sudoUID := os .Getenv ("SUDO_UID" ); sudoUID != "" {
108
- if sudoGID := os .Getenv ("SUDO_GID" ); sudoGID != "" {
109
- uid , err := strconv .Atoi (sudoUID )
110
- if err != nil {
111
- m .logger .Warn ("Invalid SUDO_UID, subprocess will run as root" , "sudo_uid" , sudoUID , "error" , err )
112
- } else {
113
- // Use original user ID but KEEP the jail group for network isolation
114
- cmd .SysProcAttr = & syscall.SysProcAttr {
115
- Credential : & syscall.Credential {
116
- Uid : uint32 (uid ),
117
- Gid : uint32 (m .groupID ), // Keep jail group, not original user's group
118
- },
119
- }
120
- m .logger .Debug ("Dropping privileges to original user with jail group" , "uid" , uid , "jail_gid" , m .groupID )
116
+ sudoUID := os .Getenv ("SUDO_UID" )
117
+ if sudoUID != "" {
118
+ uid , err := strconv .Atoi (sudoUID )
119
+ if err != nil {
120
+ m .logger .Warn ("Invalid SUDO_UID, subprocess will run as root" , "sudo_uid" , sudoUID , "error" , err )
121
+ } else {
122
+ // Use original user ID but KEEP the jail group for network isolation
123
+ cmd .SysProcAttr = & syscall.SysProcAttr {
124
+ Credential : & syscall.Credential {
125
+ Uid : uint32 (uid ),
126
+ Gid : uint32 (m .groupID ), // Keep jail group, not original user's group
127
+ },
121
128
}
122
- }
123
- } else {
124
- // Set group ID using syscall (original behavior for non-sudo)
125
- cmd .SysProcAttr = & syscall.SysProcAttr {
126
- Credential : & syscall.Credential {
127
- Gid : uint32 (m .groupID ),
128
- },
129
+ m .logger .Debug ("Dropping privileges to original user with jail group" , "uid" , uid , "jail_gid" , m .groupID )
129
130
}
130
131
}
131
132
@@ -367,4 +368,4 @@ func (m *MacOSNetJail) cleanupTempFiles() {
367
368
if m .mainRulesPath != "" {
368
369
os .Remove (m .mainRulesPath )
369
370
}
370
- }
371
+ }
0 commit comments