Das Setuid-Bit hat je nach Verzeichnis ein unterschiedliches Verhalten

360
wallek876

Ich habe die Erlaubnis für das Setuid getestet und habe Probleme damit, dass es funktioniert.

Nehmen wir an, ich mache die Tests mit zwei Benutzern owneruserund otheruser.

Ich habe ein einfaches c-Programm geschrieben, das nur aufgerufen wird system(), um den aktuellen Benutzer anzuzeigen.

testid.c:

int main(void) { setresgid(222, 222, 222); // To simplify, this numbers represent just harcoded  setresuid(222, 222, 222); // values for the owneruser id and owneruser group id  system("whoami"); } 

Der Benutzer owneruserkompiliert das Programm in zwei verschiedene Verzeichnisse und setzt das Setuid-Bit, eines owneruserfür das Beispiel und das andere für das Beispiel für das /tmpVerzeichnis. Die Befehle sehen etwa wie folgt aus:

gcc testid.c -o /tmp/testid gcc testid.c -o /home/owneruser/testid  chmod 4755 /tmp/testid chmod 4755 /home/owneruser/testid 

Wenn jetzt otheruserdie Programme ausgeführt werden, /home/owneruser/testidbekomme ich die Ausgabe:

owneruser 

und in /tmp/testidbekomme ich die Ausgabe:

otheruser 

Was verursacht dieses unterschiedliche Verhalten?

1
Kannst du die Ausgabe von `mount | grep / tmp`? user2313067 vor 6 Jahren 0
@ user2313067 Ich sehe jetzt die Ausgabe: `tmpfs auf / tmp Typ tmpfs (rw, nosuid, nodev)` wallek876 vor 6 Jahren 0

0 Antworten auf die Frage