diff --git a/client/operation.go b/client/operation.go index 6bda57a..b0a6870 100644 --- a/client/operation.go +++ b/client/operation.go @@ -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:]...) diff --git a/client/set_permission_linux.go b/client/set_permission_linux.go new file mode 100644 index 0000000..689b862 --- /dev/null +++ b/client/set_permission_linux.go @@ -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() +} diff --git a/client/set_permission_windows.go b/client/set_permission_windows.go new file mode 100644 index 0000000..ef8f120 --- /dev/null +++ b/client/set_permission_windows.go @@ -0,0 +1,7 @@ +//go:build client && windows + +package client + +func set_permission(path string) error { + return nil +} diff --git a/go.mod b/go.mod index 0b1af63..5435aa8 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( golang.org/x/text v0.10.0 google.golang.org/grpc v1.56.0 google.golang.org/protobuf v1.31.0 - repositories.action2quare.com/ayo/gocommon v0.0.0-20231116105647-72a62b678f83 + repositories.action2quare.com/ayo/gocommon v0.0.0-20231123004536-9688731b3e15 ) require ( diff --git a/go.sum b/go.sum index fb28ab2..9039cf7 100644 --- a/go.sum +++ b/go.sum @@ -120,5 +120,5 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= -repositories.action2quare.com/ayo/gocommon v0.0.0-20231116105647-72a62b678f83 h1:0X/ZTLb71JQ+ksZyPdLkxAHz9nDTT+/qRjV/zYBzlMc= -repositories.action2quare.com/ayo/gocommon v0.0.0-20231116105647-72a62b678f83/go.mod h1:XvklTTSvQX5uviivGBcZo8eIL+mV94W2e4uBBXcT5JY= +repositories.action2quare.com/ayo/gocommon v0.0.0-20231123004536-9688731b3e15 h1:si/g/ygGTY3Xxx62fXkei3f4BNLiYlbt+2854XinVvE= +repositories.action2quare.com/ayo/gocommon v0.0.0-20231123004536-9688731b3e15/go.mod h1:XvklTTSvQX5uviivGBcZo8eIL+mV94W2e4uBBXcT5JY= diff --git a/make_houston_package.ps1 b/make_houston_package.ps1 index e632787..05f6568 100644 --- a/make_houston_package.ps1 +++ b/make_houston_package.ps1 @@ -4,6 +4,10 @@ del houston.zip $Env:GOOS="linux" $Env:GOARCH="amd64" + +go get repositories.action2quare.com/ayo/gocommon +go mod tidy + go build -ldflags="-s -w" -tags=client . cp houston .\replacer\houston