I'm using Users because I realized it practically includes everyone, or at least every authenticated user. Following the principal of least privileges, I wouldn't want to give all users permissions they don't need, and it already seems Users have way too much control. For FTP's sake, I guess I could just explicitly deny access to FTP_USERS and get it over with... you know, that's exactly what I'll do. Thanks for the suggestion.
The scenario is a simple, small scale, web hosting environment: All users can have either their own domain hosted on the server, or have a directory on my domain. If they have their own domain, they also get a DNS zone on the server (by default pointing their domain and all subdomains to this same computer). Regardless of whether they're in a directory or their own domain, they have an FTP account from which they can log in and add data up to a certain quota (1GB, successfully set already). And (this is where the execution problem starts) regardless of whether they're in a domain or a directory, they should be able to execute any scripts they want (ASP.NET and PHP in particular), as long as they can only execute them over their own space. In other words, they need to have full control over their space, and absolutely no access (reading included) over anything else.
The only place where I was able to see the "manualGroupMembership" setting was in appcmd. Regardless of whether I set it to true or false, the service unavailable error still persists (unless of course I remove the denial on FTP_USERS). I don't use any ASP.NET managed modules as far as I'm aware of, and I certainly don't plan to use any.
Here's my modules section on my applicationHost.config. I use none of the managed modules, though I'm not sure if I should remove them. I mean "AnonymousIdentification"? This sounds like it would disable any viewing of HTTP pages if I remove it.
<modules>
<add name="HttpCacheModule" lockItem="true" />
<add name="DynamicCompressionModule" lockItem="true" />
<add name="StaticCompressionModule" lockItem="true" />
<add name="DefaultDocumentModule" lockItem="true" />
<add name="DirectoryListingModule" lockItem="true" />
<add name="IsapiFilterModule" lockItem="true" />
<add name="ProtocolSupportModule" lockItem="true" />
<add name="HttpRedirectionModule" lockItem="true" />
<add name="ServerSideIncludeModule" lockItem="true" />
<add name="StaticFileModule" lockItem="true" />
<add name="AnonymousAuthenticationModule" lockItem="true" />
<add name="CertificateMappingAuthenticationModule" lockItem="true" />
<add name="UrlAuthorizationModule" lockItem="true" />
<add name="BasicAuthenticationModule" lockItem="true" />
<add name="DigestAuthenticationModule" lockItem="true" />
<add name="WindowsAuthenticationModule" lockItem="true" />
<add name="IISCertificateMappingAuthenticationModule" lockItem="true" />
<add name="IpRestrictionModule" lockItem="true" />
<add name="RequestFilteringModule" lockItem="true" />
<add name="CustomLoggingModule" lockItem="true" />
<add name="CustomErrorModule" lockItem="true" />
<add name="IsapiModule" lockItem="true" />
<add name="HttpLoggingModule" lockItem="true" />
<add name="FailedRequestsTracingModule" lockItem="true" />
<add name="CgiModule" lockItem="true" />
<add name="FastCgiModule" lockItem="true" />
<add name="ConfigurationValidationModule" lockItem="true" />
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule" preCondition="managedHandler" />
<add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="managedHandler" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />
<add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="managedHandler" />
<add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" preCondition="managedHandler" />
<add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" preCondition="managedHandler" />
<add name="Profile" type="System.Web.Profile.ProfileModule" preCondition="managedHandler" />
<add name="UrlMappingsModule" type="System.Web.UrlMappingsModule" preCondition="managedHandler" />
<add name="PlaylistHandler" />
<add name="WebPlaylistSession" type="Microsoft.Web.Media.Playlist.SessionHelperModule, Microsoft.Web.Media.Playlist.SessionHelper, Version=1.0.0.000, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" />
<add name="BitrateModule" preCondition="bitness64" />
<add name="BitrateModule32" preCondition="bitness32" />
<add name="RewriteModule" />
</modules>