x3x3x3x_5h3ll
— 53cur3 — 5h3ll_1d —
Linux vps-10654784.cedaps.org.br 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
  INFO SERVER : Apache PHP : 7.4.33
/lib64/golang/src/pkg/github.com/selinux/
162.240.100.168

 
[ NAME ] [ SIZE ] [ PERM ] [ DATE ] [ ACTN ]
+FILE +DIR
selinux.go 7.892 KB -rw-r--r-- 2020-04-01 03:16 R E G D
REQUEST EXIT
package selinux /* The selinux package is a go bindings to libselinux required to add selinux support to docker. Author Dan Walsh Used some ideas/code from the go-ini packages https://github.com/vaughan0 By Vaughan Newton */ // #cgo pkg-config: libselinux // #include // #include import "C" import ( "bufio" "crypto/rand" "encoding/binary" "fmt" "io" "os" "path" "path/filepath" "regexp" "strings" "unsafe" ) var ( assignRegex = regexp.MustCompile(`^([^=]+)=(.*)$`) mcsList = make(map[string]bool) ) func Matchpathcon(path string, mode os.FileMode) (string, error) { var con C.security_context_t var scon string rc, err := C.matchpathcon(C.CString(path), C.mode_t(mode), &con) if rc == 0 { scon = C.GoString(con) C.free(unsafe.Pointer(con)) } return scon, err } func Setfilecon(path, scon string) (int, error) { rc, err := C.lsetfilecon(C.CString(path), C.CString(scon)) return int(rc), err } func Getfilecon(path string) (string, error) { var scon C.security_context_t var fcon string rc, err := C.lgetfilecon(C.CString(path), &scon) if rc >= 0 { fcon = C.GoString(scon) err = nil } return fcon, err } func Setfscreatecon(scon string) (int, error) { var ( rc C.int err error ) if scon != "" { rc, err = C.setfscreatecon(C.CString(scon)) } else { rc, err = C.setfscreatecon(nil) } return int(rc), err } func Getfscreatecon() (string, error) { var scon C.security_context_t var fcon string rc, err := C.getfscreatecon(&scon) if rc >= 0 { fcon = C.GoString(scon) err = nil C.freecon(scon) } return fcon, err } func Getcon() string { var pcon C.security_context_t C.getcon(&pcon) scon := C.GoString(pcon) C.freecon(pcon) return scon } func Getpidcon(pid int) (string, error) { var pcon C.security_context_t var scon string rc, err := C.getpidcon(C.pid_t(pid), &pcon) if rc >= 0 { scon = C.GoString(pcon) C.freecon(pcon) err = nil } return scon, err } func Getpeercon(socket int) (string, error) { var pcon C.security_context_t var scon string rc, err := C.getpeercon(C.int(socket), &pcon) if rc >= 0 { scon = C.GoString(pcon) C.freecon(pcon) err = nil } return scon, err } func Setexeccon(scon string) error { var val *C.char if !SelinuxEnabled() { return nil } if scon != "" { val = C.CString(scon) } else { val = nil } _, err := C.setexeccon(val) return err } type Context struct { con []string } func (c *Context) SetUser(user string) { c.con[0] = user } func (c *Context) GetUser() string { return c.con[0] } func (c *Context) SetRole(role string) { c.con[1] = role } func (c *Context) GetRole() string { return c.con[1] } func (c *Context) SetType(setype string) { c.con[2] = setype } func (c *Context) GetType() string { return c.con[2] } func (c *Context) SetLevel(mls string) { c.con[3] = mls } func (c *Context) GetLevel() string { return c.con[3] } func (c *Context) Get() string { return strings.Join(c.con, ":") } func (c *Context) Set(scon string) { c.con = strings.SplitN(scon, ":", 4) } func NewContext(scon string) Context { var con Context con.Set(scon) return con } func SelinuxEnabled() bool { b := C.is_selinux_enabled() if b > 0 { return true } return false } const ( Enforcing = 1 Permissive = 0 Disabled = -1 ) func SelinuxGetEnforce() int { return int(C.security