Files
nebula/localapi/peercred_linux.go
Matt RichardsonandClaude Fable 5.1 0f767ce529 Add a local control socket and nebula ctl (#1975)
Add support for accessing the previously ssh-only debug commands via
`nebula ctl <command>.`

- unix socket (named pipe on windows) for communication
- sockets scoped to the user + an optional group
- in cmd/nebula and cmd/nebula-service, but not nebula.Main

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-21 11:16:00 -04:00

26 lines
541 B
Go

//go:build linux
package localapi
import (
"net"
"golang.org/x/sys/unix"
)
// peerCheckSupported reports that this platform can identify a connecting process.
const peerCheckSupported = true
// peerUID returns the uid of the process on the other end of conn.
func peerUID(conn net.Conn) (uid uint32, err error) {
err = withPeerFD(conn, func(fd int) error {
cred, credErr := unix.GetsockoptUcred(fd, unix.SOL_SOCKET, unix.SO_PEERCRED)
if credErr != nil {
return credErr
}
uid = cred.Uid
return nil
})
return uid, err
}