Це задумом, і це стандартна поведінка. Цитуючи стандарт POSIX :
Якщо хоун не викликається процесом з відповідними привілеями, ідентифікатор set-user і ID-групи set-group у звичайному файлі очищаються після успішного завершення; ідентифікатори set-user-ID та біти-ID групи set інших типів файлів можуть бути очищені.
( s
встановлено (або встановлено значення в стовпці групи), а не липким, до речі.)
Така поведінка випливає з базового системного виклику (за винятком того, що в деяких системах біти setxid очищаються лише для виконуваних файлів).
Причиною видалення біта setuid є те, що зміна власника також змінює, який користувач буде ефективним ідентифікатором користувача процесу. Зокрема, у системах, де користувач може видавати файл, cp /bin/sh foo; chmod u+s foo; chown joe foo
створили б виконаний файл із налаштуваннями, що належить Джо, гігантській дірі в безпеці.