diff --git a/go.sum b/go.sum index 8127610..8d3e1d1 100644 --- a/go.sum +++ b/go.sum @@ -360,6 +360,8 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kairos-io/kairos-sdk v0.0.14 h1:yVKaay70cjmAUY6m4uLoV9UguBv3Dx3JxAh2faRlUZo= github.com/kairos-io/kairos-sdk v0.0.14/go.mod h1:+fhVoCEA2hD7OFTmhDmy4pP3uC9q84OYhDa7irkEVWQ= +github.com/kairos-io/kairos-sdk v0.0.12 h1:+uibTjjsAh8klupXHWpWse2AKww6p8ROu8Ii28t3k48= +github.com/kairos-io/kairos-sdk v0.0.12/go.mod h1:AK9poWisuhnzri04diXnTG8L7EkOSUArSeeDn2LYFU0= github.com/kbinani/screenshot v0.0.0-20210720154843-7d3a670d8329 h1:qq2nCpSrXrmvDGRxW0ruW9BVEV1CN2a9YDOExdt+U0o= github.com/kbinani/screenshot v0.0.0-20210720154843-7d3a670d8329/go.mod h1:2VPVQDR4wO7KXHwP+DAypEy67rXf+okUx2zjgpCxZw4= github.com/kendru/darwin/go/depgraph v0.0.0-20221105232959-877d6a81060c h1:eKb4PqwAMhlqwXw0W3atpKaYaPGlXE/Fwh+xpCEYaPk= diff --git a/internal/agent/agent.go b/internal/agent/agent.go index 9cc122d..f64796d 100644 --- a/internal/agent/agent.go +++ b/internal/agent/agent.go @@ -1,11 +1,13 @@ package agent import ( + "errors" "fmt" - v1 "github.com/kairos-io/kairos-agent/v2/pkg/types/v1" "os" "path/filepath" + v1 "github.com/kairos-io/kairos-agent/v2/pkg/types/v1" + hook "github.com/kairos-io/kairos-agent/v2/internal/agent/hooks" "github.com/kairos-io/kairos-agent/v2/internal/bus" config "github.com/kairos-io/kairos-agent/v2/pkg/config" @@ -94,3 +96,11 @@ func Run(opts ...Option) error { } return err } + +func checkRoot() error { + if os.Geteuid() != 0 { + return errors.New("this command requires root privileges") + } + + return nil +} diff --git a/internal/agent/install.go b/internal/agent/install.go index 97b7184..ea9dfae 100644 --- a/internal/agent/install.go +++ b/internal/agent/install.go @@ -5,8 +5,6 @@ import ( "encoding/json" "errors" "fmt" - fsutils "github.com/kairos-io/kairos-agent/v2/pkg/utils/fs" - "github.com/sanity-io/litter" "net/url" "os" "path/filepath" @@ -14,6 +12,9 @@ import ( "syscall" "time" + fsutils "github.com/kairos-io/kairos-agent/v2/pkg/utils/fs" + "github.com/sanity-io/litter" + hook "github.com/kairos-io/kairos-agent/v2/internal/agent/hooks" "github.com/kairos-io/kairos-agent/v2/internal/bus" "github.com/kairos-io/kairos-agent/v2/internal/cmd" @@ -54,6 +55,10 @@ func displayInfo(agentConfig *Config) { } func ManualInstall(c, device string, reboot, poweroff, strictValidations bool) error { + if err := checkRoot(); err != nil { + return err + } + ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -84,6 +89,10 @@ func ManualInstall(c, device string, reboot, poweroff, strictValidations bool) e } func Install(dir ...string) error { + if err := checkRoot(); err != nil { + return err + } + var cc *config.Config var err error diff --git a/internal/agent/interactive_install.go b/internal/agent/interactive_install.go index 7279300..0ab6b05 100644 --- a/internal/agent/interactive_install.go +++ b/internal/agent/interactive_install.go @@ -130,6 +130,10 @@ func detectDevice() string { } func InteractiveInstall(debug, spawnShell bool) error { + if err := checkRoot(); err != nil { + return err + } + var sshUsers []string bus.Manager.Initialize() diff --git a/internal/agent/reset.go b/internal/agent/reset.go index 1e5963b..ca09cad 100644 --- a/internal/agent/reset.go +++ b/internal/agent/reset.go @@ -3,6 +3,10 @@ package agent import ( "encoding/json" "fmt" + "os" + "sync" + "time" + hook "github.com/kairos-io/kairos-agent/v2/internal/agent/hooks" "github.com/kairos-io/kairos-agent/v2/internal/bus" "github.com/kairos-io/kairos-agent/v2/internal/cmd" @@ -12,16 +16,17 @@ import ( "github.com/kairos-io/kairos-sdk/collector" "github.com/kairos-io/kairos-sdk/machine" "github.com/kairos-io/kairos-sdk/utils" - "os" - "sync" - "time" "github.com/mudler/go-pluggable" ) func Reset(reboot, unattended bool, dir ...string) error { + if err := checkRoot(); err != nil { + return err + } + bus.Manager.Initialize() - + // This config is only for reset branding. agentConfig, err := LoadConfig() if err != nil { diff --git a/internal/agent/upgrade.go b/internal/agent/upgrade.go index 12422c0..a6f310c 100644 --- a/internal/agent/upgrade.go +++ b/internal/agent/upgrade.go @@ -4,10 +4,12 @@ import ( "context" "encoding/json" "fmt" - hook "github.com/kairos-io/kairos-agent/v2/internal/agent/hooks" - "github.com/spf13/viper" "sort" + "github.com/spf13/viper" + + hook "github.com/kairos-io/kairos-agent/v2/internal/agent/hooks" + "github.com/Masterminds/semver/v3" "github.com/kairos-io/kairos-agent/v2/internal/bus" "github.com/kairos-io/kairos-agent/v2/pkg/action" @@ -51,6 +53,10 @@ func ListReleases(includePrereleases bool) semver.Collection { func Upgrade( version, source string, force, strictValidations bool, dirs []string, preReleases, upgradeRecovery bool) error { + if err := checkRoot(); err != nil { + return err + } + bus.Manager.Initialize() if version == "" && source == "" { diff --git a/main.go b/main.go index 11211d0..ec9799d 100644 --- a/main.go +++ b/main.go @@ -4,13 +4,14 @@ import ( "context" "encoding/json" "fmt" - "github.com/kairos-io/kairos-agent/v2/pkg/utils" "os" "path/filepath" "regexp" "runtime" "strings" + "github.com/kairos-io/kairos-agent/v2/pkg/utils" + "github.com/kairos-io/kairos-agent/v2/internal/agent" "github.com/kairos-io/kairos-agent/v2/internal/bus" "github.com/kairos-io/kairos-agent/v2/internal/common"