diff --git a/src/create_hooks.rs b/src/create_hooks.rs
index 916e6d57fa1e1d12ac467d3d8effb1bd277760d7..1cbede191fa5c23143a6d0db5fa5955e346e00f5 100644
--- a/src/create_hooks.rs
+++ b/src/create_hooks.rs
@@ -1,6 +1,7 @@
 use std::fs::File;
+use std::fs::OpenOptions;
 use std::io::Write;
-use std::os::unix::prelude::PermissionsExt;
+use std::os::unix::prelude::OpenOptionsExt;
 use std::{
     path::PathBuf,
     process::{exit, Command},
@@ -58,7 +59,13 @@ fn create_file(folder: &PathBuf, file_name: &str, content: &str) {
         );
         return ();
     }
-    let mut file = File::create(&hfile).unwrap_or_else(|e| {
+    let mut file = OpenOptions::new()
+        .create_new(true)
+        .write(true)
+        .mode(0o755)
+        .open(&hfile)
+        .unwrap();
+    File::create(&hfile).unwrap_or_else(|e| {
         eprintln!(
             "Unable to create the file {}.\n{}",
             hfile.to_str().unwrap(),
@@ -74,8 +81,6 @@ fn create_file(folder: &PathBuf, file_name: &str, content: &str) {
         );
         exit(7);
     });
-    let mut permissions = file.metadata().unwrap().permissions();
-    permissions.set_mode(0o755);
 }
 
 /// Create 3 files in `.git/hooks` folder