소켓 바인딩 권한 부여

This commit is contained in:
2023-11-23 12:36:57 +09:00
parent 882d35d604
commit 3208eba280
6 changed files with 40 additions and 4 deletions

View File

@ -153,7 +153,11 @@ func prepareProcessLaunch(storageRoot string, req *shared.StartProcessRequest) *
if err == nil && fi.IsDir() {
exefile := "./" + path.Clean(strings.TrimPrefix(req.Args[0], "/"))
os.Chmod(path.Join(verpath, exefile), 0777)
err = set_permission(path.Join(verpath, exefile))
if err != nil {
logger.Println("set_permission failed :", err)
return nil
}
exef, _ := os.Executable()
cmd := exec.Command(path.Join(path.Dir(exef), verpath, exefile), req.Args[1:]...)

View File

@ -0,0 +1,21 @@
//go:build client && linux
package client
import (
"os"
"os/exec"
)
func init() {
file, _ := os.OpenFile("setcap.sh", os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0777)
file.Write([]byte("sudo setcap 'cap_net_bind_service=+ep' $1"))
file.Sync()
file.Close()
}
func set_permission(path string) error {
os.Chmod(path, 0777)
cmd := exec.Command("/bin/bash", "./setcap.sh", path)
return cmd.Run()
}

View File

@ -0,0 +1,7 @@
//go:build client && windows
package client
func set_permission(path string) error {
return nil
}