Open Source im professionellen Einsatz

Sudo in Haskell

Außerdem lässt sich Haskells Typsystem auch einsetzen, um Berechtigungen anzufordern [5]. Zu diesem Zweck definiert Listing 6, dass die Funktion »mk_user« Sudo benötigt, um ihre Arbeit mit den Rechten des Superusers auszuführen. Damit lässt sich der Code aus Listing 5 nicht mehr kompilieren. Der aktualisierte Aufruf von »mk_user« muss »sudo« anfordern, wie Listing 7 zeigt.

Listing 7

Sudo anfordern

01 main = shelly $ do
02   csv <- readfile "users.csv"
03   mapM_ (sudo . mk_user) (usersFromCSV csv)

Listing 6

Sudo erforderlich

01 newtype Sudo a = Sudo { sudo :: ShIO a }
02
03 run_sudo :: Text -> [Text] -> Sudo Text
04 run_sudo cmd args = Sudo $ run "/usr/bin/sudo" (cmd:args)
05
06 mk_user :: NewUser -> Sudo Text
07 mk_user user =
08   run_sudo "addUser" [login user, "--gecos", firstName user <> " " <> lastName user]

Die Shelly-Bibliothek steht unter BSD-Lizenz und findet sich unter [3]. Der Autor verwendet sie derzeit in einem Installationsprogramm namens Cabal-meta [6] und seinem persönlichen Deployment-Skript. Im Zusammenspiel mit dem Make-Ersatz Shake [7] ergibt das eine schöne Werkzeugsammlung.

Einen ähnlichen Zweck erfüllt auch HSH [8]. Das im Web lesbare Buch "Real World Haskell" [9] beschreibt die Umsetzung der Bibliothek. HSH kümmert sich vor allem um die Weiterleitung der Ausgaben von der Kommandozeile an Haskell-Funktionen oder andere Befehle:

import HSH
runIO $ "ls -l" -|- "wc -l"

Auch Hsshellscript [10] übernimmt Aufgaben, die der Administrator ansonsten mit Shellskripten erledigt. Auch dieses Modul bietet eine umfangreiche Auswahl an praktischen Programmen, die den Funktionsumfang einer Haskell-Standardinstallation erweitern.

Ausblick

Die Haskell-Community lernt derzeit auf Shellskripte zu verzichten und greift für immer mehr Aufgaben zu ihrer Lieblingssprache. Möchte dieser Artikel also jedermann zu Haskell bekehren? Nein, aber er hat hoffentlich einige Anregungen gegeben, die man auch in anderen Sprachen umsetzen kann. (mhu)

Der Autor

Greg Weber http://blog.gregweber.info ist stets auf der Suche nach einer besseren Lösung. Er arbeitet bei Yap.tv an Webanwendungen und entwickelt beim Haskell-Webframework Yesod mit.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook