From: Kerin Millar <kerframil@fastmail.co.uk>
To: gentoo-user@lists.gentoo.org
Subject: Re: [gentoo-user] User eix-sync permissions problem
Date: Tue, 11 Feb 2014 01:03:45 +0000 [thread overview]
Message-ID: <52F976F1.1080201@fastmail.co.uk> (raw)
In-Reply-To: <52F936CF.4060808@fastmail.co.uk>
On 10/02/2014 20:30, Kerin Millar wrote:
> On 10/02/2014 16:05, Stroller wrote:
>> Hello all,
>>
>> I'm a little bit rusty, but my recollection is that I should be able
>> to perform `eix-sync` (or `emerge --sync`?) as a user to synchronise
>> my local copy of the portage tree with Gentoo's master portage tree.
>>
>> User is in the portage group:
>>
>> $ whoami
>> stroller
>> $ groups stroller
>> wheel audio video portage cron users
>> $
>>
>> Yet I get these permissons denied errors:
>>
>> $ eix-sync
>> * Running emerge --sync
>>>>> Synchronization of repository 'gentoo' located in '/usr/portage'...
>>>>> Starting rsync with rsync://91.186.30.235/gentoo-portage...
>>>>> Checking server timestamp …
>> …
>> receiving incremental file list
>> rsync: delete_file:
>> unlink(app-accessibility/caribou/caribou-0.4.12.ebuild) failed:
>> Permission denied (13)
>> rsync: delete_file:
>> unlink(app-accessibility/emacspeak/files/emacspeak-33.0-respect-ldflags.patch)
>> failed: Permission denied (13)
>> rsync: delete_file:
>> unlink(app-accessibility/emacspeak/files/emacspeak-33.0-greader-garbage.patch)
>> failed: Permission denied (13)
>>
>> (full output attached)
>>
>>
>> Googling the problem I see a bunch of Gentoo Forums posts talking
>> about changing at random the permissions of /var/tmp/ or
>> /var/tmp/portage/, but no rationale is given, and I don't think this
>> is the cause:
>>
>> $ emerge --info | grep -i tmpdir
>> PORTAGE_TMPDIR="/var/tmp"
>> $ ls -ld /var/tmp/
>> drwxrwxrwt 3 root root 4096 Feb 5 13:47 /var/tmp/
>> $ ls -ld /var/tmp/portage/
>> drwxrwxr-x 5 portage portage 4096 Feb 5 12:32 /var/tmp/portage/
>> $
>>
>>
>> More likely seems to be the permissions of /usr/portage/:
>>
>> $ ls -ld /usr/portage/
>> drwxr-xr-x 167 portage portage 4096 Jan 5 02:31 /usr/portage/
>> $ ls -ld /usr/portage/app-accessibility/caribou/caribou*.ebuild
>> -rw-r--r-- 1 portage portage 2432 Aug 25 23:11
>> /usr/portage/app-accessibility/caribou/caribou-0.4.12.ebuild
>> -rw-r--r-- 1 portage portage 2431 Dec 8 18:01
>> /usr/portage/app-accessibility/caribou/caribou-0.4.13.ebuild
>> $
>>
>> This would seem to allow portage itself to synchronise the Portage
>> tree, but not members of the portage group.
>>
>>
>> I am able to run `emerge --sync` as root, but it doesn't solve the
>> solve the problem - next time I run `eix-sync` as user, I'm
>> permissions denied, again.
>>
>> Shouldn't a sync reset the permissions of the portage tree to be correct?
>>
>>
>> `emerge --info | grep -i feature` shows that FEATURES="userfetch
>> userpriv usersandbox usersync" (and some others - see attached) are set.
>>
>> I can reproduce this on a second AMD64 machine, both are running
>> portage-2.2.7.
>>
>> Thanks in advance for any help, advice or suggestions you can offer,
>
> This should work:-
>
> PORTAGE_RSYNC_EXTRA_OPTS="--chmod=g+w"
>
Please excuse the reply-to-self but this issue piqued my interest and I
think that I now have a better answer.
1) chown -R portage:portage "$(portageq envvar PORTDIR)"
2) find "$(portageq envvar PORTDIR)" -type f -exec chmod 0664 {} +
3) find "$(portageq envvar PORTDIR)" -type d -exec chmod 2775 {} +
4) Add to make.conf: PORTAGE_RSYNC_EXTRA_OPTS="--no-p --chmod=g+w"
5) Sync as yourself thereafter (as root should work equally well!)
The reason for using --no-p is to prevent rsync from spewing errors
about not being able to set the file modes when you sync as a regular
user. These errors don't necessarily indicate that a file cannot be
written - merely that the mode couldn't be set.
Such errors would occur because, though you are in the portage group,
you are not necessarily the owner of the files that rsync is in the
course of modifying. However, as long as the g+w bit is set for all
newly created files/directories, I would posit that it doesn't actually
matter. Instead, you can simply avoid synchronizing the permissions with
the remote.
Finally, having the setgid bit set on directories ensures that files
written out by your user beneath PORTDIR will always inherit the portage
group rather than whatever your primary group happens to be.
I am still in the course of testing this out but I am fairly certain
that it will work.
--Kerin
prev parent reply other threads:[~2014-02-11 1:04 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-10 16:05 [gentoo-user] User eix-sync permissions problem Stroller
2014-02-10 16:55 ` Gleb Klochkov
2014-02-10 17:09 ` Stroller
2014-02-10 19:03 ` Walter Dnes
2014-02-10 19:29 ` Alan McKinnon
2014-02-10 23:10 ` Kerin Millar
2014-02-10 23:57 ` Walter Dnes
2014-02-11 0:05 ` Stroller
2014-02-11 0:12 ` Stroller
2014-02-11 0:28 ` Kerin Millar
2014-02-11 1:23 ` Walter Dnes
2014-02-11 2:11 ` Kerin Millar
2014-02-11 2:50 ` Mike Gilbert
2014-02-11 5:41 ` Alan McKinnon
2014-02-11 5:32 ` Alan McKinnon
2014-02-11 11:07 ` Walter Dnes
2014-02-11 11:12 ` Neil Bothwick
2014-02-11 12:14 ` Alan McKinnon
2014-02-10 19:40 ` Kerin Millar
2014-02-10 19:45 ` [gentoo-user] " eroen
2014-02-10 18:45 ` [gentoo-user] " Alan McKinnon
2014-02-10 20:30 ` Kerin Millar
2014-02-11 1:03 ` Kerin Millar [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52F976F1.1080201@fastmail.co.uk \
--to=kerframil@fastmail.co.uk \
--cc=gentoo-user@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox