diff --git a/xmlsitemap_user/xmlsitemap_user.module b/xmlsitemap_user/xmlsitemap_user.module
index 110ea75..5cc8264 100644
--- a/xmlsitemap_user/xmlsitemap_user.module
+++ b/xmlsitemap_user/xmlsitemap_user.module
@@ -146,9 +146,12 @@ function xmlsitemap_user_create_link(stdClass &$account) {
     'priority_override' => 0,
   );
 
+  // Need to check "access user profiles" for anonymous access permission.
+  $anonymous = user_load(0);
+
   // The following values must always be checked because they are volatile.
   $account->xmlsitemap['loc'] = $uri['path'];
-  $account->xmlsitemap['access'] = $account->uid && $account->status;
+  $account->xmlsitemap['access'] = $account->uid && $account->status && user_access('access user profiles', $anonymous);
   $account->xmlsitemap['language'] = !empty($account->language) ? $account->language : LANGUAGE_NONE;
 
   return $account->xmlsitemap;
diff --git a/xmlsitemap_user/xmlsitemap_user.test b/xmlsitemap_user/xmlsitemap_user.test
index 346038c..6d49813 100644
--- a/xmlsitemap_user/xmlsitemap_user.test
+++ b/xmlsitemap_user/xmlsitemap_user.test
@@ -29,6 +29,9 @@ class XMLSitemapUserFunctionalTest extends XMLSitemapTestHelper {
     $this->normal_user = $this->drupalCreateUser(array('access content'));
 
     // Update the normal user to make its sitemap link visible.
+    $this->drupalLogin($this->admin_user);
+    user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array('access user profiles' => TRUE));
+    $this->drupalLogout();
     $account = clone $this->normal_user;
     user_save($account, array('access' => 1, 'login' => 1));
   }
