chown 을 하였는데 왜 rwS 의 S 가 풀리는 걸까요?

송효진의 이미지

이것때문에 오라클이 안떠서 한참 헤맸네요.;;;
chown 은 user:group 만 수정되어야 정상인것 아닌가요?
S 가 권한 이전에 관한 플래그라서 어느정도 수긍은 할 수 있지만,
경고 한줄, 혹은 옵션이라도 제공이 되어야 하는것인데...궁시렁...

feanor의 이미지

man 2 chown 해보세요.

"When the owner or group of an executable file are changed by a non-superuser, the S_ISUID and S_ISGID mode bits are cleared."

커널이 알아서 해버리니까 유저스페이스에서 경고를 줄 수가 없지요. 보안적인 이유 때문에 이렇게 하게 되어 있습니다.

커널 소스에서 해당 기능을 구현하는 부분은 이곳입니다.
http://lxr.linux.no/source/fs/open.c?v=2.6.11#L690