In July 2006, the coreutils developers found that the behaviour of chmod differs between various systems (Solaris 10 and OpenBSD 3.9, for example). Since the sticky, set-user-ID, and set-group-ID bits on a directory are
special, and should not be accidentally *removed* by a user, they decided to change the behaviour of the coreutils chmod command.
Red Hat didn't pick up the change until RHEL 6, I think.
See for example this discussion thread
on the bug-coreutils mailing list.
I personally use the set-group-ID bit on directories extensively on servers, to allow administrator access control via local groups (and not user accounts at all). (The set-group-ID makes new files and directories inherit the group from the directory, and not from the user.) I recommend it warmly, it has worked very, very well for the last few years. I do need to check now and then if some user has accidentally unset the set-group-ID bit on some directory, because that will obviously break things.
Therefore, I think this chmod behaviour change is very beneficial. A chmod 0755 dir
or chmod g=rwx dir
command will no longer remove the set-group-ID bit. This eliminates the typical error that breaks group-based access control. (Actually, after this change in chmod behaviour, I do think it will only break by a deliberate attempt, and not by innocent accident anymore.)