sudo verhält sich ungewönhlich

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
sven3
Beiträge: 2
Registriert: 01.06.2015 21:49:37

sudo verhält sich ungewönhlich

Beitrag von sven3 » 01.06.2015 22:34:23

Hallo Debianer,

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
Das Skript /usr/local/bin/script.sh, das ich von Tomcat aus starten will, sieht so aus:

Code: Alles auswählen

#!/bin/sh

if [ "$USER" = "tomcat7" ]; then
        /usr/bin/sudo "$0" "$@"
fi
id
echo "$USER"
Eigentlich soll das Skript natürlich andere Dinge als "id" als Root ausführen, aber hier liegt das Problem.

Der sudoers-Eintrag sieht so aus:

Code: Alles auswählen

tomcat7    ALL= NOPASSWD:  /usr/local/bin/script.sh
Nun werde ich vom Nutzer "root" aus per "su" zum Nutzer "tomcat7" und probiere das sudo:

Code: Alles auswählen

root@debian:~# su - tomcat7
$ /usr/local/bin/script.sh
uid=0(root) gid=0(root) Gruppen=0(root)
root
$ 
Sieht soweit gut aus.

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
Die Variable $USER ist also "root", aber UID und GID sind noch die von tomcat7...?

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:~# 
Gibt es da irgend eine SELinux-Policy, die dazwischenfunkt? Ich habe schon viel mit sudo gemacht, aber ich brüte jetzt seit 4 Stunden darüber und finde keine Lösung.

Kann mich jemand von euch erleuchten?

Danke und Grüße, Sven

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: sudo verhält sich ungewönhlich

Beitrag von habakug » 01.06.2015 23:29:09

Hallo!

Das "su -" ist eine Login-Shell. Probier mal

Code: Alles auswählen

[...]
/usr/bin/sudo -i "$0" "$@"
[...]
Dann nimmt sudo auch eine ( -i = --login). Siehe auch

Code: Alles auswählen

# man 5 sudoers
Gruss, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

sven3
Beiträge: 2
Registriert: 01.06.2015 21:49:37

Re: sudo verhält sich ungewönhlich

Beitrag von sven3 » 01.06.2015 23:36:05

Hallo habakug,

sorry, das hatte ich vergessen zu schreiben, "-i" hatte ich bereits versucht zu setzen. Macht leider keinen Unterschied. :-(

Danke für deine Antwort!
Sven

uname
Beiträge: 12540
Registriert: 03.06.2008 09:33:02

Re: sudo verhält sich ungewönhlich

Beitrag von uname » 02.06.2015 06:14:30

Der Benutzer soll das Script oder den Befehl als root ausführen?
Das muss dann in der sudoers-Zeile stehen.

Antworten