This is a Canonical Question about System Administration Careers
When I start my job as System Administrator, what basics skills should I know/learn?
Are there any key differences for Network, Storage, Database, and other Administrators?
There is a lot of overlap with existing questions, I am creating a wiki here with links. Please feel free to update.
A really good skill that I hope you acquire on your way towards becoming a sysadmin is the ability to quickly recover from your mistakes... this should become second nature (an automatic reaction).
**While browsing once, I found this strictly unofficial, highly-debatable, yet potentially useful list:
SysAdmin Ten Commandments:
I. Thou shalt respect thy user
It is paramount that you respect the user and their data. Don't steal their MP3s, don't look at their porn. When working with email, look without reading. Respect them and they will respect you.
II. Thou shalt empower the user
The user is the customer. The system is not yours, it is theirs. Provide users the tools they need to be successful and they will be happy. Give them space to experiment, learn and create. Do not hold users back.
III. Thou shalt keep it simple
Keep It Simple, Stupid. The KISS principle will keep you from building barrels to keep a bottle's worth of wine. Do not mistake over-engineering for quality. Quality work is concise and scalable.
IV. Thou shalt expect catastrophe
Expect the worst surprises. Make your resources redundant, backup your data, test your backups, and then backup the backups. The shit will hit the fan someday. Be prepared.
V. Thou shalt plan
Great work follows great plans. Stay on target by first identifying it. Plan your work carefully and surprises will be easier to handle.
VI. Thou shalt stay informed
Gather all the news, information, logs and statistics you can. Without the raw data to analyze, you cannot be secure, you cannot debug problems and you cannot forecast. Without new information, you cannot learn.
VII. Thou shalt share
No one is alone in this world. Pass your knowledge on to others. Give to others, contribute to the community and you will reap many rewards. It is not wise to horde knowledge. Don't be an asshole.
VIII. Thou shalt automate
Do more, faster by automating tasks. You are the puppet master, do not waste your time with menial work. Work smarter, not harder.
IX. Thou shalt document
Always document your work, your code and your plans. Then document their execution and maintenance. Document for others and document for yourself. Documentation should be an extension of your mind and a resource for others.
X. Thou shalt respect thy organization
Without organization, there is no system, there is no user and there is no job. Understand the organization and it's business. Respect it and help it thrive.
Create projects for yourself
The best way to learn about how to fix desktops is to build your home computer, and then improve/break it until you're comfortable doing that.
Interested in web servers? Install/enable a web service on your home PC (apache or IIS in XP) and you'll be amazed at how much you pick up about DNS, networking, etc. And how useful that knowledge will be to you down the line.
I could keep listing examples, but you get the idea. The more fun you have with it, the more you learn. The more you know, the more fun your job is. This makes you a more enjoyable coworker, and a better job candidate.
No one has said much about security, but it's always going to be the elephant in the room on the front burner, to mix metaphors. With respect to security specifically, you should know something about the following areas as well as be familiar with at least one or two tools that help you manage each:
Really depends on your environment. Are you maintaining servers, networks or simply rebooting the Windows Exchange server when it runs out of memory?
In general, these skillset will come in handy.
Most importantly: You must be able to learn new things. Nobody knows every system, so being able to Google, order books, take courses to improve yourself is very important.
Put some time into understanding concepts. Read up on networking, the security models of the servers and OSs you'll be supporting, and how your company's IT is architected. If you have a mental picture of how things are supposed to work, then you can hypothesize what problems are likely to be a symptom of. Then you can do some troubleshooting to investigate further.
If you treat everything as a black box, you'll have to "learn" each individual fix. If understand how things work and how they fit together, the problems you solve will deepen your understanding and make you a better admin.
Also - be honest with users: don't over-promise and under-deliver.
Hmn, my top-ten:
Note that very few of those things are technical? If you know how to be wrong, how to see a task through until it's complete, and have experience with configuring a network interface on Solaris, a few flavors of Linux, and Windows, then you have enough of a basic grasp of networking for an entry level sysadmin job. But the first two are people skills, because no one knows everything or can know everything.
A lot of this stuff only comes from experience. Basically, what you need is experience.
Since you asked mostly about technical skills -- just FYI, you want to avoid looking like you've padded your resume. If you want experience running ESX, get evaluation copies and run a server in your bedroom. But be honest about the level of experience that you have with the products and don't BS someone who might hire you.
The Practice of System and Network Administration, Second Edition by Thomas A. Limoncelli
It's THE book on system administration that focuses on basic things and principles one should keep in mind. Every sysadmin should read this one at least twice.
For a quick look of what this book is about, check the ‘32 questions for your sysadmin team’ on his website.