One of the most frustrating things with running the hosting side of a Joomla! website has been navigating the problems that occur due to file ownerships and permissions. Installing Joomla! on a typical Apache webserver may consist of using an ftp program to copy files to the server, then running the install. After this comes the process of installing templates and extensions and this is where the problems begin for many people.
Often Apache webservers will assign it's own ownershp to files that are installed from within a Joomla site. This can be good if you want to use the same mechanism to remove the program but it can also be annoying if you want to modify permissions of the installed files. The files installed by Apache are not necessarily owned by the site user and therefore any modification becomes difficult. If you want to read more about this issue, check out the joomla.org forums. I do need to say that there are few things more frustrating as a Joomla! hosting company than getting regular phone calls or emails about resetting file ownerships. If you've been there then you will know what I mean.
Joomla! themselves recognised this as a problem and came up with a solution. It is called the ftp layer. If it is configured properly, it allows the Joomla installer to install extensions and templates using ftp instead of Apache, thereby avoiding the ownership problem. This has been a big improvement for many but doesnt completely solve the problem. One specific case that keeps coming up is when an extension, during the install, tries to install further extensions that are part of itself (this is not uncommon). When this happens the ftp layer usually does the primary install but the additional items are not managed and become owned by Apache thereby causing grief.
Recently we became aware of a PHP extension that solves this problem. It is called PHP_SUEXEC. It basically allows files that are uploaded via the Apache process to get the correct permissions at time of install. Whilst this promises to solve the problem, we are yet to test it. When we have, we'll let you know how it goes.