Hi Christian,
* Die Saved-Set-User-ID
Die ersten beiden IDs waren mir verständlich, doch was ist das hier? Auch wenn ich es vermutlich nicht beachten muss, der Interesse halber würde mich ein kurzer Kommentar dazu interessieren ;-)
Mir ist leider keine Möglichkeit bekannt, dies in Shell-Scripts zu tun. Du müsstest einen kleinen C-Wrapper schreiben, der das Shell-Script ausführt, damit das geht. Wenn jemand ne bessere Möglichkeit kennt, das sogar im Shellscript zu machen: Immer her damit. ;-)
Ich hab das mit Hilfe von Google jetzt soweit hinbekommen:
debian:/home/vps# ls -la bin/
total 44
-rwsr-xr-x 1 vps vps 7061 2007-03-08 22:23 post-update
-rw-r--r-- 1 vps vps 201 2007-03-08 22:23 post-update.c
-rw-r--r-- 1 vps vps 827 2007-03-08 22:22 post-update.sh
-rwsr-xr-x 1 vps vps 7060 2007-03-08 22:23 pre-update
-rw-r--r-- 1 vps vps 200 2007-03-08 22:22 pre-update.c
-rw-r--r-- 1 vps vps 263 2007-03-08 22:22 pre-update.sh
Die C-Scripte sehen im Prinzip nur so aus:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
system("/bin/bash /home/vps/bin/pre-update.sh");
return 0;
}
Leider ist das Resultat immer noch dasselbe - die Permission denied Meldungen :-(
Ich vermute, dass dies wieder damit zusammenhängt, dass die Shell das mit dem Benutzer wechseln nicht so wirklich kann, wie du bereits erwähnt hast. Aus diesem Grund habe ich mal ein PHP-Script gemacht, welches mit posix_setuid() die ID setzt und dann mit posix_geteuid() und posix_getuid() die effektive und reale User-ID anzeigt. Dazu habe ich natürlich dann auch noch den Wrapper angepasst, sodass er das PHP-Script ausführt.
Und siehe da - die Ausgaben haben für den realen User driehle ergeben und vps für den effektiven User. Ich werden also morgen mal testweise versuchen meine Shellscripte auf PHP-Scripte umzuschreiben.
Viele Grüße,
~ Dennis.