diff --git a/apps/files_sharing/ajax/togglesharewitheveryone.php b/apps/files_sharing/ajax/togglesharewitheveryone.php
new file mode 100644
index 0000000000000000000000000000000000000000..dc1105f2f3cc8be63ecebd08f95cbc3f3891d006
--- /dev/null
+++ b/apps/files_sharing/ajax/togglesharewitheveryone.php
@@ -0,0 +1,9 @@
+<?php
+
+OCP\JSON::checkAppEnabled('files_sharing');
+OCP\JSON::checkAdminUser();
+if ($_POST['allowSharingWithEveryone'] == true) {
+	OCP\Config::setAppValue('files_sharing', 'allowSharingWithEveryone', 'yes');
+} else {
+	OCP\Config::setAppValue('files_sharing', 'allowSharingWithEveryone', 'no');
+}
\ No newline at end of file
diff --git a/apps/files_sharing/ajax/userautocomplete.php b/apps/files_sharing/ajax/userautocomplete.php
index 0e1bf6d588ec75f653c0f278b24cdefafc55db7d..23865693a1bb4e9ef34a988ac0c6a0a189eff03a 100644
--- a/apps/files_sharing/ajax/userautocomplete.php
+++ b/apps/files_sharing/ajax/userautocomplete.php
@@ -6,24 +6,37 @@ OCP\JSON::checkAppEnabled('files_sharing');
 $users = array();
 $groups = array();
 $self = OCP\USER::getUser();
-$userGroups = OC_Group::getUserGroups($self);
 $users[] = "<optgroup label='Users'>";
 $groups[] = "<optgroup label='Groups'>";
-foreach ($userGroups as $group) {
-	$groupUsers = OC_Group::usersInGroup($group);
-	$userCount = 0;
-	foreach ($groupUsers as $user) {
-		if ($user != $self) {
+if(OCP\Config::getAppValue('files_sharing', 'allowSharingWithEveryone', 'no') == 'yes') {
+	$allGroups = OC_Group::getGroups();
+	foreach($allGroups as $group) {
+	    $groups[] = "<option value='".$group."(group)'>".$group." (group) </option>";
+	}
+	$allUsers = OC_User::getUsers();
+	foreach($allUsers as $user) {
+		if($user != $self) {
 			$users[] = "<option value='".$user."'>".$user."</option>";
-			$userCount++;
-		}
+	    }
 	}
-	// Don't include the group if only the current user is a member of it
-	if ($userCount > 0) {
-		$groups[] = "<option value='".$group."(group)'>".$group." (group) </option>";
+} else {
+	$userGroups = OC_Group::getUserGroups($self);
+	foreach ($userGroups as $group) {
+		$groupUsers = OC_Group::usersInGroup($group);
+		$userCount = 0;
+		foreach ($groupUsers as $user) {
+			if ($user != $self) {
+				$users[] = "<option value='".$user."'>".$user."</option>";
+				$userCount++;
+			}
+		}
+		// Don't include the group if only the current user is a member of it
+		if ($userCount > 0) {
+			$groups[] = "<option value='".$group."(group)'>".$group." (group) </option>";
+		}
 	}
+	$users = array_unique($users);
 }
-$users = array_unique($users);
 $users[] = "</optgroup>";
 $groups[] = "</optgroup>";
 $users = array_merge($users, $groups);
diff --git a/apps/files_sharing/js/settings.js b/apps/files_sharing/js/settings.js
index bb7d79fecbb24a2de090c0424c6a183b15018f97..c276521b7b50f2375ee9f7c429932aa0b2dda157 100644
--- a/apps/files_sharing/js/settings.js
+++ b/apps/files_sharing/js/settings.js
@@ -6,4 +6,11 @@ $(document).ready(function() {
 		}
 		$.post(OC.filePath('files_sharing','ajax','toggleresharing.php'), 'resharing='+checked);
 	});
+	$('#allowSharingWithEveryone').bind('change', function() {
+		var checked = 1;
+		if (!this.checked) {
+			checked = 0;
+		}
+		$.post(OC.filePath('files_sharing','ajax','togglesharewitheveryone.php'), 'allowSharingWithEveryone='+checked);
+	});
 });
\ No newline at end of file
diff --git a/apps/files_sharing/lib_share.php b/apps/files_sharing/lib_share.php
index 31170f07fd1251d81cbac77a946272d01c849747..c0d0a1f18b95c0b1991c7baf9b64d8923a2df9f9 100644
--- a/apps/files_sharing/lib_share.php
+++ b/apps/files_sharing/lib_share.php
@@ -21,7 +21,7 @@
  */
 
 /**
- * This class manages shared items within the database. 
+ * This class manages shared items within the database.
  */
 class OC_Share {
 
@@ -31,7 +31,7 @@ class OC_Share {
 	const PUBLICLINK = "public";
 
 	private $token;
-      
+
 	/**
 	 * Share an item, adds an entry into the database
 	 * @param $source The source location of the item
@@ -56,17 +56,22 @@ class OC_Share {
 				// Remove the owner from the list of users in the group
 				$uid_shared_with = array_diff($uid_shared_with, array($uid_owner));
 			} else if (OCP\User::userExists($uid_shared_with)) {
-				$userGroups = OC_Group::getUserGroups($uid_owner);
-				// Check if the user is in one of the owner's groups
-				foreach ($userGroups as $group) {
-					if ($inGroup = OC_Group::inGroup($uid_shared_with, $group)) {
-						$gid = null;
-						$uid_shared_with = array($uid_shared_with);
-						break;
+				if(OCP\Config::getAppValue('files_sharing', 'allowSharingWithEveryone', 'no') == 'yes') {
+					$gid = null;
+					$uid_shared_with = array($uid_shared_with);
+				} else {
+					$userGroups = OC_Group::getUserGroups($uid_owner);
+					// Check if the user is in one of the owner's groups
+					foreach ($userGroups as $group) {
+						if ($inGroup = OC_Group::inGroup($uid_shared_with, $group)) {
+							$gid = null;
+							$uid_shared_with = array($uid_shared_with);
+							break;
+						}
+					}
+					if (!$inGroup) {
+						throw new Exception("You can't share with ".$uid_shared_with);
 					}
-				}
-				if (!$inGroup) {
-					throw new Exception("You can't share with ".$uid_shared_with);
 				}
 			} else {
 				throw new Exception($uid_shared_with." is not a user");
@@ -379,7 +384,7 @@ class OC_Share {
 	 * You must use the pullOutOfFolder() function to change the target location of a file inside a shared folder if the target location differs from the folder
 	 *
 	 * @param $oldTarget The current target location
-	 * @param $newTarget The new target location 
+	 * @param $newTarget The new target location
 	 */
 	public static function setTarget($oldTarget, $newTarget) {
 		$oldTarget = self::cleanPath($oldTarget);
diff --git a/apps/files_sharing/settings.php b/apps/files_sharing/settings.php
index 7b63a26515a312749b4cd8c560a36e93b18bf7ea..fcae7e0370f14a8334c38bcafa67bdf1806e1007 100644
--- a/apps/files_sharing/settings.php
+++ b/apps/files_sharing/settings.php
@@ -4,6 +4,7 @@ OCP\User::checkAdminUser();
 OCP\Util::addscript('files_sharing', 'settings');
 $tmpl = new OCP\Template('files_sharing', 'settings');
 $tmpl->assign('allowResharing', OCP\Config::getAppValue('files_sharing', 'resharing', 'yes'));
+$tmpl->assign('allowSharingWithEveryone', OCP\Config::getAppValue('files_sharing', 'allowSharingWithEveryone', 'no'));
 return $tmpl->fetchPage();
 
 ?>
\ No newline at end of file
diff --git a/apps/files_sharing/templates/settings.php b/apps/files_sharing/templates/settings.php
index 5b6ba5f33ee1d0766e7da1adfdaf0ff640602a42..533a5c0c0c8612ee0e2a689176588a397dc8a1c0 100644
--- a/apps/files_sharing/templates/settings.php
+++ b/apps/files_sharing/templates/settings.php
@@ -1,6 +1,8 @@
 <form id="resharing">
 	<fieldset class="personalblock">
-	<input type="checkbox" name="allowResharing" id="allowResharing" value="1" <?php if ($_['allowResharing'] == 'yes') echo ' checked="checked"'; ?> /> <label for="allowResharing"><?php echo $l->t('Enable Resharing'); ?></label> <br/>
-	<em><?php echo $l->t('Allow users to reshare files they don\'t own');?></em>
+	<p><input type="checkbox" name="allowResharing" id="allowResharing" value="1" <?php if ($_['allowResharing'] == 'yes') echo ' checked="checked"'; ?> /> <label for="allowResharing"><?php echo $l->t('Enable Resharing'); ?></label> <br/>
+	<em><?php echo $l->t('Allow users to reshare files they don\'t own');?></em></p>
+	<p><input type="checkbox" name="allowSharingWithEveryone" id="allowSharingWithEveryone" value="1" <?php if ($_['allowSharingWithEveryone'] == 'yes') echo ' checked="checked"'; ?> /> <label for="allowSharingWithEveryone"><?php echo $l->t('Enable sharing with everyone'); ?></label> <br/>
+	<em><?php echo $l->t('Allow users to share files with everyone');?></em></p>
 	</fieldset>
 </form>
\ No newline at end of file