/usr/local, /var and */tmp in c:\Users\Public

Warren Young wyml@etr-usa.com
Wed Nov 12 17:59:00 GMT 2014

I didn’t want to derail the discussion about the future of /home with this, so I’m starting a new thread.

I think it would be an improvement to Cygwin if c:\cygwin contained only things that can be reinstalled from your local setup.exe download cache, in the same way that you can nuke "c:\Program Files\Microsoft Office $version” and reinstall without losing anything you created locally.

Further design principles follow from this:

- User data should live in directories that those users are normally allowed to write to.

- Per-machine software and per-machine configuration should be in directories that local Administrators can normally write to.

- Software built from source (/usr/local) should not be in c:\cygwin; it is per-machine configuration, and so should be elsewhere.

- If you tighten down what remains so that normal users only get read permission, it should continue to function, in the same way that normal users on a Linux box don’t need write access to, say, /usr/include.

This /etc/fstab addition mostly accomplishes that:

c:/Users/Public/Cygwin/var         /var         ntfs   auto      0 0
c:/Users/Public/Cygwin/usr/local   /usr/local   ntfs   auto      0 0

c:/Users/Public/Cygwin/tmp         /tmp         ntfs   notexec   0 0
c:/Users/Public/Cygwin/tmp         /usr/tmp     ntfs   notexec   0 0
c:/Users/Public/Cygwin/tmp         /var/tmp     ntfs   notexec   0 0

I propose that this or something like it be added to the default fstab.

It should apply to an existing setup without trouble.  If you already have things in /var and /usr/local, you should copy those trees over first.

The only thing remaining in c:\cygwin that can’t be moved in this way — but which it would be nice to — is /etc.  If you try, you will find that it makes Cygwin asplode; cygwin1.dll needs to find $cygbindir/../etc in order to find /etc/fstab, at the least.

Attempting to create a “shadow /etc” — vaguely like how Linux’s initrd works — also failed here, but it doesn’t seem like a good idea to do this anyway.  It means you now have to remember which of the two etc dirs to edit files in, a management hassle I don’t want.

(Anyone who uses FreeBSD with Ports installed knows this pain, with /etc and /usr/local/etc.  In Cygwin, it would be /etc and /cygdrive/c/cygwin/etc.)

Are there any directories I have missed?
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

More information about the Cygwin mailing list