Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to create a shared directory when a number of users (all belong to say mygroup) can create and edit files. I would like all files in this directory and subdirectory to belong to mygroup

I have changed existing files to have group mygroup using chgrp, but new files still get created belong to the user's primary group. Is there a way of ensuring new files belong to the group without repeatedly running chgrp.

share|improve this question
up vote 42 down vote accepted

You want to set the SetGID sticky bit.

chmod g+s dir

All new files created in the directory will have the group set to the group of the directory.

A superuser blog post explained the sticky bits and other linux permission bits:

SetGID, however, is a whole different ball game. When a directory has the SetGID bit set and a file is created within that directory the group ownership of the file is automatically modified to be the group of the directory.

share|improve this answer
    
Thanks. The reference is useful. describes the umask command that is part of the picture – justintime May 2 '11 at 17:43
1  
What about creating a subdirectory in the initial directory which also belongs to the group of the parent directory? Is this possible? – daaxix Mar 11 '13 at 22:27

Set the setgid permission flag on the folders.

chmod g+s dirname
share|improve this answer

This might get a few people stuck with setgid, if the folder's group is different from your own you may need to run chmod as root but you won't get any error indicating you need to do this.

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                     #no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir   #but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo        #and the group is set wrong


$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir   #the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo #and the group is set right
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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