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)
Infos
- Haskell: http://www.haskell.org
- Haskell Platform: http://hackage.haskell.org/platform/
- Shelly: http://hackage.haskell.org/package/shelly
- Miran Lipovaca, "Learn You a Haskell for Great Good!": http://learnyouahaskell.com
- Don Stewart, "Scripting With Types": http://donsbot.files.wordpress.com/2009/01/semicolon.pdf
- Cabal-meta: http://hackage.haskell.org/package/cabal-meta
- Shake: http://hackage.haskell.org/package/shake
- HSH: http://hackage.haskell.org/package/HSH
- Bryan O'Sullivan, Don Stewart und John Goerzen, "Real World Haskell": http://book.realworldhaskell.org/read/systems-programming-in-haskell.html
- Hsshellscript: http://hackage.haskell.org/package/hsshellscript
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 4 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





