forked from security/hakurei
app: generate and replace passwd and group files
This ensures libc functions get correct user information. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
This commit is contained in:
43
internal/app/share.system.go
Normal file
43
internal/app/share.system.go
Normal file
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user