Langkah-langkah mereproduksi:
germar@host:~$ cd /tmp/
germar@host:/tmp$ touch test && chmod u+s test && ls -la test
-rwSr--r-- 1 germar germar 0 Nov 2 20:11 test
germar@host:/tmp$ chown germar:germar test && ls -la test
-rw-r--r-- 1 germar germar 0 Nov 2 20:11 test
Diuji dengan Debian squeeze dan Ubuntu 12.04
permissions
users
chown
Germar
sumber
sumber
Jawaban:
Bukan bug menurut dokumentasi chown:
$
info coreutils 'chown invocation'
sumber
info coreutils
sebelumnya. Saya hanya membaca halaman manual dan mencari di web.Ini adalah desain, dan itu perilaku standar. Mengutip standar POSIX :
(
s
adalah setuid (atau setgid di kolom grup), tidak lengket, omong-omong.)Perilaku ini mengikuti panggilan sistem yang mendasarinya (kecuali bahwa pada beberapa sistem, bit setxid hanya dihapus untuk file yang dapat dieksekusi).
Alasan untuk menghapus bit setuid adalah bahwa mengubah pemilik juga mengubah pengguna mana yang akan menjadi ID pengguna efektif proses. Secara khusus, pada sistem di mana pengguna dapat memberikan file,
cp /bin/sh foo; chmod u+s foo; chown joe foo
akan membuat setuid executable milik joe, lubang keamanan raksasa.sumber