it-swarm.com.de

Wie führe ich ein Skript als anderer Benutzer ohne Passwort aus?

Ich habe script.sh, die als user2 ausgeführt werden muss. Dieses Skript kann jedoch nur unter user1 in meiner Anwendung ausgeführt werden.

Ich möchte den folgenden Befehl ausführen:

su user2 -C script.sh

aber in der Lage sein, ohne Passwort zu laufen.

Ich möchte auch, dass dies sehr restriktiv ist, da in user1 script.sh nur unter user2 und sonst nichts ausgeführt werden kann.

Ich habe versucht, dies mit sudoers-Datei zu tun, und bin nach stundenlangem Versuchen endlos durcheinander geraten.

Wenn jemand ein explizites Beispiel liefern kann, wie dies erreicht werden kann (anstelle von etwas allgemeinem wie der Verwendung von Sudoern), wäre dies sehr dankbar.

138
user788171

Rufen Sie visudo auf und fügen Sie Folgendes hinzu:

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh

Die Befehlspfade müssen absolut sein! Dann ruf an Sudo -u user2 /home/user2/bin/test.sh von einem user1 Shell. Getan.

114
pyroscope

versuche es mit:

su -c "Your command right here" -s /bin/sh username

Dadurch wird der Befehl als Benutzername ausgeführt, vorausgesetzt, Sie haben Berechtigungen für Sudo als dieser Benutzer.

190
Jeronimo Robles
`su -c "Your command right here" -s /bin/sh username`

Der obige Befehl ist korrekt, aber unter Red Hat erlaubt es Selinux nicht, Skripte als anderer Benutzer auszuführen, wenn es erzwungen wird. Beispiel; execl: couldn't exec /bin/sh execl: Permission denied

Ich musste setroubleshoot und setools installieren und Folgendes ausführen, um dies zu ermöglichen:

yum install setroubleshoot setools
sealert -a /var/log/audit/audit.log
grep crond /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.p
0
C Jaskoski