#unix
Closed. This question is off-topic. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow на русском. Closed 4 года назад. Что должен знать и уметь системный администратор, претендующий на уверенное понимание основ мира UNIX-like? Вопрос можно трактовать и как "список для изучения для новичка, стремящегося стать профи", и как "куда копать уже опытному сисдамину, обошедшему в своей карьере UNIX-like стороной".
Ответы
Ответ 1
Этот список я составил, чтобы давать на него ссылку коллегам, спрашивающим "а что нужно изучить, чтобы начать разбираться в Linux (или FreeBSD) на крутом уровне?". Я постарался охватить максимально широкий круг минимально необходимых навыков и знаний, обладая которыми системный администратор сможет самостоятельно разобраться в практически любой задаче, связанной с администрированием UNIX-like операционных систем и всего того, что их окружает. Данный список не должен восприниматься как "минимальный набор, без которого в бой нельзя" - на полное его освоение может уйти значительное время, от нескольких месяцев до года, в зависимости от начального уровня и рвения обучающегося. Там, где это было возможно без вреда для группировки пунктов, я сортировал их от простого к сложному. В сущности, изучать пункты списка можно именно в той последовательности, в которой они приведены. Дополнения приветствуются. Набор базовых навыков и знаний о мире UNIX-like для системного администратора POSIX и другие стандарты и базовые сущности man, man sections PCRE, BRE/ERE UNIX timestamp, tzdata, leap seconds posix shell (signals, exit codes, pid, kill) locales runlevels UNIX sockets Работа с файловой системой ОС Linux: структура каталогов, что где лежит и почему ОС Linux: типичные места расположения лог-файлов, pid-файлов файловая система: inode, stat, манипуляции временем изменения файла монтирование файловых систем, fstab, ro/rw режимы, noexec, noatime последствия неправильного размонтирования файловых систем, fsck жесткие и символические ссылки, разыменовывание файлов, восстановление удаленного файла монтирование iso-образов монтирование cifs/smb шар Работа с блочными устройствами файловая система devfs: логические абстракции, разница/схожесть устройств и файлов блочные устройства null и zero блочные устройства random и urandom работа с dd: бэкап MBR, уничтожение информации на дисках, низкоуровневый перенос разделов создание ISO-образов, создание загрузочных флешек Разграничение пользовательского доступа файловая система: права доступа и их изменение (chmod, chown) системные пользователи и группы (uid, gid, umask) суперпользователь: зачем нужен, что может, когда не нужно им пользоваться создание/удаление пользователей, создание/удаление групп, присвоение групп сброс пароля пользователю, принуждение пользователя к смене своего пароля работа с sudo, настройка sudoers setuid bit Общие навыки работы в командной строке физические/виртуальные консоли, безопасность при работе в физической консоли sysrq login shell, interactive shell, shebang cat, echo environment и работа с переменными, export, env работа с файлами (создание/удаление/перенос/копирование), файловые маски работа с логикой (логические и бинарные операторы and, or, xor, not) стандартные потоки данных, их подавление и перенаправления, pipeline ^z, bg/fg, nohup bash: рекурсивный поиск по хистори, дополнение команд шорткаты: ^l, ^d, ^w, ^k, esc+backspace, работа с буфером обмена в консоли, скроллинг терминальные мультиплексоры: screen, tmux nice, renice cron/crontab/periodic способы выключить/ребутнуть машину вежливо/немедленно, shutdown в определенное время Инструменты командной строки find: находить файлы по имени, типу, по дате создания/модификации, по совокупности параметров grep: поиск файлов по содержимому, поиск строк, содержащихся/не содержащихся в файле/потоке vi/vim: редактировать файлы, искать и заменять в них куски текста sed: массовая замена строк в файлах awk: манипуляции со столбцами в лог-файлах циклы, перебор, jot more/less, head/tail, cut diff хэш-функции (md5, sha(1|256|512)) top, ps, df, du, who, id iconv Работа с ядром версионирование ядра Linux пересборка/обновление ядра динамически загружаемые модули strace/ptrace (ktrace, dtrace) Работа с приложениями общее понимание инфраструктуры приложений: shared libraries, зависимости, dependency hell, статическая сборка установка, обновление и удаление пакетов с помощью пакетного менеджера какой файл будет исполнен при запуске в консоли commandname? разрешение конкретному пользователю запускать конкретные команды через sudo установка (downgrade) пакетов версии более старой, чем доступна в пакетном менеджере сборка из исходных кодов (например, поставить из исходников php 5.2 на систему с установленным в виде пакета php 5.(3|4|5) патчи: просмотр изменений, применение, создание самостоятельная сборка пакетов, бэкпортирование Теория и протоколы TCP/IP triple handshake (tcpdump), SYN-flood атаки UDP spoofing как работает DNS (dig), DNS-amplification атаки как работает HTTP 1.0/1.1 (telnet) как работают SMTP, POP, IMAP (telnet) DNSSEC, SPF, DKIM Работа с сетью и удаленный доступ диагностика: ping, arping, traceroute, mtr ssh: создание (ssh-keygen) и распространение (ssh-copy-id) ключей, авторизация по ключам, основные ключи командной строки (-2, -4, -i), удалённое исполнение кода, проброс stdin/out, ssh-agent, autossh scp: передача файлов через ssh в обе стороны, основные ключи командной строки (-С, -с) туннелирование (ключи -R, -L), socks-proxy, проброс ssh-agent proxy-серверы (HTTP(S), SOCKS) TOR VPN (openvpn, ipsec) проброс X-сервера vnc доступ на windows-машины с unix-машин Работа с архивами уметь создавать и распаковывать .tar, .tar.(gzip|bzip2), .zip, .rar уметь распаковывать не весь архив, а только нужную его часть Безопасность способы передачи паролей и другой конфиденциальной информации по открытым каналам связи HTTPS и SSL сертификаты: теория, виды сертификатов, отличия SSL и TLS знаменитые уязвимости openssl и bash gnupg - шифрование файлов, проверка подписей, реализация pgp для электронной почты Немного разработки VCS: subversion, git семантическое версионирование управление конфигурациями и деплой: Salt, Chef, Capistrano HTML и CSS на базовом уровне синтаксис разметки: wiki, markdown sh/bash для написания скриптов с простой логикой python/perl/ruby/php для высокоуровневых задач SQL для работы с большими порциями нормализованных данных блок-схемы для визуализации алгоритмов Веб apache 1.x/2.x, ngnix/lighttpd, проксирующие схемы с несколькими веб-серверами php как модуль, как cgi/fcgi, php-fpm HTTP-flood атаки, атака медленного чтения чем опасны frame/iframe в HTML XSS/CSRF SQL injections MITM, HSTS Железо общие представления о серверных платформах: rack unit, многопроцессорные системы, блейд-системы, внутренние интерфейсы (соединения) RAM: registered/unregistered, ECC, ранки (ранги) HDD: SATA/SCSI/SAS SSD: TRIM (discard) software RAID / hardware RAID iKVM/IPMI/BMC диагностика и выявление аппаратных сбоев для RAM и HDD общие представления об устройстве машинного зала ЦОДа, схемах электропитания (АВР/ДГУ/ИБП), технике безопасности при работе в серверной электрика: виды и назначение заземления, закон Ома, активная/реактивная нагрузка, расчет энергопотребления Коммуникация базовый технический английский для чтения документации и материалов в интернете базовый технический английский для задавания вопросов и составления баг-репортов в интернете ознакомиться с документом How To Ask Questions The Smart Way теория работы со списками рассылок минимум по одному вопросу, возникающему в процессе (само)обучения, задать и решить с помощью maillist, с помощью stackexchange Ссылки What every computer science major should know Похожий вопрос (несколько более широко поставленный) на английском языкеОтвет 2
Я бы наверное составил списочек попроще: Самое важное умение работать с консоли. Знание различных шеллов, ну хотя бы злосчастный bash. В Windows мире все можно сделать в GUI, в Unix мире не так, скорее даже наоборот в GUI почти ничего нельзя сделать, а вот с консоли пожалуйста. Важное отличие Unix мира от мира остального мира: в Unix'е многое построено на перенаправлении потоков, фильтра и проч. радости консольной жизни. Ничто так не радует глаз как строка типа: find . -name '*.java' -print0 | xargs -0 grep 'bingo' > output.txt Надо уметь пользоваться редактором vi (то бишь visual editor), без него будет трудновато конфигурить настройки разных прог. Если вы поймете как все это работает, то остальное уже будет проще: man вам поможет. Паттерн то простой. Допустим вы хотите сконфигурировать прокси. Берем для примера популярный у юниксоидов squid. Погружаемся в мануалы (то есть вызываем man squid), устанавливаем, конфигурируем его - вот где нужен vi :) Запускаем его с тучей ключей, типа: /usr/local/squid/sbin/squid -N -d 1 -D Наслаждаемся результатом, то есть лезем в его логи: cat /usr/local/squid/squid.out | more
Комментариев нет:
Отправить комментарий