GNU bug report logs - #36966
install-sh -s on 555 executable fails

Previous Next

Package: automake;

Reported by: Karl Berry <karl <at> freefriends.org>

Date: Wed, 7 Aug 2019 21:52:01 UTC

Severity: normal

Done: Karl Berry <karl <at> freefriends.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Karl Berry <karl <at> freefriends.org>
Subject: bug#36966: closed (Re: bug#36966: install-sh -s on 555 executable
 fails)
Date: Sun, 22 Nov 2020 02:10:03 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#36966: install-sh -s on 555 executable fails

which was filed against the automake package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 36966 <at> debbugs.gnu.org.

-- 
36966: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=36966
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Karl Berry <karl <at> freefriends.org>
To: 36966 <at> debbugs.gnu.org
Subject: Re: bug#36966: install-sh -s on 555 executable fails
Date: Sat, 21 Nov 2020 19:08:57 -0700
    chmod 555 /tmp/rx             # make unwritable to owner
    install-sh -s /tmp/rx /tmp/sx # try to install, with strip
    -> strip: unable to copy file '/tmp/_inst.31092_'; reason: Permission denied

Paul fixed this install-sh bug that I reported last August (commit of
2019-08-26). Closing.

[Message part 3 (message/rfc822, inline)]
From: Karl Berry <karl <at> freefriends.org>
To: bug-automake <at> gnu.org
Subject: install-sh -s on 555 executable fails
Date: Wed, 7 Aug 2019 15:50:53 -0600
(I'm not on this list, so please keep me in cc if need be.)

It seems that install-sh -s (what automake's install-strip target can
end up doing) fails if the original file doesn't have the owner-write
bit set:

cp /bin/cp /tmp/rx            # any binary will do
chmod 555 /tmp/rx             # make unwritable to owner
install-sh -s /tmp/rx /tmp/sx # try to install, with strip
-> strip: unable to copy file '/tmp/_inst.31092_'; reason: Permission denied
echo $?
-> 1

Although install-sh (version 2018-03-11.20, lines 224ff.) does some
stuff to ensure that umask will not clear an owner-writable bit in the
destination, that's not enough to make it owner-writable if it's not
already.

The only less-than-wonderful fix I could come up with is to explicitly
do chmod u+w if strip is being executed. I thought maybe it would be
worth trying the strip even if the chmod failed, hence the ; instead of
&&, but it's not something I feel strongly about. And maybe there is
some nicer way to do it altogether.

--- a/build-aux/install-sh
+++ b/build-aux/install-sh
@@ -461,7 +461,7 @@ do
     #
     { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
     { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || ($doit $chmodcmd u+w "$dsttmp"; $doit $stripcmd "$dsttmp") } &&
     { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
 
     # If -C, don't bother to copy if it wouldn't change the file.


Wdyt? --thanks, karl.



This bug report was last modified 4 years and 239 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.