Что-то давно я ничего не писал в свой блог. А сегодня пятница, за окном льет как из ведра, работать уже лень… Подумал, что самое время что-то написать. Был у меня не очень давно разговор с товарищем на тему администрирования *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-систем.
П.С. Ваши замечания/дополнения/предложения как всегда приветствуются.