sudo aktionen mit einer zeile?

timoken

timoken

Aktives Mitglied
Thread Starter
Dabei seit
11.11.2003
Beiträge
831
Reaktionspunkte
8
kann ich eine sudo-aktion so durchführen, dass ich das passwort direkt mit angebe und nicht auf den prompt warten muss? kenne das z.b. von ftp

ftp user:pass@domain.de
 
geht denn eine login- oder su-aktion auf diese weise?
 
Lieber timoken,

mir ist aufgefallen, dass Du oft nur Teilfragen stellst, aus denen nicht ersichtlich ist, worum es Dir eigentlich wirklich geht. Man kann aber viel besser helfen, wenn Du nicht nach einem einzelnen Schritt fragst, sondern das Ziel beschreibst.

Ich habe mir mal erlaubt, einen passenden Link dazu herauszusuchen.

HTH
 
dazu hat sudo keine option...
du kannst höchsten ein wenig fuschen mit der -S option und das passwort über stdin übergeben ala
echo "passwort" > sudo -S irgendwas

aber wozu eigentlich? sudo merkt sich doch das passwort für eine bestimmte zeit, so dass du es nicht immer wieder bei jedem sudo kommado eingeben musst...
 
ich will in einem macromedia-director-projekt dem user die möglichkeit geben, über ein xtra shell-operationen auszuführen. in meinem speziellen fall sollen ein paar libraries in /usr/local/lib kopiert werden. das besagte xtra kann jedoch nur einen befehlsstring an bash übergeben und nicht mit bash "interagieren" (">", "|" und ";" gehen natürlich auch). somit habe ich keine möglichkeit, auf den prompt zu reagieren, der beim sudo befehl erfolgt. ergo kann ich auch kein passwort für sudo angeben und der ganze kopiervorgang scheitert an den zugriffsrechten.

mein ansatz war jetzt, username und passwort in einem befehl zu übergeben um das problem zu umgehen.

tut mir leid, wenn ich mich etwas missverständlich ausgedrückt habe. ich dachte, es wäre einfacher, wenn ich keine romane schreibe und mich auf das grundproblem beschränke.

maceis schrieb:
Lieber timoken,

mir ist aufgefallen, dass Du oft nur Teilfragen stellst, aus denen nicht ersichtlich ist, worum es Dir eigentlich wirklich geht. Man kann aber viel besser helfen, wenn Du nicht nach einem einzelnen Schritt fragst, sondern das Ziel beschreibst.

Ich habe mir mal erlaubt, einen passenden Link dazu herauszusuchen.

HTH

p.s.: werde es jetzt mal wie folgt probieren:
cd "/pfad/zu/meinen/libs"; echo "passwort" > sudo -S -u "adminuser" cp -R -n * /usr/local/lib
 
timoken schrieb:
mein ansatz war jetzt, username und passwort in einem befehl zu übergeben um das problem zu umgehen.

Danger, Will Robinson!

Das wäre eine 1A Möglichkeit für einen sehr bösen Exploit

Alex
 
timoken schrieb:
in meinem speziellen fall sollen ein paar libraries in /usr/local/lib kopiert werden.

ähhhh, was für libraries? und warum der ganze blödsinn über macromedia?
du musst die libraries nicht zwangsläuft dahin kopieren, du kannst auch über shell variable den pfad zu libraries angeben...
 
Seh ich auch so wie below.

Ich würde folgendes Vorgehen empfehlen.

Ich würde ein Skript schreiben, in dem die erforderlichen Kommandos stehen.
Das Skript darf ausschließlich für root änderbar sein! und ist am besten nur für einen Benutzer ausführbar.

Dann würde ich diesem bestimmten Benutzer erlauben, das Skript mit sudo mit root Rechten ohne Passwort auszuführen.
Das geht über einen Eintrag in der Datei "/etc/sudoers", die man mit dem Kommando "sudo visudo" editiert.
Weitere Einzelheiten: "man sudoers"

Eine weitere - bessere aber aufwändigere - Methode besteht darin, ein Skript zu schreiben, das die Kommdos enthält.
Zu dem Skript schreibt man einen Wrapper in C, c++ o.ä.
Dieser bekommt als Eigentümer root und ein SUID Bit in den Rechten.

HTH
 
also:

das macromedia-projekt wird später als software verbreitet und soll entsprechend unkompliziert auf verschiedenen rechnern installierbar sein.
das heißt, dass das user- und rechnerunabhängig funktionieren muss. ich kann also nicht mirnichts dirnichts /etc/sudoers ändern.

meine idee war, die software beim start prüfen zu lassen, ob entsprechende libraries installiert sind und falls nicht, admin-user und admin-passwort abzufragen und diese libraries via sudo an die richtige stelle zu kopieren.

bei den libraries handelt es sich um verschiedene libraries wie libfreetype, libjpeg, libt1 etc. die zwingend für den betrieb von pdf2swf (http://www.pdf2swf.org) benötigt werden. leider gibt es da noch keine elegantere und kompaktere mac-version von.

wie es ausschaut, wird das aber alles wohl nicht so elegant gehen, wie ich mir das vorstelle. also brauche ich einen separaten skript/installer für die libs.

und was bitte heißt "Danger, Will Robinson! Das wäre eine 1A Möglichkeit für einen sehr bösen Exploit"? ich verstehe nur bahnhof ;-)
 
timoken schrieb:
also:

das macromedia-projekt wird später als software verbreitet und soll entsprechend unkompliziert auf verschiedenen rechnern installierbar sein.
das heißt, dass das user- und rechnerunabhängig funktionieren muss. ich kann also nicht mirnichts dirnichts /etc/sudoers ändern.
...
Das leuchtet ein, war aber bisher nicht bekannt.
 
besagte pdf2swf (sorry, habe mich vertan. pdf2swf ist bestandteil von www.swftools.org) gibts als simple exe-dateien für die windows-version. auf dem mac war das etwas schwieriger. ein kumpel von mir, der linux-freak ist, hat mir das für den mac aus den linux-quellcodes kompiliert. allerdings müssen die libraries im entsprechenden ordner sein damit es funktioniert. jetzt habe ich das problem, dass ich sicherstellen muss, dass diese libraries auf fremden rechnern verfügbar sind.

wir haben es nicht geschafft, die libraries in das binary mit einzubinden. geht das überhaupt? aber das ist wohl eine andere baustelle, pdf2swf elegant auf dem mac zu portieren...
 
Warum kapselst du die Vorgänge im Terminal nicht ganz bequem in Applescript?
Also: Passwort abfragen, und dann do shell script mit passwort...
Gerade so copy/move/delete Geschichten lassen sich bequem lösen.

Grüße,
Flo
 
wenn ich mich nicht irre habe ich bei do shell script aus applecript heraus das gleiche problem mit dem sudo-befehl wie aus director heraus.
das problem ist, dass sowohl "do shell script" (applescript) als auch "shell_cmd" (director shell.xtra) nach dem string, den man als befehl übergibt den bash-prozess beendet und keine weiteren eingaben zulässt.
ein erneutes aufrufen der bash erzeugt einen neuen prozess und hat damit keine verbindung mehr zum prompt des vorherigen prozesses.
 
timoken schrieb:
...nach dem string, den man als befehl übergibt den bash-prozess beendet und keine weiteren eingaben zulässt...

So funktioniert es:

Code:
set thePasswort to display dialog "Please enter your Password:" default answer ""
set Passwort to text returned of thePasswort

do shell script "mv /File/von/A/ nach/B/" password Passwort with administrator privileges

Ich setze dieses Konstrukt mit Erfolg immer wieder in Scripte ein.
Einziger Wermutstropfen: AS zeigt das Passwort bei der Eingabe im Dialogfeld auch an. Wenn man das lieber mit Sternchen hätte muss man auf AS Studio/XCode zurückgreifen.

Grüße,
Flo
 
"with administrator privileges" habe ich noch nie probiert. könnte klappen...
mir ist aber rein prinzipell etwas unwohl, neben director und shell nun auch noch applescript einzusetzen. denn das reduziert die möglichkeit, das später evtl. auf linux zu portieren.

(ich weiß... director gibt es nicht für linux... ;-) aber es muss auch vielleicht nicht für immer director bleiben.)
 
@Timonken:
Vielleicht hilft das:

su - username << HERE
hier_das_password
# ab hier die Befehle, Beispiel:
ln -s /rg/rsasp01/dwhprod/usr_scc_fraud_1/ dwhwork
# Achtung, hinter dem HERE darf kein Blank sein
HERE

Gruß - Fafnir
 
@faFir

Das ist zwar eine nette Sache, würde aber zume Einen voraussetzen, dass der root Benutzer auf den Rechnern aktiviert ist. Davon kann man aber nicht ausgehen.
Zum Anderen müsste timoken immer noch die Passwörter abfragen.
Darin steckt doch letztendlich das eigentliche Problem.
 
stimmt, ich gehe davon aus, dass zwar admin- aber nicht root-passwort verfügbar ist.

username und passwort frage ich allerdings vorher in einem grafischen prompt ab bevor ich den shell-befehl starte. also stehen die auf jeden fall zur verfügung.

fafnir: leider hat ein admin "normalerweise" auch keine rechte, etwas in /usr/local/lib zu kopieren. das hat er nur via "sudo" als "pseudo-root".
 
timoken schrieb:
also:
bei den libraries handelt es sich um verschiedene libraries wie libfreetype, libjpeg, libt1 etc. die zwingend für den betrieb von pdf2swf (http://www.pdf2swf.org) benötigt werden. leider gibt es da noch keine elegantere und kompaktere mac-version von.

wie es ausschaut, wird das aber alles wohl nicht so elegant gehen, wie ich mir das vorstelle. also brauche ich einen separaten skript/installer für die libs.

und was bitte heißt "Danger, Will Robinson! Das wäre eine 1A Möglichkeit für einen sehr bösen Exploit"? ich verstehe nur bahnhof ;-)
1) Wenn Du Libraries ins System installieren MUSST, dann ist die sauber Möglichkeit ein separates Apple Package. Die Installer Pakete können vor der Installation eine Script starten, das unter Admin-Rechten läuft und so abfragen ob die Libraries da sind, oder nicht, und dann nur bei Bedarf installieren.
2) Dein Makromediaprojekt verpackst Du dann separate in ein zweites Installerpackage.
3) Beides zusammen verpackst Du in ein sogenannten Meta-Package.
4) Den PackageMaker gibt's kostenlos von Apple und ist auch schon bei jedem Mac OS X dabei, sobald man die Entwicklungsumgebung "Xcode" installiert hat.

Vorteile:
* Der Benutzer sieht nur einen Installer
* Du hast die verschiedenen Installationspakete sauber getrennt, das hilft auch bei der Wartung
* Du benutzt das System so wie es sein soll, auch für die Abfrage eines Admin-Passworts
* Du musst Dir nicht selbst was ausdenken.

Daneben: Alles was man nachträglich installiert sollte sowieso nach /usr/local/ !!!

BITTE BITTE: keine eigenen Installer bauen, die selbst irgendwas am System vorbeihacken wollen! Mac OS X bringt alles mit, was man braucht. Nicht in Linux Mantalitäten verfallen wo so einiges nicht so elegant funktioniert ...

viele Grüße, Maximilian.

(Ich könnte jetzt noch einen Tipp geben, zur Verarbeitung von Passwörtern an sudo scripts, aber irgendwie weiss ich da nicht so recht .... man expect)
 
Zurück
Oben Unten