Kroki ku reprodukcji:
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
Testowane z użyciem Debian squeeze i Ubuntu 12.04
permissions
users
chown
Germar
źródło
źródło
Odpowiedzi:
Nie jest to błąd zgodnie z dokumentacją Chown:
$
info coreutils 'chown invocation'
źródło
info coreutils
wcześniej Czytam tylko stronę podręcznika i przeszukuję sieć.Jest to zgodne z projektem i jest to standardowe zachowanie. Cytując standard POSIX :
(
s
nawiasem mówiąc, jest setuid (lub setgid w kolumnie grupy), nie jest lepki).To zachowanie jest zgodne z podstawowym wywołaniem systemowym (z wyjątkiem tego, że w niektórych systemach bity setxid są czyszczone tylko dla plików wykonywalnych).
Powodem usunięcia bitu setuid jest to, że zmiana właściciela zmienia również, który użytkownik będzie efektywnym identyfikatorem użytkownika procesu. W szczególności w systemach, w których użytkownik może rozdawać pliki,
cp /bin/sh foo; chmod u+s foo; chown joe foo
tworzyłby plik wykonywalny setuid należący do Joe, gigantycznej luki bezpieczeństwa.źródło