16

It seems that whenever I create a file with touch the permissions are set to: -rw-r--r--.

Is there some way that I can configure the permissions with touch or does this have to be done after with a different command?

27

You can modify your umask to allow (for most implementations) more read/write privileges, but not executable, since generally the requested permissions are 0666.

If your umask is 022, you'll see touch make a 0644 file.

Interestingly, POSIX describes this behavior in terms of creat:

  1. If file does not exist:

    The creat() function is called with the following arguments:

    • The file operand is used as the path argument.

    • The value of the bitwise-inclusive OR of S_IRUSR, S_IWUSR, S_IRGRP, S_IWGRP, S_IROTH, and S_IWOTH is used as the mode argument.

and it is only by following the links to creat, then to open, noticing the mention of umask and back-tracking to open (and creat) to verify that umask is supposed to affect touch.

For umask to affect only the touch command, use a subshell:

(umask 066; touch private-file)
(umask 0; touch world-writable-file)
touch file-as-per-current-umask

(note that in any case, if the file existed beforehand, touch will not change its permissions, just update its timestamps).

2

You can manipulate the umask. Generally it's set to 022 which means when a user creates a file, it will get permission of 0644, you can manipulate umask according to your needs.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.