dd or not dd, that's the question

Wanneer het gaat om het “branden” van iets als een .iso bestand naar een USB stick dan hebben we tegenwoordig keuze te over. We hebben meerdere grafische tooltjes, leuke TUI dingen voor in de terminal, maar natuurlijk ook de OG: dd.

De eerste twee soorten tooltjes zijn vaak erg specifiek (brand een iso naar een USB), maar met dd kun je ook dingen doen als uppercase/lowercase wisselen, “sparse” bestanden maken, of zelfs alle even en oneven bytes switchen.

Achtergrond Taken met systemd-run

Wanneer je op een Linux commandline een proces op de achtergrond wilt draaien gebruik je traditioneel “Job Control”, dus magie met &, fg, bg, jobs, etc. Wanneer je dan ook resource gebruik wilt beperken ga je dit doen in combinatie met commando’s als nice en vrienden.

Nu is dit voor veel dingen meer dan afdoende, en hoef je niet meer verder te kijken. Wil je daarentegen meer controle over resource gebruik, automagisch herstarten na een failure, of andere, moderne, gemakken, dan zul je naar andere tooling moeten grijpen.

Linux Capabilities

Vroegâh, toen alles nog beter anders was, had een proces of gebruikers-rechten, en mocht bijna niks, of root-rechten, en mocht bijna alles. Tools als arping, die zelf netwerk pakketjes willen maken buiten het kernel om, moesten toen dan ook op disk het SETUID bitje hebben, zodat ze bij het uitvoeren als root zouden draaien.

Al terug in 1999 is hier verandering in gekomen, toen processen “Capabilities” konden krijgen met het 2.2 kernel. Sinds 2008 kunnen deze capabilities ook aan executables op disk gekoppeld worden, zodat er fijnmazig rechten uitgedeeld kunnen worden aan tools die dat nodig hebben.