aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app/share.system.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/app/share.system.go')
-rw-r--r--internal/app/share.system.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/internal/app/share.system.go b/internal/app/share.system.go
new file mode 100644
index 00000000..1b17ca49
--- /dev/null
+++ b/internal/app/share.system.go
@@ -0,0 +1,43 @@
+package app
+
+import (
+ "os"
+ "path"
+)
+
+const (
+ shell = "SHELL"
+)
+
+// shareSystem queues various system-related actions
+func (seal *appSeal) shareSystem() {
+ // look up shell
+ sh := "/bin/sh"
+ if s, ok := os.LookupEnv(shell); ok {
+ seal.sys.setEnv(shell, s)
+ sh = s
+ }
+
+ // generate /etc/passwd
+ passwdPath := path.Join(seal.share, "passwd")
+ username := "chronos"
+ if seal.sys.Username != "" {
+ username = seal.sys.Username
+ seal.sys.setEnv("USER", seal.sys.Username)
+ }
+ homeDir := "/var/empty"
+ if seal.sys.HomeDir != "" {
+ homeDir = seal.sys.HomeDir
+ seal.sys.setEnv("HOME", seal.sys.HomeDir)
+ }
+ passwd := username + ":x:65534:65534:Fortify:" + homeDir + ":" + sh + "\n"
+ seal.sys.writeFile(passwdPath, []byte(passwd))
+
+ // write /etc/group
+ groupPath := path.Join(seal.share, "group")
+ seal.sys.writeFile(groupPath, []byte("fortify:x:65534:\n"))
+
+ // bind /etc/passwd and /etc/group
+ seal.sys.bind(passwdPath, "/etc/passwd", true)
+ seal.sys.bind(groupPath, "/etc/group", true)
+}