Skip to content

Commit

Permalink
code refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
Mzack9999 committed Nov 11, 2022
1 parent 21e6ad5 commit d7db002
Show file tree
Hide file tree
Showing 11 changed files with 90 additions and 63 deletions.
2 changes: 2 additions & 0 deletions permission/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# permissionutils
The package contains various helpers about permissions/privileges
5 changes: 5 additions & 0 deletions permission/error.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package permissionutil

import "errors"

var ErrNotImplemented = errors.New("not implemented")
11 changes: 11 additions & 0 deletions permission/permission.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package permissionutil

var (
IsRoot bool
HasCapNetRaw bool
)

func init() {
IsRoot, _ = checkCurrentUserRoot()
HasCapNetRaw, _ = checkCurrentUserCapNetRaw()
}
17 changes: 17 additions & 0 deletions permission/permission_darwin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//go:build darwin

package permissionutil

import (
"os"
)

// checkCurrentUserRoot checks if the current user is root
func checkCurrentUserRoot() (bool, error) {
return os.Geteuid() == 0, nil
}

// checkCurrentUserCapNetRaw checks if the current user has the CAP_NET_RAW capability
func checkCurrentUserCapNetRaw() (bool, error) {
return false, ErrNotImplemented
}
42 changes: 42 additions & 0 deletions permission/permission_linux.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
//go:build linux || unix

package permissionutil

import (
"os"
"runtime"

"github.com/projectdiscovery/naabu/v2/pkg/israce"
"golang.org/x/sys/unix"
)

// checkCurrentUserRoot checks if the current user is root
func checkCurrentUserRoot() (bool, error) {
return os.Geteuid() == 0, nil
}

// checkCurrentUserCapNetRaw checks if the current user has the CAP_NET_RAW capability
func checkCurrentUserCapNetRaw() (bool, error) {
if raceutil.Enabled {
return false, errors.New("race detector enabled")
}
// runtime.LockOSThread interferes with race detection
header := unix.CapUserHeader{
Version: unix.LINUX_CAPABILITY_VERSION_3,
Pid: int32(os.Getpid()),
}
data := unix.CapUserData{}
runtime.LockOSThread()
defer runtime.UnlockOSThread()

err := unix.Capget(&header, &data)
if err != nil {
return false, err
}
data.Inheritable = (1 << unix.CAP_NET_RAW)
err := unix.Capset(&header, &data)
if err != nil {
return false, err
}
return true, nil
}
13 changes: 13 additions & 0 deletions permission/permission_win.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//go:build windows

package permissionutil

// checkCurrentUserRoot on windows is not implemented
func checkCurrentUserRoot() (bool, error) {
return false, ErrNotImplemented
}

// checkCurrentUserCapNetRaw on windows is not implemented
func checkCurrentUserCapNetRaw() (bool, error) {
return false, ErrNotImplemented
}
2 changes: 0 additions & 2 deletions privileges/README.md

This file was deleted.

7 changes: 0 additions & 7 deletions privileges/privileges.go

This file was deleted.

12 changes: 0 additions & 12 deletions privileges/privileges_darwin.go

This file was deleted.

34 changes: 0 additions & 34 deletions privileges/privileges_linux.go

This file was deleted.

8 changes: 0 additions & 8 deletions privileges/privileges_win.go

This file was deleted.

0 comments on commit d7db002

Please sign in to comment.