10

I am trying to create a folder using mkdirp node module. but it is creating with permission 0775 but i am in need to create with 0777 permission. official documentation says it is default to 0777 but in my case it is 0755. can anyone help me? code:

var new_location = 'public/images/u/7/';
mkdirp(new_location, function(err) {
  if (err) {
  } else {
  }
});
1
  • not working , tried mkdirp(new_location, {mode: "777"} , function (err) { }); Commented Jan 11, 2016 at 11:57

1 Answer 1

20

The documentation states that the default is 0777 & (~process.umask()), which means that your umask value is "subtracted" from the 0777. Since the umask commonly is 002 or 022, you end up with 0775 or 0755.

However, even if you supply a 0777 permission to mkdirp(), the underlying system call will still apply the umask value. To prevent that, you need to clear the umask, create the directory using the permission you want, and (optionally) restore the umask to its previous value:

var oldmask = process.umask(0);
mkdirp(new_location, '0777', function(err) {
  process.umask(oldmask);
  if (err) ...
  ...
});

Alternatively, you can use fs.chmod() to set the correct permissions after the directory was created.

Sign up to request clarification or add additional context in comments.

2 Comments

mkdirp is not creating recursively directory. if my location is : 'public/images/p/'+place_id+'/ls/'; and only i have till /p/ folder. in my case it is generating till place_id. can you help me out from this?
@iam please create a new question for that

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.