file permissions when stripping under fakeroot

Alan Modra amodra@gmail.com
Mon Feb 8 10:18:00 GMT 2021


On Mon, Feb 08, 2021 at 11:56:11AM +0530, Siddhesh Poyarekar wrote:
> On 2/8/21 11:08 AM, Eli Schwartz via Binutils wrote:
> > > strip creates a temporary file and does a rename for such "fake-in-place" modification.
> > > Arguably distributions should not rely on the root chown/fchown behavior.
> > > (what's the extend to which attributes are preserved? What about xattr? :))
> > > 
> > > If distributions need such a behavior, they could explicitly obtain owner/group
> > > and restore it.
> > > https://groups.google.com/g/linux.gentoo.dev/c/WG-OLQe3yng/m/ZlqM-QC6BQAJ
> > > 
> > > (
> > > I am fairly suspicious when ChromeOS folks wanted to port such a root chown behavior to llvm-strip, so I chatted with Rich, who reported
> > > https://sourceware.org/bugzilla/show_bug.cgi?id=26945 ...
> > > )
> > 
> > xattr has always been a problem, since strip always removed this for us.
> > 
> > At any rate the Arch solution to this entire situation is to use
> > strip/objcopy's -o outfile option to write our own temporary file, then
> > cat it into the original file. This *preserves* ownership rather than
> > recreating it (whether fakeroot is capable of picking up on it or not)
> > and, for the first time ever, preserves xattrs too.
> > 
> > https://git.archlinux.org/pacman.git/commit/?id=88d054093c1c99a697d95b26bd9aad5bc4d8e170
> > 
> > So our use case for packaging under fakeroot is no longer affected (once
> > this change percolates to a release).
> 
> This sounds like never doing a rename+chown would be the best way to keep
> everyone happy.  Alan, would you accept such an approach?  That would
> comprehensively resolve this issue.

Yes, I considered doing that myself.  I defer to Nick on this one
though.

> The downside is that the writing out the result may become noticeably slower
> for large files.  Maybe we could retain the rename for cases where the
> source and destination have identical permissions, but xattr will always be
> problematic.

I wouldn't make any special cases.  Simple, if it works, is nearly
always better than complicated.

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list