diff options
author | Dan Nicholson <nicholson@endlessm.com> | 2018-10-12 12:18:36 +0000 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-10-12 12:34:57 +0000 |
commit | 43d9cac4fc4f38c18b8aa164fbbf77609e2b5b10 (patch) | |
tree | 629171bbcdc88323c705696e51b2734a13a82396 /src/libostree/ostree-repo-commit.c | |
parent | 9367a1befe045663a69265e10e0b4593068649e4 (diff) | |
download | ostree-43d9cac4fc4f38c18b8aa164fbbf77609e2b5b10.tar.gz |
lib/commit: Don't chown objects to repo target owner
The idea is that if the process is running as root, it can change
ownership of newly written files to match the owner of the repo.
Unfortunately, it currently applies in the other direction, too - a
non-root user writing to a root owned repository. If the repo is
writable by the user but owned by root, it can still create files and
directories there, but it can't change ownership of them.
This feature comes from
https://bugzilla.gnome.org/show_bug.cgi?id=738954. As it turns out, this
feature was never completed. It only works on content objects and not
metadata objects, refs, deltas, summaries, etc. Rather than try to fix
all of those, remove the feature until someone has interest in
completing it.
Closes: #1754
Approved by: cgwalters
Diffstat (limited to 'src/libostree/ostree-repo-commit.c')
-rw-r--r-- | src/libostree/ostree-repo-commit.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index 9521dc6c..134024b8 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -245,16 +245,7 @@ commit_loose_regfile_object (OstreeRepo *self, GCancellable *cancellable, GError **error) { - /* We may be writing as root to a non-root-owned repository; if so, - * automatically inherit the non-root ownership. - */ - if (self->mode == OSTREE_REPO_MODE_ARCHIVE - && self->target_owner_uid != -1) - { - if (fchown (tmpf->fd, self->target_owner_uid, self->target_owner_gid) < 0) - return glnx_throw_errno_prefix (error, "fchown"); - } - else if (self->mode == OSTREE_REPO_MODE_BARE) + if (self->mode == OSTREE_REPO_MODE_BARE) { if (TEMP_FAILURE_RETRY (fchown (tmpf->fd, uid, gid)) < 0) return glnx_throw_errno_prefix (error, "fchown"); |