Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20131203195433.GM24286@brightrain.aerifal.cx>
Date: Tue, 3 Dec 2013 14:54:33 -0500
From: Rich Felker <dalias@...ifal.cx>
To: musl@...ts.openwall.com
Subject: Re: _PATH_LASTLOG

On Tue, Dec 03, 2013 at 07:09:05PM +0000, Raphael Cohn wrote:
> Ta.
> 
> Would it be possible to have the "/dev/null/xxx" paths' values as an option
> to ./configure?
> 
> Actually, it would be very useful to be able to ./configure all the other
> hard coded paths in musl, eg the default dynamlic linker search path. When
> running with a setup like Nixos, or the like, these paths need to be
> different. Of course, one can patch, but that's not sustainable in the long
> run.

The dynamic linker searches for its path file relative to its own
location, which should cover this kind of usage. It's only in the case
where no path file exists that the hard-coded /lib, /usr/lib, etc.
would get searched.

> Please?

I think such a request should be accompanied by explanations of what
you're trying to achieve that's difficult or impossible with the
current scheme.

Most of the hard-coded paths in musl are hard-coded because there's a
standard pathname either required by the standards or that was
universal in all historical systems, and because musl aims to be
useful for producing "run anywhere" static binaries. Gratuitously
changing paths defeats this goal. Of course musl attempts to minimize
the number of hard-coded pathnames anyway; here's a list from the
current documentation draft which you could review to determine which
are problematic to your intended usage cases:

----------------------------------------------------------------------
* `/dev/null` - device node, required by POSIX

* `/dev/tty` - device node, required by POSIX

* `/tmp` - required by POSIX to exist as a directory, and used by
  various temporary file creation functions.

* `/bin/sh` - an executable file providing a POSIX-conforming shell

* `/proc` - must be a mount point for Linux procfs or a symlink to
  such. Several functions such as realpath, fexecve, and a number of
  the "at" functions added in POSIX 2008 need access to /proc to
  function correctly.

While some programs may operate correctly even without some or all of
the above, musl's behavior in their absence is unspecified.

### Additional Pathnames Used

* `/dev/log` - a UNIX domain socket to which the `syslog()` interface
  sends log messages. If absent or inaccessible, log messages will be
  discarded.

* `/dev/shm` - a directory; should have permissions 01777. If absent,
  POSIX shared memory and named semaphore interfaces will fail;
  programs not using these features will be unaffected.

* `/dev/ptmx` and `/dev/pts` - device node and devpts filesystem mount
  point, respectively. If absent or inaccessible, `posix_openpt()` and
  `openpty()` will fail.

* `/etc/passwd` and `/etc/group` - text files containing the user and
  group databases, mappings between names and numeric ids, and group
  membership lists, in the standard traditional format. If absent,
  user and/or group lookups will fail.

* `/etc/shadow` - text file containing shadow password hashes for some
  or all users.

* `/etc/resolv.conf` - text file providing addresses of nameservers to
  be used for DNS lookups. If absent, DNS requests will be sent to the
  loopback address and will fail unless the host has its own
  nameserver.

* `/etc/hosts` - text file mapping hostnames to IP addresses.

* `/etc/services` - text file mapping network service names to port
  numbers.

* `/usr/share/zoneinfo`, `/share/zoneinfo`, and `/etc/zoneinfo` -
  directories searched for time zone files when the `TZ` environment
  variable is set to a relative pathname.

* `../etc/ld-musl-$(ARCH).path`, taken relative to the location of the
  "program interpreter" specified in the program's headers - if
  present, this will be processed as a text file containing the shared
  library search path, with components delimited by newlines or
  colons. If absent, a default path of
  `"/lib:/usr/local/lib:/usr/lib"` will be used. Not used by
  static-linked programs.
----------------------------------------------------------------------

Let me know. This may end up being an ugly issue but it's something we
should look at, in any case...

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.