diff --git a/AmazonS3StreamWrapper.inc b/AmazonS3StreamWrapper.inc
index b8c9925..36033dc 100644
--- a/AmazonS3StreamWrapper.inc
+++ b/AmazonS3StreamWrapper.inc
@@ -606,7 +606,7 @@ class AmazonS3StreamWrapper implements DrupalStreamWrapperInterface {
       // Save the object.
       $response = $this->getS3()->create_object($this->bucket, $local_path, array(
         'body' => $this->buffer,
-        'acl' => AmazonS3::ACL_PUBLIC,
+        'acl' => $this->_get_upload_acl(),
         'contentType' => AmazonS3StreamWrapper::getMimeType($this->uri),
         'storage' => $s3_storage_type,
         'headers' => $headers,
@@ -693,7 +693,7 @@ class AmazonS3StreamWrapper implements DrupalStreamWrapperInterface {
     $response = $s3->copy_object(
       array('bucket' => $this->bucket, 'filename' => $from),
       array('bucket' => $this->bucket, 'filename' => $to),
-      array('acl' => AmazonS3::ACL_PUBLIC)
+      array('acl' => $this->_get_upload_acl())
     );
 
     // Check the response and then remove the original.
@@ -1262,4 +1262,23 @@ class AmazonS3StreamWrapper implements DrupalStreamWrapperInterface {
       $this->__construct();
     }
   }
+
+  /**
+   * Get the persmission for file upload
+   *
+   * @return
+   *   A string respresenting the permissions
+   */
+  protected function _get_upload_acl() {
+    // Check which permissions to give uploaded files by default
+    $acl = variable_get('amazons3_useprivate', '');
+
+    if (!empty($acl)) {
+      return AmazonS3::ACL_PRIVATE;
+    }
+    else {
+      return AmazonS3::ACL_PUBLIC;
+    }
+  }
+
 }
diff --git a/amazons3.module b/amazons3.module
index 17a8088..7626a11 100644
--- a/amazons3.module
+++ b/amazons3.module
@@ -139,6 +139,13 @@ function amazons3_admin() {
     '#rows' => 10,
   );
 
+   $form['amazons3_useprivate'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Private mode'),
+    '#description' => t('All files uploaded will be set to private'),
+    '#default_value' => variable_get('amazons3_useprivate', 0),
+  );
+
   $form['amazons3_presigned_urls'] = array(
     '#type' => 'textarea',
     '#title' => t('Presigned URLs'),
@@ -220,6 +227,9 @@ function amazons3_admin_validate($form, &$form_state) {
     catch (Exception $e) {
       form_set_error('amazons3_bucket', t('There was a problem using S3. The following exception was thrown: @exception'), array('@exception' => $e->getMessage()));
     }
+       if (!empty($form_state['values']['amazons3_useprivate']) && empty($form_state['values']['amazons3_presigned_urls'])) {
+      form_set_error('amazons3_presigned_urls', t('Using private files requires presigned url\'s to be used for links to work. If you do not require presigned for any specific path you can enable all paths by using 60|/*'));
+    }
   }
 }
 
