ich möchte aus Tomcat heraus das Skript /usr/local/bin/script.sh starten. Dafür habe ich dem Nutzer "tomcat7" erst mal eine Shell verpasst, mit der er das darf:
Code: Alles auswählen
chsh -s /bin/sh tomcat7
Code: Alles auswählen
#!/bin/sh
if [ "$USER" = "tomcat7" ]; then
/usr/bin/sudo "$0" "$@"
fi
id
echo "$USER"
Der sudoers-Eintrag sieht so aus:
Code: Alles auswählen
tomcat7 ALL= NOPASSWD: /usr/local/bin/script.sh
Code: Alles auswählen
root@debian:~# su - tomcat7
$ /usr/local/bin/script.sh
uid=0(root) gid=0(root) Gruppen=0(root)
root
$
ABER: Wenn ich aber nun aus der Tomcat-Webapplikation heraus exakt das gleiche mache (also /usr/local/bin/script.sh ausführe), passiert das hier:
Code: Alles auswählen
uid=106(tomcat7) gid=110(tomcat7) Gruppen=110(tomcat7)
root
Was ich nun nicht verstehe, ist: warum gibt es einen Unterschied zwischen
1) sudo wird durch den Tomcat-Prozess aufgerufen (der auch tatsächlich im Kontext "tomcat7" läuft
und
2) sudo wird von Hand an der Kommandozeile aungerufen (ebenfalls als Nutzer "tomcat7")?
Eigentlich sieht das nach aktiviertem "stay_setuid" aus, ist aber nicht der Fall:
Code: Alles auswählen
root@debian:~# sudo -ll -U tomcat7
Matching Defaults entries for tomcat7 on this host:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User tomcat7 may run the following commands on this host:
Sudoers entry:
RunAsUsers: root
Commands:
NOPASSWD: /usr/local/bin/script.sh
root@debian:~#
Kann mich jemand von euch erleuchten?
Danke und Grüße, Sven