Pre-lab 2.1: Servers & Linux


In these labs, we  will be using Linux environment. If you are not very comfortable with Linux, try to catch up quickly. There are plenty of tutorial on the web (Here is one for example). There will be cases that you want to experiment on a local machine rather than the server. If Ubuntu Linux distribution is a bit heavy (because of Unity bloatware) for your laptop, you may try other lighter variants such as xubuntu or lubuntu.

Usually, in server configuration, you should have a good overall knowledge of everything from low level kernel modules, user level shared libraries, up to user programs. Don’t be afraid of experimenting anything, and don’t think too long on a single problem. This is not math! you will probably find a quick solution in the web. A problem may be due to a simple bug in an application, or design weakness. Notice that the whole Linux OS is designed around a simple concept called KISS (Keep It Simple & Stupid ).

We expect the following knowledge about Linux OS or at least an overall knowledge on:

  • Linux directory structure ( etc, var, dev,..etc).
  • File permissions in linux and some commands (chmod, chown commands).
  • Ability to navigate, copy, move and execute files.
  • Knowledge about environment variables mainly $PATH.
  • Create/delete users and groups (addusers, addgroup, usermod, deluser …etc).
  • Connect remotely to devices , and copy files remotely (ssh, scp, rsync).
  • Modifying a file from a terminal using some command line text editors (e.g., nano , vim , emacs..etc).
  • Using some platform specific package managers such as (apt-get in ubuntu, aptitude in debian,  portage  in gentoo ..etc)
  • Understanding of gcc compiler and Makefile formats for package dependency.
  • Some networking knowledge and commands (ifconfig, netstat and nc).
  • Searching for a file (locate or find commands)
  • Searching for some string match in a file (grep)
  • Compress/decompress files commands (tar, gzip..etc)
  • init.d scripts