Собеседование сисадмина. Часть вторая (Простые вопросы о Linux)

По ссылке на GIT`е как-то странно отделено описание иерархии файловой системы в Linux, видимо, по мыслям создателей, это совсем просто, или слишком «обще». Тем не менее вторая часть уже полностью посвящена Linux, скорее всего на этом я и «посыпался» ибо фундаментальный базис и повседневные нужды это все-таки разные вещи.
Поехали:

  • Какое имя и UID администратора?
    root / 0
  • Как посмотреть все файлы в каталоге, включая скрытые?
    ls -a
    (был очень классный вопрос а чем отличается скрытый файл, не нашел ничего умнее чем ответить «точкой в начале имени» — поржали)
  • Какая команда в Unix/Linux удаляет каталог со всем его содержимым?
    rm -r (rm -rf — тоже неплохой вариант)
  • Какая команда в Unix/Linux показывает свободную/используемую память? Существует ли свободная память в Linux?
    cat /proc/meminfo
    Можно посмотреть /proc/meminfo. Это автоматически обновляемый файл, который является источником для таких утилит как free, ps и top. Кроме количества свободной и использованной памяти в /proc/meminfo есть все что можно узнать о памяти. Информация о памяти для конкретного процесса находится по адресу /proc/pid/statm или /proc/pid/status.
    free -m (-m: вывод в мегабайтах / -h в гигабайтах)
    ps aux —sort -rss (опция —sort сортирует список процессов по общему объему физической памяти (RSS))
    Есть top который выводит список запущенных процессов в режиме реального времени, но блин, ребята, есть же htop, да, он не всегда включен по умолчанию в дистрибутив, но установить то его несложно.
    А вот по поводу свободной памяти — все вышеуказанные утилиты в один голос говорят о том что она есть.
  • Как найти строку «my konfu is the best» в файлах каталога рекурсивно?
    grep -iR «my konfu is the best» /директория/где/искать
    Ключи:
    -i — игнорировать регистра текста
    -R — рекурсивно искать файлы в поддиректориях
    -I — показывать названия файлов, вместо их содержимого
    -n — показать номер строки, в которой находится фраза;
    -w — показать место, где слово попадается;
    И опять — есть же mc, в котором все крайне удобно и красиво, и да его нужно установить, но блиииин.
  • Как подключиться к удаленному серверу или что такое SSH?
    SSH (Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов).
  • Как получить все переменные окружения и как их можно использовать?
    env или printenv
    Переменными окружения в Linux называются те переменные, которые содержат текстовую информацию, используемую другими программами во время запуска. Обычно они включают общие системные параметры как графической, так и командной оболочки, данные о настройках пользователя, расположении определенных файлов и многое другое. Значения таких переменных указываются, например, цифрами, символами, путями к директориям или файлам. Благодаря этому множество приложений быстро получают доступ к определенным настройкам, а также появляется возможность для пользователя изменять или создавать новые опции.
  • Я получил «command not found» при запуске ifconfig -a. Что может быть не так?
    Два наиболее возможных варианта — возможно пакет net-tools, в составе которого идет утилита ifconfig, установлен для рута и в юзерскую переменную PATH не добавлена эта папка, соответственно стоит попробовать sudo ifconfig -a. Либо net-tools вообще не установлен в системе, и нужно его установить. Сейчас во многих дистрибутивах используется по умолчанию утилита ip. Она имеет больше возможностей и возможно лучше. Но она непривычна и имеет несколько другой синтаксис.
  • Что произойдет, если я нажму TAB-TAB?
    Зависит от настройки bash-completion, ибо с его помощью можно дополнять не только команды и пути, а так же ключи, опции, имена пакетов используя emerge.
  • Какая команда показывает доступное свободное пространство на диске в Unix/Linux?
    df -h /dev/sda1
    -h — выводить размеры в читаемом виде, в мегабайтах или гигабайтах
    /dev/sda1 — мой основной раздел
  • Какие команды вы знаете, которые могут быть использованы для проверки DNS записей?
    sudo vi /etc/resolv.conf — DNS серверы, используемые для резолвинга доменных имен указаны в этом файле.
    systemd-resolve —status — внизу вывода можно посмотреть DNS, которые сейчас используются.
    nmcli dev show | grep DNS
  • Какая команда Unix/Linux используется для изменения владельца файла, прав доступа к файлу?
    chmod опции категориядействиефлаг файл
    Опции:
    -v — Подробный режим; вывести диагностическое сообщение для каждого обработанного файла.
    -f — Бесшумный режим; подавлять большинство сообщений об ошибках.
    -c — Подобно -v, но выдает подробный вывод только тогда, когда изменение действительно сделано.
    -R — рекурсивно ко всем файлам и каталогам.
    Категория:
    u — владелец файла
    g — группа файла
    o — другие пользователи
    Действие:
    либо добавить флаг «+», либо убрать флаг «-«.
    Права:
    — — нет прав, совсем;
    —x — разрешено только выполнение файла, как программы но не изменение и не чтение;
    -w- — разрешена только запись и изменение файла;
    -wx — разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
    r— — права только на чтение;
    r-x — только чтение и выполнение, без права на запись;
    rw- — права на чтение и запись, но без выполнения;
    rwx — все права;
    —s — установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
    —t — установлен sticky-bit, а значит пользователи не могут удалить этот файл.
  • Что делает команда chmod +x FILENAME?
    Делаем «FILENAME» исполняемым.
  • Что означают права 0750 для файла?
    0750 — rwx-r-x— — Право на чтение, запись и выполнение для владельца, право на чтение и выполнение для группы и нет доступа для всех остальных.
  • Что означают права 0750 для каталога?
    Смотреть выше, но, папки являются особого рода файлами, внутри которых записан список файлов, лежащих в этих папках. Рассматривая их с такой точки зрения, легко понять, что, применительно к папкам, право на чтение дает возможность просмотра списка файлов в папке, а право на запись — этот список изменять (т. е. создавать и удалять файлы в этой папке). Не совсем очевидно лишь действие лишь права на исполнении. В данном случае оно определяет, может ли пользователь заходить в папку.
  • Как добавить пользователя без прав входа в систему?
    Использовать «sudo adduser» с «—shell=/bin/false», это установит оболочку в /bin/false, поэтому пользователь не сможет войти в систему.
    Или «sudo adduser» с «—system —no-create-home», это создаст учетную запись без пароля и без оболочки, и без домашнего каталога.
  • Как добавить/убрать пользователя в/из группы?
    Добавить и убрать можно через — sudo usermod -aG «группа» «пользователь», С опцией -G указываем, через запятую, без пробелов, к каким группам будет принадлежать этот пользователь. Если пользователь в настоящее время является членом группы, которой нет в списке, он будет удален из группы.
    Но проще удалить используя gpasswd -d «пользователь» «группа»
  • Что такое bash алиас?
    Bash-алиасы («псевдонимы») — это ярлыки к файлам, позволяющие ссылаться на другую команду через более запоминающиеся слова, сокращения или символы.
  • Как установить email для пользователя root?
    /etc/aliases
    Это глобальный способ для любого пользователя в системе. /etc/aliases содержит почтовые алиасы алиасы локальных пользователей.
    root: system@example.com, adm@mydomain.com
    После изменения файла необходимо запустить newaliases для принятия изменений.
  • Что делает Ctrl+c?
    Это сочетание клавиш позволяет прервать работу любой программы, которая выполняется в терминале. После нажатия Ctr + C программе отправляется сигнал SIGINT и если она не обрабатывает его особым образом выполнение программы завершается.
  • Что содержится в файле /etc/services?
    Список соответствия номеров портов и имен сервисов в формате
    service port/protocol [aliases]
  • Как перенаправить STDOUT и STDERR в bash?
    «комманда» &>»имя_файла»
    перенаправит stdout и stderr в «имя_файла»
  • Какая разница между UNIX и Linux?
    Основные отличия:
    Linux — свободная операционная система с открытым исходным кодом, а оригинальная Unix — нет, кроме некоторых ее производных.
    Linux — это клон оригинального Unix, но он не содержит его код.
    Главное отличие unix от linux, в том что Linux — это только ядро, в то время как Unix была и есть полноценной операционной системой.
    Linux был разработан для персональных компьютеров. А Unix ориентирован в первую очередь на крупные рабочие станции и сервера.
    Сегодня Linux поддерживает больше платформ чем Unix.
    Linux поддерживает больше типов файловых систем чем Unix.
  • В чем разница между Telnet и SSH?
    SSH или Secure SHell — это программа для входа на другой компьютер по сети, для выполнения команд на удаленном компьютере и для перемещения файлов с одного компьютера на другой.
    Telnet — это совместное сокращение от Telecommunications and Networks, и это сетевой протокол, наиболее известный для платформы UNIX. Telnet использует порт 23, и он был разработан специально для локальных сетей.
    Различия между SSH и Telnet
    SSH более безопасен по сравнению с Telnet
    SSH шифрует данные, а Telnet отправляет данные в виде простого текста
    SSH использует открытый ключ для аутентификации, в то время как Telnet не использует аутентификацию
    SSH добавляет немного большие накладные расходы на пропускную способность по сравнению с Telnet
  • Объясните три усредненных значения load average и что они означают? Какой командой можно посмотреть load average?
    Средние значения нагрузки (Load averages) — это «средние значения нагрузки системы», показывающие потребность в исполняемых потоках (задачах) в виде усреднённого количества исполняемых и ожидающих потоков. Это мера нагрузки, которая может превышать обрабатываемую системой в данный момент. Большинство инструментов показывает три средних значения: для 1, 5 и 15 минут.
    Если значения равны 0.0, то система в состоянии простоя.
    Если среднее значение для 1 минуты выше, чем для 5 или 15, то нагрузка растёт.
    Если среднее значение для 1 минуты ниже, чем для 5 или 15, то нагрузка снижается.
    Если значения нагрузки выше, чем количество процессоров, то у вас могут быть проблемы с производительностью (в зависимости от ситуации).
  • Можете назвать букву в нижнем регистре, которая не является валидной опцией для GNU ls?
    -z например (-Z — печатать любой контекст безопасности каждого файла)
  • Что такое модуль ядра Linux?
    Модуль ядра — это некий код, который может быть загружен или выгружен ядром по мере необходимости. Модули расширяют функциональные возможности ядра без необходимости перезагрузки системы. Например, одна из разновидностей модулей ядра, драйверы устройств, позволяют ядру взаимодействовать с аппаратурой компьютера. При отсутствии поддержки модулей нам пришлось бы писать монолитные ядра и добавлять новые возможности прямо в ядро. При этом, после добавления в ядро новых возможностей, пришлось бы перезагружать систему.
  • Расскажите по шагам как загрузить систему в однопользовательском режиме для решения проблем.
    Однопользовательский режим при использовании GRUBЧтобы выполнить загрузку в однопользовательском режиме при использовании за­грузчика GRUB, не нужно применять опции командной строки. Авторы этого загруз­чика пришли к выводу, что параметры начальной загрузки должны легко поддаваться изменению, и что клавиша ‘a’ — вполне подходящее средство для решения этой задачи. Когда откроется экран начальной загрузки GRUB, выделите нужное ядро и нажмите клавишу ‘a’, чтобы дополнить опции начальной загрузки. Чтобы обеспечить загрузку в однопользовательском режиме, добавьте флаг single в конец существующих опций ядра. Пример типичной конфигурации мог бы выглядеть следующим образом:grub append> ro root=LABEL=/ rhgb quiet single

    Однопользовательский режим при использовании LILO

    Различные дистрибутивы предлагают различные средства открытия командного при­глашения LILO. Если вы отдали предпочтение LILO, а не GRUB, в системах Red Hat, Fedora или SUSE, опцию меню командной строки можно выбрать в причудливом гра­фическом интерфейсе пользователя. Пользователи Debian и Ubuntu должны нажать и удерживать нажатой клавишу shift сразу после того, как BIOS завершит проверку памяти и другие тесты самопроверки.

    В строке приглашения LILO введите метку ядра (она задана в файле lilo.conf), ко­торое требуется загрузить, а затем — опцию -s или single. Например, стандартное ядро дистрибутива Debian имеет метку “linux”, поэтому, чтобы загрузиться в однопользова­тельском режиме, необходимо ввести следующее:

    LILO: linux single

Добавить комментарий