aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/fshim/ipc/payload.go2
-rw-r--r--cmd/fshim/main.go15
2 files changed, 17 insertions, 0 deletions
diff --git a/cmd/fshim/ipc/payload.go b/cmd/fshim/ipc/payload.go
index 3ef2dac1..92e51e8c 100644
--- a/cmd/fshim/ipc/payload.go
+++ b/cmd/fshim/ipc/payload.go
@@ -13,6 +13,8 @@ type Payload struct {
Exec [2]string
// bwrap config
Bwrap *bwrap.Config
+ // path to outer home directory
+ Home string
// sync fd
Sync *uintptr
diff --git a/cmd/fshim/main.go b/cmd/fshim/main.go
index 6b271227..5aece38f 100644
--- a/cmd/fshim/main.go
+++ b/cmd/fshim/main.go
@@ -81,6 +81,21 @@ func main() {
// not fatal
}
+ // ensure home directory as target user
+ if s, err := os.Stat(payload.Home); err != nil {
+ if os.IsNotExist(err) {
+ if err = os.Mkdir(payload.Home, 0700); err != nil {
+ fmsg.Fatalf("cannot create home directory: %v", err)
+ }
+ } else {
+ fmsg.Fatalf("cannot access home directory: %v", err)
+ }
+
+ // home directory is created, proceed
+ } else if !s.IsDir() {
+ fmsg.Fatalf("data path %q is not a directory", payload.Home)
+ }
+
var ic init0.Payload
// resolve argv0