mailing list of musl libc
 help / color / mirror / code / Atom feed
* [musl] Bug: installed symlinks are unreadable on MacOS
@ 2024-01-31  2:30 Tim Cuthbertson
  2024-01-31 13:47 ` Rich Felker
  0 siblings, 1 reply; 5+ messages in thread
From: Tim Cuthbertson @ 2024-01-31  2:30 UTC (permalink / raw)
  To: musl


[-- Attachment #1.1: Type: text/plain, Size: 1375 bytes --]

I'm not subscribed to the mailing list, please CC me on replies.

Installed symlinks (specifically ld-musl-x86_64.so.1 have permissions 0700
on MacOS, which means only the owner (typically root) can read them.

Symlink permissions can't be anything but 0777 on Linux, but on Mac they
can be set, and in this case are being inherited from the 077 umask in
install.sh:

```
$ ls -l
/nix/store/fgkznmnz1swzp8ck75fa2zvj62pkjgvq-musl-x86_64-unknown-linux-musl-1.2.3/lib/ld-musl-x86_64.so.1
ls: cannot read symbolic link
'/nix/store/fgkznmnz1swzp8ck75fa2zvj62pkjgvq-musl-x86_64-unknown-linux-musl-1.2.3/lib/ld-musl-x86_64.so.1':
Permission denied
lrwx------ 1 root wheel 7 Jan  1  1970
/nix/store/fgkznmnz1swzp8ck75fa2zvj62pkjgvq-musl-x86_64-unknown-linux-musl-1.2.3/lib/ld-musl-x86_64.so.1
```

My fix (attached) is to use `umask 022`, which was already being used to
make directories. It's not practical to fix this by specifying the intended
permissions for this symlink, as setting link permissions requires the
nonstandard `-h` chmod flag, which presumably fails on other platforms.

First discovered when cross-building on MacOS for linux:
https://github.com/NixOS/nixpkgs/issues/285141

I've tested the fix works in nix. I am fairly confident the same issue
exists outside of Nix given the fix, but I haven't built musl before and
ran into unrelated errors.

Thanks,
 - Tim

[-- Attachment #1.2: Type: text/html, Size: 1708 bytes --]

[-- Attachment #2: musl-chmod.patch --]
[-- Type: application/octet-stream, Size: 741 bytes --]

From 05b89f783fd1873ce9ec1127fa76d002921caa23 Mon Sep 17 00:00:00 2001
From: Tim Cuthbertson <tim@gfxmonk.net>
Date: Wed, 31 Jan 2024 12:45:06 +1100
Subject: [PATCH] install.sh: relax umask to fix restrictive symlink
 permissions on MacOS

---
 tools/install.sh | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/tools/install.sh b/tools/install.sh
index d913b60bf..62ca4011c 100755
--- a/tools/install.sh
+++ b/tools/install.sh
@@ -36,8 +36,9 @@ esac
 set -C
 set -e
 
-if test "$mkdirp" ; then
 umask 022
+
+if test "$mkdirp" ; then
 case "$2" in
 */*) mkdir -p "${dst%/*}" ;;
 esac
@@ -45,8 +46,6 @@ fi
 
 trap 'rm -f "$tmp"' EXIT INT QUIT TERM HUP
 
-umask 077
-
 if test "$symlink" ; then
 ln -s "$1" "$tmp"
 else

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-02-02  2:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-31  2:30 [musl] Bug: installed symlinks are unreadable on MacOS Tim Cuthbertson
2024-01-31 13:47 ` Rich Felker
2024-01-31 22:39   ` Tim Cuthbertson
2024-01-31 23:32     ` Rich Felker
2024-02-02  2:42       ` Tim Cuthbertson

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).