Рубрики
Администрирование

Основные темы для изучения linux

Что-то давно я ничего не писал в свой блог. А сегодня пятница, за окном льет как из ведра, работать уже лень… Подумал, что самое время что-то написать. Был у меня не очень давно разговор с товарищем на тему администрирования *nix-систем. Обсуждали мы вопрос того, какие темы/области/знания в разрезе *nix-систем хорошо бы знать, чтобы успешно устроиться на работу системным администратором. Я обещал составить небольшой список тем, которые надо освоить, чтобы можно было считать себя более-менее нормальным админом *nix (ну вероятнее всего linux).

В общем, как мне кажется, чтобы считать себе уверенным админом linux надо, конечно же, в первую очередь, представлять себе как linux устроен. Здесь можно попробовать выделить следующие темы:

  • Ядро linux и модули ядра.
  • Загрузчики linux (GRUB/LILO/BSD). Впрочем для начала можно освоить тот, который есть в выбранном вами дистрибутиве, вероятнее всего это будет GRUB.
  • Как происходит загрузка операционной системы от момента включения питания до появления приглашения на мониторе. Система Initd/System V и аналоги.
  • Дисковые разделы, файловые системы, используемые в linux. Монтирование разделов.
  • Структура каталогов ОС.
  • Оболочка linux, он же shell (bash/tcsh/zsh). Хотя конечно, на сегодняшний день, самой популярной оболочкой является bash, поэтому я рекомендую изучать его. Здесь тоже можно немного углубиться в детали:
    • Основные команды шелла.
    • Настройка шелла.
    • Средства манипуляции файлами.
    • Shell pipes, перенаправление ввода/вывода.
    • Работа с текстовыми файлами.
    • Отдельно отмечу работу в редакторе Vi/Vim. Кстати, попробуйте его запустить и просто из него выйти 😉
    • Основы shell-скриптов (написание простейших скриптов, обработка входных параметров, циклы, ввод/вывод).
  • Настройка сети.
  • Пакетные менеджеры.
  • Компиляция и сборка программ из исходников.
  • Пользователи, группы и права доступа.
  • Мониторинг производительности и управление процессами.
  • Работа с заданиями, автоматизация выполнения задач (cron/at).

Это вот такие основные моменты, которые относятся к linux в целом и без их понимания будет сложно решать какие-либо более сложные задачи, вроде настройки, скажем, web-сервера, dns или чего-то еще.

Второй большой раздел вопросов связан с установкой и настройкой дополнительного программного обеспечения, призванного решать конкретные задачи. Попробую выделить какие-то наиболее часто встречающиеся.

  • Настройка web-сервера, обычно это apache httpd или же nginx, с подключением модулей для работы php/perl/python.
  • Настройка DNS-сервера (named).
  • Настройка DHCP-сервера (dhcpd).
  • Конфигурирование firewall (ipfw/iptables).
  • Конфигурирование и настройка шлюза/NAT.
  • Настройка SMTP-сервера (sendmail/postfix/exim).
  • Настройка ftp-сервера.
  • Настройка файлового сервера (samba).
  • Настройка прокси-сервера (squid).

Примерно так…

Возможно, я что-то забыл, но если вспомню, или кто-то подскажет — дополню.
Я попытался всего лишь обозначить круг вопросов, с которыми обычно сталкиваются админы каждый день.
Надеюсь это поможет кому-то немного сориентироваться в направлении изучения linux-систем.
П.С. Ваши замечания/дополнения/предложения как всегда приветствуются.