See also: How to become a Linux system administrator | Linux.com and Evolution of a SysAdmin - Linux Foundation Training
Note: many system administration tasks require obtaining root privilege by running either su or sudo.
The core skills of Unix systems administration fall into five major areas –
software/application management (installing, testing, and updating the software on systems)
account management(adding and removing accounts, managing user access and privileges)
server management (running backups, monitoring and tuning performance, rebooting,
setting up cron jobs, looking after the hardware and reviewing log files)
security management (managing host-based firewalls, checking file permissions, and checking
on important security configurations)
user management -- you really need to have good people skills; you need to understand that many
of your users will know only a fraction of what you do about the systems they’re using and be good
at helping them past their problems with as much patience and sensitivity as you can muster.
You should also know:
how and when to use ^c, ^d, and ^z.
how to use pipes and redirects. If >, >>, 2>, and 2>&1 aren’t second nature to you, you need to
make them so.
how to use /dev/null both to make output disappear and to empty files.
how to use of $? (the return code or “exit code”) to determine if the previous command
(usually within a script) completed successfully.
how to use regular expressions with commands such as ls, grep and perl.
the effect of various quotes – how single and double quotes differ and how ` (backticks)
can be used to add command output to a line.
how to add and remove accounts (with or without removing the associated directories).
how to work with permissions, timestamps, owners, and groups -- and how to determine if
additional permissions have been assigned with the setfacl command. You should also get
to know how to work with the security context of files when SELinux is in use.
how to use essential Unix utilities like grep, awk, sed, and wc.
how to use text editors. In fact, you really should know vi, though if it takes some time
to get used to. Even if you love desktop editors like Gedit, you will someday find yourself
on a command line with no other option. Besides, vi (along with its colorful variation, vim)
can make a lot of the work that you do go a lot faster once you know how to use it well.
scripting basics. You need to be very good at basic scripting – using if, for, and while
commands if not also case statements and functions.
how to work with processes – understanding ps output, knowing the kind of information you
can get from /proc and how to use tools like lsof for determining what files a process has open.
how to set up a new file system, look at disk space, track down large files, use fsck, and
find files using many different criteria (size, ownership, permissions, type, etc.).
where to find key directories and configuration files – those in /etc (e.g., /etc/hosts,
the passwd and shadow files) and those in other locations (e.g., /etc/mail/sendmail.cf,
how to set up essential services (e.g., naming, printing).
how to install packages using yum and apt-get and also how to install software from tar.gz
how to apply patches and how to know when they’re needed.
how to monitor systems using commands such as df and du to look at disk space, and commands
like top and sar to monitor and evaluate performance.
how your systems boot – their dependence on “start scripts” and whether they use systemd or
upstart init services.
how to use basic commands like dump and tar to back up directories or entire file systems.
how to interact with other systems – logging in using ssh, moving files with scp and sftp,
and using rsync for synchronizing individual files or entire file systems.
how to view and manipulate timestamps on files, including using the touch command.
how to configure a network interface; how to use the ifconfig and ip addr commands; how to
set up the /etc/sysconfig/network file; when to use /etc/hosts and the hostname and domainname commands.
how to configure extended services like NFS, NIS, and Samba for sharing file systems and
network information with other Unix systems, and sharing files with Windows systems.
how to do basic troubleshooting, tracking down what’s wrong when something is broken, looking
at logs files, and using commands such as strace.
how to configure and use sudo for limiting the use of root access to the bare essentials.