[Bug 857524] Re: dhclient-script will not work with read-only /etc
Scott Moser
smoser at canonical.com
Fri Sep 23 17:52:11 UTC 2011
The following are comments on the changes in the patch
fix updating of /etc/resolv.conf for read-only
This patch makes the following changes:
* instead of writing to a temp file in /etc/, write directly to
/etc/resolv.conf
* replace the multiple '>>' with a single '>' and braces. This means
the file will be opened for write once rather than append many times.
* opening for write (truncate) keeps the ownership of the file if it exists,
and correctly follows a symlink.
This makes the chmod and chown --reference un-necessary
* use 'grep -i' rather than 'sed' to get the old nameserver entries from
existing resolv.conf. This is how the linux.udeb does it, and I find it more clean.
* changes 'wait_for_rw' to take a file argument rather than hard coding /etc
Note, there is an issue with this patch if /etc/resolv.conf is a symlink and
is the symlink (*not the target*) is not owned by root. To demonstrate:
$ rm -f /tmp/foo /tmp/bar
$ ln -s /tmp/foo /tmp/bar
$ sudo sh -c 'echo hi > /tmp/foo'
$ sudo sh -c 'echo himom > /tmp/bar'
sh: /tmp/bar: Permission denied
The only solution I see for this is to attempt to resolve the target of the
symlink (readlink -f) and writing directly there instead of through the
symlink.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to isc-dhcp in Ubuntu.
https://bugs.launchpad.net/bugs/857524
Title:
dhclient-script will not work with read-only /etc
Status in “isc-dhcp” package in Ubuntu:
New
Bug description:
dhclient-script attempts to support read-only root , but it wont correctly work.
For a read-only root to work, and support dhclient-script writing to /etc/resolv.conf, then /etc/resolv.conf would have to be a symlink to a writeable location (ie, /run).
To that end, dhclient-script attempts to check and see if / is going
to be mounted 'rw' and only wait for that case if it is.
The problem is that it basically has the following logic:
if root_will_be_mounted_rw; then
wait-for-writable /etc/
fi
new_resolv_conf=/etc/resolv.conf.dhclient-new
write new file to to $new_resolv_conf
change attributes of $new_resolv_conf to match resolv.conf
mv $new_resolv_conf /etc/resolv.conf
That doesn't work if /etc is read-only and /etc/resolv.conf is a symlink for the following reasons:
* $new_resolv_conf is being written to /etc/ (and wont be writable)
* the mv will actually break the symlink and try to create a new file in /etc
ProblemType: Bug
DistroRelease: Ubuntu 11.10
Package: isc-dhcp-client 4.1.1-P1-17ubuntu9
ProcVersionSignature: Ubuntu 3.0.0-11.18-generic 3.0.4
Uname: Linux 3.0.0-11-generic x86_64
ApportVersion: 1.23-0ubuntu1
Architecture: amd64
Date: Fri Sep 23 11:50:56 2011
EcryptfsInUse: Yes
InstallationMedia: Ubuntu 10.04 "Lucid Lynx" - Beta amd64 (20100318)
ProcEnviron:
SHELL=/bin/bash
PATH=(custom, user)
LANG=en_US.UTF-8
SourcePackage: isc-dhcp
UpgradeStatus: Upgraded to oneiric on 2010-11-15 (311 days ago)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/857524/+subscriptions
More information about the foundations-bugs
mailing list