diff --git a/cmd/orbit/orbit.go b/cmd/orbit/orbit.go
index eb31e759ba..d9f39eb693 100644
--- a/cmd/orbit/orbit.go
+++ b/cmd/orbit/orbit.go
@@ -6,6 +6,7 @@ import (
"io/ioutil"
"os"
"path/filepath"
+ "strings"
"time"
"github.com/fleetdm/orbit/pkg/constant"
@@ -24,7 +25,7 @@ import (
const (
tufURL = "https://tuf.fleetctl.com"
certPath = "/tmp/fleet.pem"
- defaultRootDir = "/var/lib/fleet/orbit"
+ defaultRootDir = "/var/lib/orbit"
)
func main() {
@@ -67,6 +68,11 @@ func main() {
Usage: "Enroll secret for authenticating to Fleet server",
EnvVars: []string{"ORBIT_ENROLL_SECRET"},
},
+ &cli.StringFlag{
+ Name: "enroll-secret-path",
+ Usage: "Path to file containing enroll secret",
+ EnvVars: []string{"ORBIT_ENROLL_SECRET_PATH"},
+ },
&cli.StringFlag{
Name: "osquery-version",
Usage: "Version of osquery to use",
@@ -84,6 +90,19 @@ func main() {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
+ if c.String("enroll-secret-path") != "" {
+ if c.String("enroll-secret") != "" {
+ return errors.New("enroll-secret and enroll-secret-path may not be specified together")
+ }
+
+ b, err := ioutil.ReadFile(c.String("enroll-secret-path"))
+ if err != nil {
+ return errors.Wrap(err, "read enroll secret file")
+ }
+
+ c.Set("enroll-secret", strings.TrimSpace(string(b)))
+ }
+
if err := os.MkdirAll(c.String("root-dir"), constant.DefaultDirMode); err != nil {
return errors.Wrap(err, "initialize root dir")
}
@@ -164,7 +183,8 @@ func main() {
)
}
- if enrollSecret := c.String("enroll-secret"); enrollSecret != "" {
+ enrollSecret := c.String("enroll-secret")
+ if enrollSecret != "" {
options = append(options,
osquery.WithEnv([]string{"ENROLL_SECRET=" + enrollSecret}),
osquery.WithFlags([]string{"--enroll_secret_env", "ENROLL_SECRET"}),
@@ -172,6 +192,10 @@ func main() {
}
if fleetURL != "" {
+ if enrollSecret == "" {
+ return errors.New("enroll secret must be specified to connect to Fleet server")
+ }
+
options = append(options,
osquery.WithFlags(osquery.FleetFlags(fleetURL)),
)
diff --git a/go.mod b/go.mod
index 18e032ced4..27bad1d963 100644
--- a/go.mod
+++ b/go.mod
@@ -13,7 +13,6 @@ require (
github.com/rs/zerolog v1.20.0
github.com/stretchr/testify v1.6.1
github.com/theupdateframework/go-tuf v0.0.0-20201230183259-aee6270feb55
- github.com/urfave/cli v1.22.5
github.com/urfave/cli/v2 v2.3.0
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad // indirect
)
diff --git a/pkg/packaging/deb.go b/pkg/packaging/deb.go
index 13b09bc0c5..d2b600cf6e 100644
--- a/pkg/packaging/deb.go
+++ b/pkg/packaging/deb.go
@@ -31,7 +31,7 @@ func BuildDeb(opt Options) error {
if err := os.MkdirAll(filesystemRoot, constant.DefaultDirMode); err != nil {
return errors.Wrap(err, "create root dir")
}
- orbitRoot := filepath.Join(filesystemRoot, "var", "lib", "fleet", "orbit")
+ orbitRoot := filepath.Join(filesystemRoot, "var", "lib", "orbit")
if err := os.MkdirAll(orbitRoot, constant.DefaultDirMode); err != nil {
return errors.Wrap(err, "create orbit dir")
}
@@ -85,13 +85,13 @@ func BuildDeb(opt Options) error {
},
&files.Content{
Source: "orbit",
- Destination: "/var/lib/fleet/orbit/orbit",
+ Destination: "/var/lib/orbit/orbit",
FileInfo: &files.ContentFileInfo{
Mode: constant.DefaultExecutableMode,
},
},
&files.Content{
- Source: "/var/lib/fleet/orbit/orbit",
+ Source: "/var/lib/orbit/orbit",
Destination: "/usr/local/bin/orbit",
Type: "symlink",
FileInfo: &files.ContentFileInfo{
@@ -122,7 +122,7 @@ func BuildDeb(opt Options) error {
Contents: contents,
EmptyFolders: []string{
"/var/log/osquery",
- "/var/log/fleet/orbit",
+ "/var/log/orbit",
},
Scripts: nfpm.Scripts{
PostInstall: postInstallPath,
diff --git a/pkg/packaging/macos.go b/pkg/packaging/macos.go
index 59dcebb532..2481d55a0b 100644
--- a/pkg/packaging/macos.go
+++ b/pkg/packaging/macos.go
@@ -34,7 +34,7 @@ func BuildPkg(opt Options) error {
if err := os.MkdirAll(filesystemRoot, constant.DefaultDirMode); err != nil {
return errors.Wrap(err, "create root dir")
}
- orbitRoot := filepath.Join(filesystemRoot, "var", "lib", "fleet", "orbit")
+ orbitRoot := filepath.Join(filesystemRoot, "var", "lib", "orbit")
if err := os.MkdirAll(orbitRoot, constant.DefaultDirMode); err != nil {
return errors.Wrap(err, "create orbit dir")
}
@@ -75,16 +75,15 @@ func BuildPkg(opt Options) error {
if err := writeScripts(opt, tmpDir); err != nil {
return errors.Wrap(err, "write postinstall")
}
+ if err := writeSecret(opt, orbitRoot); err != nil {
+ return errors.Wrap(err, "write enroll secret")
+ }
if opt.StartService {
if err := writeLaunchd(opt, filesystemRoot); err != nil {
return errors.Wrap(err, "write launchd")
}
}
- if err := copyFile(
- "./orbit",
- filepath.Join(filesystemRoot, "var", "lib", "fleet", "orbit", "orbit"),
- 0755,
- ); err != nil {
+ if err := copyFile("./orbit", filepath.Join(orbitRoot, "orbit"), 0755); err != nil {
return errors.Wrap(err, "write orbit")
}
@@ -155,6 +154,20 @@ func writeScripts(opt Options, rootPath string) error {
return nil
}
+func writeSecret(opt Options, orbitRoot string) error {
+ // Enroll secret
+ path := filepath.Join(orbitRoot, "secret")
+ if err := os.MkdirAll(filepath.Dir(path), constant.DefaultDirMode); err != nil {
+ return errors.Wrap(err, "mkdir")
+ }
+
+ if err := ioutil.WriteFile(path, []byte(opt.EnrollSecret), 0600); err != nil {
+ return errors.Wrap(err, "write file")
+ }
+
+ return nil
+}
+
func writeLaunchd(opt Options, rootPath string) error {
// launchd is the service mechanism on macOS
path := filepath.Join(rootPath, "Library", "LaunchDaemons", "com.fleetdm.orbit.plist")
diff --git a/pkg/packaging/macos_templates.go b/pkg/packaging/macos_templates.go
index c70b7fe8f3..8f656b4959 100644
--- a/pkg/packaging/macos_templates.go
+++ b/pkg/packaging/macos_templates.go
@@ -33,7 +33,7 @@ var macosDistributionTemplate = template.Must(template.New("").Option("missingke
var macosPostinstallTemplate = template.Must(template.New("").Option("missingkey=error").Parse(
`#!/bin/bash
-ln -sf /var/lib/fleet/orbit/orbit /usr/local/bin/orbit
+ln -sf /var/lib/orbit/orbit /usr/local/bin/orbit
{{ if .StartService -}}
launchctl stop com.fleetdm.orbit
@@ -55,7 +55,7 @@ var macosLaunchdTemplate = template.Must(template.New("").Option("missingkey=err
com.fleetdm.orbit
ProgramArguments
- /var/lib/fleet/orbit/orbit
+ /var/lib/orbit/orbit
StandardOutPath
/var/log/orbit/orbit.stdout.log
@@ -65,7 +65,7 @@ var macosLaunchdTemplate = template.Must(template.New("").Option("missingkey=err
{{ if .Insecure }}ORBIT_INSECUREtrue{{ end }}
{{ if .FleetURL }}ORBIT_FLEET_URL{{.FleetURL}}{{ end }}
- {{ if .EnrollSecret }}ORBIT_ENROLL_SECRET{{.EnrollSecret}}{{ end }}
+ {{ if .EnrollSecret }}ORBIT_ENROLL_SECRET_PATH/var/lib/orbit/secret{{ end }}
KeepAlive
RunAtLoad
diff --git a/pkg/update/update.go b/pkg/update/update.go
index f27c008464..c8e5ad216b 100644
--- a/pkg/update/update.go
+++ b/pkg/update/update.go
@@ -52,7 +52,7 @@ var (
// DefaultOptions are the default options to use when creating an update
// client.
DefaultOptions = Options{
- RootDirectory: "/var/fleet",
+ RootDirectory: "/var/lib/orbit",
ServerURL: "https://tuf.fleetctl.com",
LocalStore: client.MemoryLocalStore(),
InsecureTransport: false,