staging.inyokaproject.org

Script von jedem nutzbar - wohin mit vertraulichen Zugangsdaten ?

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

u1000

Anmeldungsdatum:
2. Oktober 2011

Beiträge: 1850

Hi,

habe hier ein funktionierendes Shell Script Schnipsel, welche direkt Mails zu meinem email-Provider schicken kann (mailx aus dem s-nail Paket / Arch Linux)

echo "${message}" | LC_ALL=C mailx -:/ \
-S v15-compat -S sendwait -S ttycharset=utf8 \
-S smtp-auth=login -S ssl-verify=strict -S mta="${mta}" \
-S from="${USER}@$(hostname)<${from}>" \
-s "${subject}" -. "${to}"

Die Variable ${mta} enthält dabei die vertraulichen Zugangsdaten (username, password, server).

Wie kann das Script von jedem lokalen User genutzt werden, auch nobody, aber ohne das jeder die Zugangsdaten einsehen kann?

Vielen Dank!

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6532

Mit den Zugangsdaten kann ich Dir nicht helfen, da ich mal annehme das diese für alle gleich sind.

Aber das Script würde ich nach /usr/local/bin/ packen. Da ist es für alle zugänglich.

u1000

(Themenstarter)

Anmeldungsdatum:
2. Oktober 2011

Beiträge: 1850

Ja genau, das Script soll hier liegen /usr/local/bin/

und hat "rx" Rechte für alle, damit kann jeder aber auch die Zugangsdaten im Script einsehen ... ☹

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Wie kann das Script von jedem lokalen User genutzt werden, auch nobody, aber ohne das jeder die Zugangsdaten einsehen kann?

IMHO gar nicht. Damit das Skript ausgeführt werden kann, muss der ausführende Nutzer Lese-Rechte auf das Skript haben. Und damit kann er es auch einsehen.

Gruß, noisefloor

Into_the_Pit Team-Icon

Ehemalige
Avatar von Into_the_Pit

Anmeldungsdatum:
25. Juni 2008

Beiträge: 9490

Eine elegante Lösung wäre, wenn die Variable ${mta} aus einer Datei liest. Damit kann man die Daten in den Home-Verzeichnis des Users z.B. ablegen etc.

u1000

(Themenstarter)

Anmeldungsdatum:
2. Oktober 2011

Beiträge: 1850

@ noisefloor: Das ist ja genau das Problem, für welches ich nach einer Lösung suche ☺

@ Into_the_Pit: Der User kennt die Zugangsdaten nicht, und soll sie auch nicht kennen. Lege ich die Zugangsdaten bei User X ins Verzeichniss kann ein User Y das Script nicht verwenden.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

@Into the Pit: aber dann muss die Datei mit den geheimen Daten mit den Rechten lesbar sein, mit denen das Skript läuft. Damit ist es für den Nutzer lesbar.

@u1000: dafür gibt es keine direkte Lösung. Wenn ein Interpreter (wie die Bash, Python, Perl, ...) involviert ist, muss die Datei lesbar sein. Work-around: Skiprt in eine Binärdatei umwandeln / kompilieren, dann reicht als Rechte 711. Womit andere Nutzer das Skript schon mal nicht ohne weiteres zum Dekompilieren lesen können.

Gruß, noisefloor

Tronde Team-Icon

Avatar von Tronde

Anmeldungsdatum:
23. November 2006

Beiträge: 1640

Guten Abend,

vielleicht kannst du dein Problem mit Setuid lösen. Du lagerst wie Into_the_Pit beschrieben hat den Inhalt von ${mta} in eine Datei aus, welche nur vom Besitzer des Skripts nicht jedoch vom aufrufenden Benutzer gelesen werden kann.

Dies ist nur eine ungetestete Idee, gleichzeitig ist sie denke ich einen Versuch wert.

MfG
Tronde

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

so ähnliche Lösungsansätze findet man auch im Netz. Wobei dann direkt zumeist darauf hingewiesen wird, dass das mit einigen Distros nicht funktioniert, weil dort setuid "anders" implementiert ist (wie auch immer das genau gemeint ist).

Wäre aber trotzdem unter Ubuntu einen Versuch wert.

Gruß, noisefloor

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6532

Soweit mir bekannt ist, funktioniert "setuid" bei Scripten nicht.

Tronde Team-Icon

Avatar von Tronde

Anmeldungsdatum:
23. November 2006

Beiträge: 1640

Statt mit setuid könntest du dem Skript den Besitzer root zuordnen und den Anwendern das Recht geben, dieses eine Skript – und nur dieses eine Skript – mit sudo auszuführen. Oder du schreibst einen C-Wrapper für das Skript. Zu Letzterem findest du hier einige Hinweise: https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts 🇬🇧.

u1000

(Themenstarter)

Anmeldungsdatum:
2. Oktober 2011

Beiträge: 1850

Danke für alle Tipps !

Die Sache mit sudo klingt gut, da könnte man die Zugangsdaten in eine Datei schreiben, die nur von root lesbar ist.

Aber auch wenn die "Einfachheit" von mailx aus dem s-nail Packet für Scripte verlockend ist, ggf. ist eine Standart Lösung wie msmtp, ssmtp, opensmpt oder nullmailer besser.

Antworten |