aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app/share.system.go
blob: 1b17ca4996558c68f1c5c46d511b641cec6ee287 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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)
}