Possible Duplicate:
What a beginner should know/learn for sysadmin job?

I am soon going to be graduating from college, and am looking for job offers right now. There is one that I have a lot of interest in, involving Linux system administration (PHP, MySQL, Apache Webserver, BIND, bash, postfix, and of course general system maintenance and security).

However, during my internship most of my assignments involved Hyper-V virtualization and Windows in general, and I didn't get much Linux-time. In my spare time, I'm usually a windows user as well with only very basic Linux knowledge.

What knowledge and skills would you say a new Junior job applicant needs to posess before he is really ready for the job (and the interview)? Any sources, going from books to e-books, tutorials, general skill descriptions, commands, websites, blogs, ... will help me a bunch.

Help me become a better Linux administrator, and getting ready for this interview! Thanks a lot :-)

EDIT: As some people suggested, I'll update the original question: I stated that I am a Junior in the question title, and that refers to the title of the job I am applying for (without experience, there's almost no chance you'll get a job as a Senior, obviously). My Linux knowledge might be a bit better than I let you guys understand; I am way past the "how do I set up a dns server?" stage, dns, dhcp, webserver etc, I've set those up before several times.

I am looking for more advanced knowledge, stuff I'll need in my daytime job, or questions I may be asked in a job interview. I want to be prepared for it as I can be.

Thanks for the input so far!


13 Answers 13


There's already plenty of information(Questions/Posts) in ServerFault for a beginner Linux administrator:

In addition, I will suggest you find an old computer and install Linux on it. Play with it, setup a firewall, DNS, DHCP on it to start and test things. You could even set it up in a VM and do stuff in it. Nothing is going to help you better than getting yourself in there for the real experience. Decide of a good use for it and try to use it as much as you can. Ask questions when you get stuck (research it first, though), that's why we're here for.

  • 1
    +1 on this answer. I'd also add studying for the LPI or RHCE certifications.
    – gharper
    May 28, 2009 at 16:16
  • yea I have an LPI book in fact, been through it but didn't spend enough time with it to actually take the exam. will probably go through it again now Jun 1, 2009 at 17:38

Think about scale, audit trail and backouts.

In the real world you need to do stuff often and you often need to do it to lots of servers. So scripting and automation become important.

The level of rigour tends to be higher than what you might use at home. So you need to think about how you can record your changes (the better to identify what change it was that broke the service) and how you can back them out if required.

E.g. knowing how to set up bind as a master and slave is fine, but at my work we host several hundred domains over 7 instances of bind. One master, which has a slave, that slave is itself master to 5 other slaves. We generate the named.conf's for all of them with make and M4 macros, push them out with ssh and record the changes to both named.conf and some zone files with RCS. The bigger zone files are generated from a database that has a CGI front end.

Nothing very astounding about any of that, the named.confs are for the most part pretty simple, there just big. Same with the larger autogenreated zone files.

The point I'm trying to make is that when you are working in a real work environment, you need to be able to scale, what you do and you need to be able to track changes and you need to think about backout.

I'd get familiar with automated build tools such as kickstart as that is a job that some places give juniors as it lets them work with servers and understand how they are put together and configured in the organisation, without having to let them loose on live prd servers.


Beyond the basics, here are a few areas that you should probably investigate further:

  • Settings up a mail system that performs well enough for hundreds of users, good spam filtering, security, backup solution, webmail access, etc...

  • Learning and experimenting with backup: choosing a good strategy, implementing it, making it as effective in $$ as possible (everyone wants backup but not everyone want to pay for the extra cost).

  • Server monitoring: again, having a good strategy and implementing it so you can monitor multiple servers, the goal being to be able to anticipate problems rather than fixing them when they happen.

  • Security: auditing, locking resources, monitoring usage, complex firewall situations.

  • ...
    Basically, anything that pushes the envelope and makes the difference between setting up something for yourself and settings up something for an organisation.

Beyond these, I believe that to be an effective Senior Admin you need to understand what the company does, how people work, what they do, and find out how technology can help users being more effective and the company's bottom line.
IT doesn't exists in a vacuum: trying to find better ways for people to collaborate and have access to their data quickly and securely is what makes a good IT organisation.

So it's not just about being able to setup a mail server or installing a security product, it's about using your technical knowledge and experience to help the business you are working for.

Expanding your horizon beyond just the mechanics of IT will help you get farther.

  • Thanks a lot for the answer, I agree completely that just setting up an apache server isn't going to help me all that much. That's why I was (and still am) looking for input BEYOND the installation part. I agree with you and Alex that you need to know a business better to be of real value, but that is hard if you're not actually properly introduced to it, as is the case here since I am only just applying. definately helpful input though Jun 4, 2009 at 8:25
  • +1 for monitoring and backups. better safe then sorry.
    – pQd
    Jun 5, 2009 at 20:40

The only way to really learn is by trying and "playing" with it.

-Install a Linux server at home.

-Install Apache, trying enabling php, perl, bugzilla, wordpress and a few other apps

-Install postfix, try enabling tls support

-Install named, enable dnssec, build a small network at home..

These are just suggestions. As you try to setup them, google for manuals, ideas, etc.

-Learn scripting( bash and perl at least) to automate your work. All good admins know how to automate their tasks

  • Thanks for the help, but these are pretty obvious and I do indeed have some experience with the actual installation of most of these Jun 1, 2009 at 17:38

I hate to say it, but you might be overestimating your knowledge.

I've found in the enterprise that each environment has pretty strict rules on what is used, how each server is configured etc.

I initially learnt by setting up all sorts of servers, etc in my own time, but rapidly found that gave too much freedom. Enterprise environments are configured to minimise damage, more than they are to implement interesting or useful features. Administration at a higher level is about providing a known, defined solution to a business requirement that is exact in its scope. At a lower level it is about implementing it, which is frequently closer to what you'd expect to be monkey work, as everything should be predefined.

As useful as it is to get to know your way around a distro at home, you'll want to proper time in a proper environment. See if you can find a local LUG where you can talk to senior professionals and learn. Find out about their environments, procedures, etc.

Personally, I've found that being able to get apache running really isn't worth much, as it just isn't that hard. The key is in scoping the installation to the requirement, and getting the service exactly as necessary, with no more and no less in place.

Renaud's suggestions above are excellent learning points too, I just think that knowing the functionality is just a small part of the puzzle, and understanding the business drivers is much more important.

  • As I commented on Renaud's answer, I completely agree with you both that you need to know more than just installation and functionality, but being a junior (and not actually HAVING the job yet) these are pretty hard. What you said about overestimating my knowledge, it's hard to explain... I know some about the installation of a lot of things like dns, dhcp, apache and what not, and that is why I said I don't need much help in that area but am looking for input beyond that. I don't say I'm experienced at all, I was just hoping to get other input than that. Again, thanks for taking the answer Jun 4, 2009 at 8:28

Maybe I underestimated my knowledge a bit, or posed my question in a way that you guys underestimate what I know, but again: I'm looking for more ADVANCED knowledge I really need to have, setting up webservers, databases, dns, dhcp and firewalls are something I've done before and just need to repeat in order to have it fresh in my memory (although they're so easy I'd hardly have to brush up on that a lot)

l0c0b0x's links helped for sure and I'm going to read most of the stuff I find through it later today, but more is always welcome.

  • 2
    Rather edit your question than posting a new answer. So everyone sees it right on top and not somewhere down in the list of answers, that isn't sorted according to time.
    – boutta
    May 28, 2009 at 9:58
  • I think it would be a good idea to edit your original question with the above and the details from the comment on my answer. I think your references to you being a junior and having only very basic linux knowledge will confuse the answers you're going to get.
    – Andy
    May 28, 2009 at 10:05

if you can, take some time and do this: http://www.linuxfromscratch.org/


IMHO, this is the MOST IMPORTANT THING you can do:

  • Search high and low for a good Sr. Linux/systems admin mentor, someone who's understanding, tough, fair, honest, smart and gifted in communication skills.

They're far and few between, but they're out there. Trust me.

And learn, baby, learn. Attach yourself to him or her, watch for the little stuff. How do they set up their workflow? What processes do they use? What command aliases do they use? Any that you can adapt for your use?

  • 1
    While this is good input for someone already working somewhere and who has the time to indeed watch a more experienced admin do what they do best, it is kind of hard for me to do this I think. Soon I'll be out of college, and if I don't have a job I'm not sure how I'd find a mentor so to speak. Most people don't have the time to teach a lot of things in their spare time, and my question was initially to help me prepare for a job (interview) and not really to help me evolve once I actually have a job (though its valid input yet again) Jun 4, 2009 at 8:31

Read Maurice J. Bach's book. It's not Linux related. It's not even modern. It's the best overall "this is how UNIX works" book I've read. Back when it was current, it was a pretty good book on how UNIX was actually implemented. By now it actually does a nice job of explaining how and why UNIX works the way it does.

The book assumes you can understand some C.

The Design of the UNIX Operating System (Maurice J. Bach, Prentice Hall PTR; 1986)

I have the hardcover, I've read it a few times, and I loan it to each of my friend who's ever wanted to get a deep understanding of Linux/UNIX. As the publisher puts it:

This is the first, and still, the most comprehensive book to describe the sophisticated workings of the UNIX System V kernel--the internal algorithms, the structures that form the basis of the UNIX operating system, and their relationship to the programming interface. System programmers will gain a better understanding of how the kernel works and will be able to compare algorithms used in the UNIX system to algorithms used in other operating systems. Programmers on UNIX systems will gain a deeper understanding of how their programs interact with the system and can thereby code more efficient programs.

Let's face it, after a while a good Sys Admin has got to have a good grasp of how a system is put together and how to interact with it.

Next after this in term of usefulness might be TCP/IP Illustrated vol. 1. Not to fully understand, but to know how networking works at a sufficiently low-level.


Stop using Windows (at least for a time) except you want to play games. Setup your own webserver for fun with some webpage (or better a CMS) and use some DBs.


I suggest you to try and install Archlinux. Is not as hardcore as building a linux from scratch but you will learn the internals of a linux system. They have a nice install guide which explains basic linux setup and administration. Then just float arround the wiki to get into inner details. Do it in a virtual machine and make sure to take snapshots in order to be able to rollback and try again.

  • I had planned on doing that for quite some time now and will indeed get to work on this faster than intended just for this job opening Jun 1, 2009 at 17:37

There are a lot of free, open resources out there for linux knowledge. You've mentioned bash knowledge specifically, and the best way of getting that is by playing around with bash and shell scripting.

In addition to any other books and links that people recommend, I advise getting some real linux-time.

Good options for getting some more time are dual-booting, running pen drive linux or running portable ubuntu - there aren't really any good excuses for not putting some time into Linux if you want more experience with it.

  • 2
    Andy: don't get me wrong, I'm not a complete Linux newbie. I know my way around, and finding tutorials, howto's and guides to set stuff up is real easy indeed and I've done all of that during lab practice in college before, and at home at times... it's the more advanced yet still critical knowledge that I currently miss, I think. Actually putting in more Linux time is a given, and I'm actually already running a dualboot... May 28, 2009 at 9:41

i was told once that a lot of job postings will list requirements for knowledge in a wide area of topics [as you posted], not cause thats what they really want, but they want to see what is out there in terms of future employees.

stop using windows and start using *nix. also, the command line is your friend

also, when in doubt, consult the distros wiki

Not the answer you're looking for? Browse other questions tagged .