The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/distrobuilder/pull/328
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === This allows changing the mode, gid and uid when using the dump generator.
From 97ac364c4611e7848ec9e7b02fc185dd7786936f Mon Sep 17 00:00:00 2001 From: Thomas Hipp <thomas.h...@canonical.com> Date: Mon, 11 May 2020 17:19:14 +0200 Subject: [PATCH 1/5] shared/definition: Add Mode, GID and UID to files Signed-off-by: Thomas Hipp <thomas.h...@canonical.com> --- shared/definition.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shared/definition.go b/shared/definition.go index 66e9bee..5df49c3 100644 --- a/shared/definition.go +++ b/shared/definition.go @@ -180,6 +180,9 @@ type DefinitionFile struct { Name string `yaml:"name,omitempty"` Template DefinitionFileTemplate `yaml:"template,omitempty"` Templated bool `yaml:"templated,omitempty"` + Mode string `yaml:"mode,omitempty"` + GID string `yaml:"gid,omitempty"` + UID string `yaml:"uid,omitempty"` } // A DefinitionFileTemplate represents the settings used by generators From a48118828b0dbb26f8fe842003ac2d596c256a0c Mon Sep 17 00:00:00 2001 From: Thomas Hipp <thomas.h...@canonical.com> Date: Mon, 11 May 2020 17:21:17 +0200 Subject: [PATCH 2/5] generators: Add file access handler This adds a function which handles both file permission and ownership. Signed-off-by: Thomas Hipp <thomas.h...@canonical.com> --- generators/utils.go | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 generators/utils.go diff --git a/generators/utils.go b/generators/utils.go new file mode 100644 index 0000000..79c3d92 --- /dev/null +++ b/generators/utils.go @@ -0,0 +1,53 @@ +package generators + +import ( + "os" + "strconv" + + "github.com/pkg/errors" + + "github.com/lxc/distrobuilder/shared" +) + +func updateFileAccess(file *os.File, defFile shared.DefinitionFile) error { + // Change file mode if needed + if defFile.Mode != "" { + mode, err := strconv.ParseUint(defFile.Mode, 8, 64) + if err != nil { + return errors.Wrap(err, "Failed to parse file mode") + } + + err = file.Chmod(os.FileMode(mode)) + if err != nil { + return errors.Wrap(err, "Failed to change file mode") + } + } + + // Change gid if needed + if defFile.GID != "" { + gid, err := strconv.Atoi(defFile.GID) + if err != nil { + return errors.Wrap(err, "Failed to parse GID") + } + + err = file.Chown(-1, gid) + if err != nil { + return errors.Wrap(err, "Failed to change GID") + } + } + + // Change uid if needed + if defFile.Mode != "" { + uid, err := strconv.Atoi(defFile.UID) + if err != nil { + return errors.Wrap(err, "Failed to parse UID") + } + + err = file.Chown(uid, -1) + if err != nil { + return errors.Wrap(err, "Failed to change UID") + } + } + + return nil +} From e4ed18a2c25eb67ff3253ff9dfb0f4ee9b43b076 Mon Sep 17 00:00:00 2001 From: Thomas Hipp <thomas.h...@canonical.com> Date: Mon, 11 May 2020 17:21:54 +0200 Subject: [PATCH 3/5] generators/dump: Allow changing mode, UID and GID Signed-off-by: Thomas Hipp <thomas.h...@canonical.com> --- generators/dump.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/generators/dump.go b/generators/dump.go index 526b191..d829a55 100644 --- a/generators/dump.go +++ b/generators/dump.go @@ -35,10 +35,9 @@ func (g DumpGenerator) RunLXD(cacheDir, sourceDir string, img *image.LXDImage, // Run dumps content to a file. func (g DumpGenerator) Run(cacheDir, sourceDir string, defFile shared.DefinitionFile) error { - return g.dumpFile(filepath.Join(sourceDir, defFile.Path), defFile.Content) -} + path := filepath.Join(sourceDir, defFile.Path) + content := defFile.Content -func (g DumpGenerator) dumpFile(path, content string) error { // Create any missing directory err := os.MkdirAll(filepath.Dir(path), 0755) if err != nil { @@ -63,5 +62,5 @@ func (g DumpGenerator) dumpFile(path, content string) error { return err } - return nil + return updateFileAccess(file, defFile) } From 2c016a74a9c5b8fe8be0a05e098686cd0ee05bee Mon Sep 17 00:00:00 2001 From: Thomas Hipp <thomas.h...@canonical.com> Date: Mon, 11 May 2020 17:47:46 +0200 Subject: [PATCH 4/5] doc/generators: Update dump generator Signed-off-by: Thomas Hipp <thomas.h...@canonical.com> --- doc/generators.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/generators.md b/doc/generators.md index ec69212..66d37c5 100644 --- a/doc/generators.md +++ b/doc/generators.md @@ -24,6 +24,9 @@ files: properties: <map> when: <array> templated: <boolean> + mode: <string> + gid: <string> + uid: <string> architectures: <array> # filter releases: <array> # filter variants: <array> # filter @@ -45,6 +48,7 @@ Setting `path`, `content` or `template.properties` will override the default val ## dump The `dump` generator writes the provided `content` to a file set in `path`. +If provided, it will set the `mode` (octal format), `gid` (integer) and/or `uid` (integer). ## hostname From 3aa989ddbd8b31021018c87b14296109f0508075 Mon Sep 17 00:00:00 2001 From: Thomas Hipp <thomas.h...@canonical.com> Date: Mon, 11 May 2020 17:48:22 +0200 Subject: [PATCH 5/5] doc/examples/schema: Add mode, gid and uid Signed-off-by: Thomas Hipp <thomas.h...@canonical.com> --- doc/examples/scheme.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/examples/scheme.yaml b/doc/examples/scheme.yaml index ea8dae5..5a08afe 100644 --- a/doc/examples/scheme.yaml +++ b/doc/examples/scheme.yaml @@ -75,6 +75,9 @@ files: content: |- here goes the content name: name + mode: 0644 + gid: 1000 + uid: 1000 template: properties: key: value
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel