'm trying to use ACLs to show different profiles (when they visit MyAccount) for a user depending on which group they belong to. I have created two groups, assigned users to them, created two profiles, assigned ACLs to them associated with the group. Yet when I visit MyAccount, both profiles are shown for the group. I have verified that the ACLs themselves are active, since if I visit q=civicrm/profile&reset=1&gid=VISITOR_PROFILE_ID without being logged into the appropriate group, I get an error that the profile is disabled.
As a workaround, I modified CRM_Core_BAO_UFGroup::getModuleUFGroup to take a third parameter called skipPermission (default true), added code as in the getFields method with the similar parameter, and changed the calls in civicrm/drupal/civicrm.module to pass false for that value when selecting 'User Account'. But I'm too unfamiliar with the code to know if that's a general solution.