Thursday, September 23, 2004

For those of you about to Cygwin, we salute you

and also encourage you to try something else instead. Seriously, scrounge around for a cheap, used PIII 300-based box and install OpenBSD on it instead; get Services For Unix now that it's free, and can mount NFS shares where Cygwin can only serve them; download VMware. Don't get me wrong, Cygwin is an amazingly detailed and clever set of sophisticated hacks. The development crew is a cool bunch. But a hack is a hack.

Anyway, in interest of giving something back to the community: if you find people can't see mounted directories when connecting to a Cygwin server, check the registry keys.

In Cygwin, the mount command will only take a folder, like "/usr/bin", and point it to a Windows drive, like "D:\cygwin\bin". Cygwin can't open a device directly, it depends on Windows for the filesystem and device drivers. What's more, the mappings are stored in the registry, not in /etc, like all us UNIX weenies would expect. I was running ProFTPD and was setting default directories to folder that, via a mount, redirected to the D: drive. After I upgraded my version of Cygwin, users FTPing would find themselves in the directory and could list the files, but the permissions showed up wrong and they couldn't send or recieve any files. Turns out the upgrade reset registry key permissions so that the user that the ProFTPD server was running under (BUILTIN\SYSTEM) could read them but normal users couldn't. Since this was a Windows 2000 box, I ran regedt32.exe, went to "HKLM\SOFTWARE\Cygnus Solutions\Cygwin\", clicked on "mounts v2" branch, went to the menus under Security -> Permissions... and added the group Users and gave them read permissions. Permission inheritance propagated the change down to the sub-branches and the problem was fixed. Yay.

No comments: