Étapes à reproduire:
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
Testé avec Debian squeeze et Ubuntu 12.04
permissions
users
chown
Germar
la source
la source
Réponses:
Pas un bug selon la documentation chown:
$
info coreutils 'chown invocation'
la source
info coreutils
avant. Je n'ai lu que la page de manuel et cherché sur le Web.C'est par conception, et c'est un comportement standard. Citant la norme POSIX :
(
s
est setuid (ou setgid dans la colonne groupe), pas collant, au fait.)Ce comportement suit celui de l' appel système sous - jacent (sauf que sur certains systèmes, les bits setxid ne sont effacés que pour les fichiers exécutables).
La raison de la suppression du bit setuid est que le changement de propriétaire change également l'utilisateur qui sera l'ID utilisateur effectif du processus. En particulier, sur les systèmes où un utilisateur peut donner un fichier,
cp /bin/sh foo; chmod u+s foo; chown joe foo
créerait un exécutable setuid appartenant à Joe, un trou de sécurité géant.la source