9

I would like to give 755 permissions to a directory, so I use:

# chmod -R 755 /my/folder/

It works for all files inside my folder, but the problem is that I use scripts that create new files in this folder, and by default the permissions are 600.

How could I impose, 755 permissions on these 'future' files ?

--EDIT--

I use a script that gives me info about network traffic on my campus. I have a new file every 10 minutes, located in a folder called journey, located in the month folder like this :

ls -lrt /home/netmet/secure/2017-04/2017-04-27/
total 118548
-rwxr-sr-x 1 root root   85922 avril 27 00:10 zzaccounting.dmp-00-00
-rwxr-sr-x 1 root root   54874 avril 27 00:20 zzaccounting.dmp-00-10
-rwxr-sr-x 1 root root   33534 avril 27 00:30 zzaccounting.dmp-00-20
-rwxr-sr-x 1 root root   48890 avril 27 00:40 zzaccounting.dmp-00-30
-rwxr-sr-x 1 root root   36878 avril 27 00:50 zzaccounting.dmp-00-40
-rwxr-sr-x 1 root root   37034 avril 27 01:00 zzaccounting.dmp-00-50
-rwxr-sr-x 1 root root   38154 avril 27 01:10 zzaccounting.dmp-01-00
-rwxr-sr-x 1 root root   38318 avril 27 01:20 zzaccounting.dmp-01-10
-rwxr-sr-x 1 root root   26978 avril 27 01:30 zzaccounting.dmp-01-20
-rwxr-sr-x 1 root root   31558 avril 27 01:40 zzaccounting.dmp-01-30
-rwxr-sr-x 1 root root   23662 avril 27 01:50 zzaccounting.dmp-01-40
-rwxr-sr-x 1 root root   32298 avril 27 02:00 zzaccounting.dmp-01-50
-rwxr-sr-x 1 root root   30282 avril 27 02:10 zzaccounting.dmp-02-00
-rwxr-sr-x 1 root root   31110 avril 27 02:20 zzaccounting.dmp-02-10
-rwxr-sr-x 1 root root   25718 avril 27 02:30 zzaccounting.dmp-02-20
-rwxr-sr-x 1 root root   26306 avril 27 02:40 zzaccounting.dmp-02-30
-rwxr-sr-x 1 root root   23690 avril 27 02:50 zzaccounting.dmp-02-40
-rwxr-sr-x 1 root root   23002 avril 27 03:00 zzaccounting.dmp-02-50
-rwxr-sr-x 1 root root   21854 avril 27 03:10 zzaccounting.dmp-03-00

Here I changed permissions by hand but when new the file appears, I have this :

-rw------- 1 root root 3479106 avril 27 15:50 zzaccounting.dmp-15-40

The thing is that for every folder and file under /home/netmet/secure/ I want 755 permision by default.

I have already done this :

chmod -R g+s /home/netmet/secure   
setfacl -d -m g::rwx /home/netmet/secure   
setfacl -d -m o::rx /home/netmet/secure   
11
  • 3
    ACL is the answer. This has been discussed before.
    – d3ag0s
    Apr 27, 2017 at 11:43
  • 8
    ACL is the answer for overriding the umask, but not for overriding a program that creates files with mode 0600 by design. See here for some references.
    – ilkkachu
    Apr 27, 2017 at 12:06
  • 1
    And one more detail: by default you can't use umask for adding execution bit to files, this need to be done by hand Apr 27, 2017 at 13:01
  • umask doesn't work guys
    – klaypez
    Apr 28, 2017 at 9:40
  • Can you edit the script you use to make the files? How do the files get in to the final directory (eg. 2017-04-27) and how are the directories made in the first place? Please update the question with these details.
    – Tigger
    Apr 28, 2017 at 10:46

3 Answers 3

1

Try to run umask in your folder. If it returns anything other than '0022' then this is your problem. In your case it should initialy output '0177'. The permission system when creating directory is basically computed: default - umask 0777 is the default mode for directories, and 0666 to ordinary files, but there are different umasks, if I understand these things right. Try to execute umask a=rx,uu+w.

EDIT: You can use umask to give execute bit to directory to be able to cd into it, but not to files. These have to be given execute bit manually because of security. Simply add chmod +x <file> to your script. And, execute flag set on file anything other than executable has no effect.

2
  • 1
    The umask shell command does not depend on the path, it only depends on the user running it, each user has a specific umask value, defined at login and that can be changed later. This defines how new file permissions are created. Nov 25, 2017 at 22:21
  • That should be chmod a=rx,u+w in your reply. Nov 25, 2017 at 22:22
1

I am guessing you are running the scripts that generate the files in an environment where umask is set to 0077. This prevents the generating program to set any permission bits in the 'group' and 'other' permission bits.

Note that the umask is part of any process's inherited environment and typically set from a default 'profile' at login. Any process (shell) can modify their own and descendant children's (initial) umask with the 'umask' command.

The bits in the current umask will prevent creation of files with these bits set in their permissions (hence a "mask", masking the resulting permission bits)

0

Note: This is not ideal and should be considered as a temporary workaround

You can create cron job that runs the chmod command every 5 minutes or as preferred.

There's also inotify

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .