mirror of https://github.com/hak5/overseer.git
Chmod and Chown may not be supported
parent
0c0c51cbe0
commit
1956e2633b
|
@ -233,11 +233,11 @@ func (mp *master) fetch() {
|
|||
return
|
||||
}
|
||||
//copy permissions
|
||||
if err := tmpBin.Chmod(mp.binPerms); err != nil {
|
||||
if err := chmod(tmpBin, mp.binPerms); err != nil {
|
||||
mp.warnf("failed to make temp binary executable: %s", err)
|
||||
return
|
||||
}
|
||||
if err := tmpBin.Chown(uid, gid); err != nil {
|
||||
if err := chown(tmpBin, uid, gid); err != nil {
|
||||
mp.warnf("failed to change owner of binary: %s", err)
|
||||
return
|
||||
}
|
||||
|
|
11
sys_posix.go
11
sys_posix.go
|
@ -7,6 +7,7 @@ package overseer
|
|||
//in some other way on other OSs... TODO!
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/exec"
|
||||
"syscall"
|
||||
)
|
||||
|
@ -21,8 +22,18 @@ var (
|
|||
)
|
||||
|
||||
func move(dst, src string) error {
|
||||
if err := os.Rename(src, dst); err == nil {
|
||||
return nil
|
||||
}
|
||||
//HACK: we're shelling out to mv because linux
|
||||
//throws errors when crossing device boundaryes.
|
||||
//TODO see sys_posix_mv.go
|
||||
return exec.Command("mv", src, dst).Run()
|
||||
}
|
||||
|
||||
func chmod(f *os.File, perms os.FileMode) error {
|
||||
return f.Chmod(perms)
|
||||
}
|
||||
func chown(f *os.File, uid, gid int) error {
|
||||
return f.Chown(uid, gid)
|
||||
}
|
||||
|
|
|
@ -19,3 +19,11 @@ var (
|
|||
func move(dst, src string) error {
|
||||
return errors.New("Not supported")
|
||||
}
|
||||
|
||||
func chmod(f *os.File, perms os.FileMode) error {
|
||||
return errors.New("Not supported")
|
||||
}
|
||||
|
||||
func chown(f *os.File, uid, gid int) error {
|
||||
return errors.New("Not supported")
|
||||
}
|
||||
|
|
|
@ -3,8 +3,11 @@
|
|||
package overseer
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
|
@ -18,12 +21,26 @@ var (
|
|||
)
|
||||
|
||||
func move(dst, src string) error {
|
||||
os.MkdirAll(filepath.Dir(dst), 0755)
|
||||
if err := os.Rename(src, dst); err == nil {
|
||||
return nil
|
||||
}
|
||||
//HACK: we're shelling out to move because windows
|
||||
//throws errors when crossing device boundaryes.
|
||||
// https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/move.mspx?mfr=true
|
||||
cmd := exec.Command("cmd", "/c", `move /y "`+src+`" "`+dst+`"`)
|
||||
if b, err := cmd.CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("%q: %v: %v", cmd.Args, b, err)
|
||||
return fmt.Errorf("%v: %q: %v", cmd.Args, bytes.TrimSpace(b), err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func chmod(f *os.File, perms os.FileMode) error {
|
||||
_ = f.Chmod(perms)
|
||||
return nil
|
||||
}
|
||||
|
||||
func chown(f *os.File, uid, gid int) error {
|
||||
_ = f.Chown(uid, gid)
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue