From Bugzilla Helper: User-Agent: Mozilla/4.76 [en] (X11; U; FreeBSD 4.2-STABLE i386) chmod does not fail when it cant set group permissions properly. Reproducible: Always Steps to Reproduce: 1.as root: touch testfile; chown nonrootuser:root file 2.as nonrootuser: chmod 2777 file 3. notice how chmod does not fail, and how it returns 0, yet it failed Actual Results: every time, it works Expected Results: for chmod to report an error, at least in its return code in bsd this orks properly
The chmod() system call returns 0 under those conditions, so the real fix should be in the kernel. FreeBSD doesn't change the permissions on the file at all when it gets the chmod() system call and returns EPERM, we currently change the permissions to 0777 (stripping off setgid) and return 0. What does POSIX say?
Alan: reason this is a bug ?
SuS says: APPLICATION USAGE In order to ensure that the S_ISUID and S_ISGID bits are set, an application requiring this should use stat() after a successful chmod() to verify this. so the chmod(1) program should do a stat(2) on a file after doing chmod(2).
Fixed in 4.1.9-10