/usr/local, /var and */tmp in c:\Users\Public
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
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin