raub@banana:~$ ls -lhd /export/projects/web drwxrwxr-x 19 bob developers 4.0K 2013-03-19 13:36 /export/projects/web raub@banana:~$The idea is that it is a shared folder, a place the developers can put share files amongst themselves without others being able to change/delete them. In other words, we want any file or directory created inside projects to inherit its group ID. At east that is the idea. In reality when any member of that group creates a file there, it is owned by that user's default group, not by developers.
raub@banana:~$ touch /export/projects/web/here raub@banana:~$ ls -lh /export/projects/web -rw-rw-r--. 1 raub raub 0 Mar 19 13:15 here raub@banana:~$We can do something about it. First we set the setgid bit to make sure /export/projects/web is owned by developers:
raub@banana:~$ chmod g+s /export/projects/web raub@banana:~$ ls -lhd /export/projects/web drwxrwxr-x 19 bob developers 4.0K 2013-03-19 13:36 /export/projects/web raub@banana:~$ ls -lh /export/projects/web -rw-rw-r--. 1 raub developers 0 Mar 19 13:15 here raub@banana:~$
Then, we should find all files in that directory with different groups and set them to be owned by developers:
raub@banana:~$ for i in `find /export/projects/web -type f ! -group developers`; do chown :developers $i; done raub@banana:~$
Did it work? Let's find out!
raub@banana:~$ touch /export/projects/web/here raub@banana:~$ ls -lh /export/projects/web -rw-rw-r--. 1 raub developers 0 Mar 19 13:15 here -rw-rw-r--. 1 raub developers 0 Mar 19 13:15 there raub@banana:~$
References:
http://superuser.com/questions/102253/how-to-make-files-created-in-a-directory-owned-by-directory-grouphttp://www.cyberciti.biz/faq/how-do-i-find-all-the-files-owned-by-a-particular-user-or-group/