The tools of the gods

Today at SAW we are not going to talk about security but about religion. About the true religion, the good one: about Unix. And about its gods: Kernighan, Ritchie, Thompson … we could cite a few. And about the tools that, in the seventies, these gods sent to us poor mortals, like the manna fallen from heaven for the chosen people.

The thing is that these gods created a real operating system, with some technically wonderful tools and a very simple philosophy: simple capabilities that combined make complex tasks. Perfection. Life is Unix running a script. More than forty years have gone by and we, poor mortals who were the chosen people, what have we done all this time? Trying to dishonor that divine legacy with artificial and useless layers (“of abstraction”, they call them, to try to make sense of them) that introduce two unnecessary problems in any “modern” technological environment: complexity, and therefore probability of error, and slowness.

Exemplary is the “true” executable, in line with the story recently commented by Rob Pike on Twitter:


$ >mytrue;chmod +x mytrue
$ ./mytrue
$ echo $?
0
$

A program whose only purpose is to always return 0. An empty executable. EMPTY. There can be nothing simpler that works, and has been for forty years … well, that’s where we mortals come in. Year 2018:


$ ls -l /usr/bin/true
-rwxr-xr-x 1 root wheel 17760 29 abr 2017 /usr/bin/true
$ file /usr/bin/true
/usr/bin/true: Mach-O 64-bit executable x86_64
$ otool -L /usr/bin/true
/usr/bin/true:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
$ /usr/bin/true
$ echo $?
0
$

Of course, this is just an example, and not a serious one, of how we like to complicate ourselves. As a prophet said years ago, “Those who do not understand Unix are condemned to reinvent it, poorly.” I imagine the initial brainstorming in a group that then ends up revealing certain technologies:

–Guys, let’s make some tools to handle large data sets that are now in flat files.
–But, we already have awk, sed, grep…
–They work super well and people do not hire maintenance. Listen, we’ll call them “databases.”
–Databases? You’re joking, right?
–No, no, I have everything tied up: they make it so that the underline file can only be processed with our program by entering several layers of abstraction, but they are also really handling text files, as they’ve been doing until now …
–Hahahaha, what a bastard! You don’t have the balls, Larry!
–Hold my beer.

#define SELECT grep
#define ALTER sed
#define DELETE cut
#define DROP “>”
int make_program_look_bigger[1000000];

–You’re the fucking master, Larry. What will be next, guys? A programming language that can turn this Sun 3500 into an 8086, with some excuse? What would you come up with?
– We can put a sleep in the even lines of our C code and say that the platform doesn’t matter.
– Hahahahaha, they won’t swallow it… Wait, what are you doing, James?
– Hold my beer…

Obviously, situations like the previous ones occur because although we know that Unix is ​​the true religion, Kernighan, Ritchie and others are their gods and some others are their prophets, even so there are atheists among us (we will call them that way so as not to be cruel, although the technical name is Human Malware), seemingly technical profiles that have not wanted, known how or been able to see the real light; the non-technical profiles are excused, because Unix has not lit their lives yet. We all know an atheist: they are the ones who always look for complex solutions to trivial problems. Ask any believer how to perform an operation on, say, a log, and with an awk line and he will solve it. Ask an atheist and he will define a database structure, parse the log with a Java program that uses several libraries downloaded from github to convert it into an XML, then insert it into the before-mentioned database, and set up a committee to determine critical aspects, such as choosing pastel tones for the graphical interface or analyzing the location of the buttons in a web application that connects via API against a cloud server that in turn applies machine learning techniques to the bloody log. And this for what? To remove the lines that contain the string “foo”. Mind you, in the third field, there is nothing to it.

Within that family that we are kindly calling “atheists” we can differentiate several characteristic types ‒ they are the following:

– Processator. He fixes everything with committees, processes, procedures, controls, control checks, periodic monitoring and derivatives. Actually this subspecies is not an atheist, but worse: he is trying to convert people to another religion, ITIL, considered a destructive sect in many environments. A processator should be considered HIGHLY HAZARDOUS and, in the event of encountering one, it is recommended not to approach him and immediately notify the authorities. We can also change some of their works, such as Coaching for IT Strategists: a fist fucking approach, for a copy of The Magic Garden Explained or The Design of the Unix Operating System, which will achieve a spontaneous combustion as soon as the reading begins.

– Visual developer. A programmer who does not know how to use pointers and therefore rejects C; scripting is not an alternative because “they are half-assed”. When faced with a problem (“requirements specification” they call it) he analyzes the situation for days, makes comparisons between several technologies, sets up development environments to perform benchmarkings and, in six months, determines that he will deploy ten layers of abstraction to empower the user in their relationship with technology and thus avoid the personalized treatment of the data. You laugh at ISO/OSI. Of course the program will never work, but it will be because of an incorrect specification of requirements; in these cases, inviting the atheist to read and internalize the Sacred Scriptures, The C Programming Language and The Unix Programming Environment, may be useful, although not as much as a shot in the knee.

– Securitor. He has just updated his LinkedIn to be “Senior Security Architect, Red Team Leader and Chief Strategist Hacker” because he has read a manual of metasploit while finishing his Master’s degree and is already pushed to the max, with his Kali Linux and its menus. Of course, he prefers this manual to Computer Networks or Tanenbaum’s Modern Operating Systems, because Tanenbaum is not a hacker and also uses troff, and that’s not cool … Unlike in the previous case, the shot in the knee is usually counterproductive, because the atheist would continue to bother and on top of that he would become paranoid, activating the MOSSAD_CLAIMS_FOR_ME mode in his life and becoming even more obnoxious. It is more effective to modify his /etc/hosts to point www.sgae.es to www.fsb.ru, to convince him to attack the SGAE because of the CD canon, which never goes out of fashion, and let nature follow its course.

– DevOps. Manages Ubuntu machines and has bought a Raspberry, so we should consider him devops, because he thinks he is a real BOFH but occasionally he lets out words like XML or agile. He regularly goes to endogamic meetings where some devops explain to other devops things about devops, with dockers and such, and the legend tells that once one of them recompiled a Linux kernel and did not tell it to the others. A Quarter Century of Unix History may be a good present for these atheists, so they can be aware of the fact that many things have not been discovered by them, as well as a keyboard without intro, which never hurts in these cases. And if we also want to have fun, let’s slip the evil.sh in their .bash_profile.

– The user. Although he considers himself a technical profile because he once managed to get out of vi and became a youtuber and an instagramer at the same time, his skills are actually not very broad and we must consider him a user. From time to time he says phrases like “We technicians” or “Here we all come from the technical side”, which sounds like when the Gibraltarians say “Nozotro lo ingleze”. Before this particular type of atheist we cannot recommend any reading, only understanding and patience, and also to speak slowly so they do not swap, notwithstanding, it is easy – and fun, it must be said – to entertain them with some words wisely combined so that they do not bother, as “It is that on the red team we are working with a VPN through USB that sends TCP packets to IoT devices.”  Come on, process it, champ.

What should we do with these people? Put away the AK-47, please, I see you coming and we should not legislate in the heat of the moment. The situation is complex, mainly because atheists have no natural predators and, especially in recent years, they have been dedicated to reproducing exponentially. If you come across one you can give him some condoms to stop his reproductive tendency, but one tip: never make yourselves heroes, for these people have nothing to lose, like the administrators of Lotus Notes, and can even get aggressive. For example, the processator is particularly disturbed by things like someone skipping step 3, point 3.8, section 3.8.A, paragraph 3.8.Ac, line 3.8.AcXVI, of the procedure “Management of corporate computing resources in full synergy with the business “, which says that all renice must be approved through a bureaufax with the official seal, signed by the IT Manager and addressed to the Business Strategist of the organization. He gets nervous, he spins his head and starts talking in ITIL.

In SAW we do not have the magic solution to face the atheist group that swarms in organizations. Some naïve people think that they can be recovered with simple initiatives, for example with campaigns where the hashtag #AdoptAnAtheist (#AdoptALuser) is used to send them funny hints that try to show them the right way, like “biff has also been warning of new messages … for 40 years and without ridiculous little sounds, imbecile #AdoptAnAtheist “, “Less stackoverflow and more RTFM #AdoptaUnAteo” or “Do not open CSV files with Excel, motherfucker! #AdoptAnAtheist“. But we know that this will not work: neither will it return the atheist to the true path nor will we convince him to convert water into wine. That’s why we look at History: what has always been done with people who abandon true religion? Two things: exorcisms and human sacrifices. Period.

If we are going to exorcise atheists, for example possessed by systemd, we must be careful. From SAW we recommend that an exorcism be executed only by professionals, because if it goes wrong and we are overconfident, we believe we have recovered him and one day we find the false believer saying in a forum that ifconfig is deprecated. When he realizes that we are going to exorcise him, the atheist will try to confuse us so as to make us believe that he has seen the true light. He can say things in unknown languages, the result of possession, of the type “Powered by Solaris…” or “alias nano = ‘rm -f’“, but let’s not be fooled: when bringing the Essential System Administration close to him, the very touch of it will produce burns, he will begin to turn his head 180 degrees, to spit foam out of his mouth and to release blasphemies like “You have seen what your filthy daughter has done“, “Take me, take me” or “I am the Evil One and I capture SIGKILL“. Watch out. This is when the exorcist, a professional, will throw several SIGTERM against the atheist’s PID and utter some sacred words to free his soul:

We exorcize you Unclean Spirit, whoever you are, Java, XML or Word. In the name of Unix, be cast out from the souls of true religion. Don’t you dare darken the elect whom you pretend to be similar to! Brian commands you, Dennis commands you, Rob commands you‒ they became flesh and lived among us. May the descendants of MULTICS take pity on you, may the purity of a good script cleanse your soul, and may you use goto when you have to. Unix is the way and I am his shepherd, that is how it is written in my GECOS. Hosanna, K&R, cleanse this soul.

At this point the atheist must show signs of reconversion, for example by uninstalling the Java virtual machine or by reciting the man page of getpwent (3) by heart. If this is not the case, we should sprinkle him with SIGKILL or, directly, execute a shutdown, which is the exorcist’s last resort before moving on to bigger ones: if the exorcism does not work, only human sacrifice remains. For example, in SAW, since Ritchie’s death more than seven years ago, we monthly sacrifice in his honor an atheist at the stake, the old-fashioned way, with enchantment. We have put it in the cron so that it does not fail, otherwise he will reincarnate in ISO consultants and we mess up. But do not think it’s a simple kill -9, no way: before burning him we slit him open with a CD where the System V sources are, we eat his guts, drink his blood and pray two ourscripts so that those gods that became flesh in the 70s put sanity back in this world 4.0 that surrounds us. All this in honor of the creators of wonders such as Unix, C or awk and, why not, because we also like it.

DISCLAIMER:  All this post is based on fictitious facts and does not reflect at any time personal opinions of the author, effectively and not. Any resemblance to reality is pure coincidence.