Символические ссылки в Linux всегда отображают максимальные права доступа rwxrwxrwx, однако ядру на это абсолютно плевать — оно учитывает только свойства целевого файла. Безопасность и стабильность Unix-систем полностью зависят от подобных нюансов: от строго линейной проверки прав до риска навсегда заблокировать себе доступ к системе при неверной настройке sudo. Это детальное руководство раскрывает фундаментальные механики администрирования Linux, включая управление учетными записями, работу в Vim, регулярные выражения и конфигурацию лимитов.
🐧 Локальный и удаленный доступ к системе Linux 4:57
Работа с Linux начинается с процесса аутентификации. Вне зависимости от того, находитесь ли вы непосредственно перед физическим сервером или подключаетесь из другой точки мира, принципы входа остаются схожими: вам необходимо предоставить имя пользователя и пароль.
Виды консолей и способы подключения 5:48
В современной экосистеме Linux исторически сложились два основных способа взаимодействия с системой: через текстовую консоль и через графический интерфейс (GUI).
- Локальный вход: Если вы работаете непосредственно за компьютером, вы можете использовать локальную текстовую консоль или графическую оболочку. При работе в текстовом режиме система запрашивает учетные данные, при этом в целях безопасности вводимый пароль не отображается на экране. Переключение между виртуальными терминалами (например, tty2) осуществляется нажатием клавиш
Ctrl + Alt + F2. - Удаленный вход: Для удаленного доступа к серверам с графическим интерфейсом администраторы могут настраивать протоколы, такие как RDP (Remote Desktop Protocol) — популярный стандарт для Windows-пользователей, или VNC (Virtual Network Computing).
Для текстового удаленного доступа стандартом де-факто является протокол SSH (Secure Shell). В отличие от устаревшего и небезопасного Telnet, который передавал данные в открытом виде, SSH использует надежное шифрование. Современные операционные системы (macOS, Linux и Windows 10/11) уже имеют встроенный SSH-клиент. Для подключения используется синтаксис ssh <имя_пользователя>@<IP-адрес>.
📖 Работа с системной документацией 16:28
Одной из важнейших навыков системного администратора является умение находить информацию. Поскольку количество команд и их опций огромно, Linux предоставляет встроенные инструменты для самообучения, которые критически важны в том числе при сдаче экзаменов (например, LFCS).
Методы получения справок 16:54
Когда вам нужно быстро вспомнить назначение флага или синтаксис команды, на помощь приходят следующие инструменты:
- Ключ
--help: Большинство команд поддерживают запуск с этим параметром (например,ls --help). Это выдает сжатую справку с перечислением основных опций, отсортированных в алфавитном порядке. - Man-страницы (
man): Это полноценные руководства. Командаman <название_команды>открывает подробную документацию, разбитую на разделы (описание, синтаксис, примеры). Если команда или функция встречается в разных контекстах, можно указать раздел, например,man 1 printfдля утилиты илиman 3 printfдля функции программирования. Просмотр man-страниц происходит через «пейджер» — встроенный текстовый просмотрщик, где можно перемещаться по тексту клавишами навигации и выйти по клавишеQ. - Утилита
apropos: Если вы забыли название команды,aproposпоможет найти её по описанию в базе данных man-страниц. Например,apropos directoryвыведет список команд, в описании которых встречается это слово. Примечание: если база данных еще не создана, её можно инициализировать командойsudo mandb. Для фильтрации результатов по разделам (обычно это 1 и 8 для команд) удобно использовать флаг-s:apropos -s 1 8 <запрос>.
Автодополнение (Tab Completion) 22:47
Клавиша Tab — ваш главный помощник в консоли. Она не только экономит время, но и снижает риск опечаток.
- Одиночное нажатие: автоматически завершает ввод, если вариант однозначен.
- Двойное нажатие: выводит список всех доступных вариантов, если их несколько.
Эта функция работает не только с названиями команд (например, systemctl), но и с путями к файлам и директориям. При вводе длинных имен файлов Tab позволяет избежать ручного набора, что крайне эффективно при работе с длинными архивами или конфигурационными файлами.
📁 Управление файловой системой и структура данных 26:53
Операции с файлами и директориями в Linux базируются на понимании структуры файловой системы, которая представляет собой перевернутое дерево. На самом верху находится корневая директория — / (root), от которой вниз расходятся ветви поддиректорий, таких как /home, /etc или /var.
Основы навигации и работы с файлами 27:06
Для взаимодействия с объектами в системе используются команды, которые работают как с абсолютными, так и с относительными путями.
ls: основная команда для отображения содержимого директорий. Файлы, начинающиеся с точки (например,.ssh), являются «скрытыми», и для их просмотра используется флаг-a(all).- Длинный формат: использование ключа
-lпозволяет увидеть метаданные: права доступа, владельца, группу и дату последнего изменения. - Человекочитаемость: флаг
-hв сочетании с-lпереводит размеры файлов из байтов в более удобные килобайты и мегабайты.
При навигации важно понимать, где вы находитесь: команда pwd (print working directory) показывает текущий путь. Для перемещения используется cd (change directory):
- Абсолютный путь всегда начинается от корня:
/home/aaron/documents. - Относительный путь строится относительно текущего места:
cd ..переносит вас на уровень выше, в родительскую директорию. cd -возвращает в предыдущую директорию, а командаcdбез аргументов — в домашнюю папку пользователя.
Манипуляции с объектами: создание, копирование и удаление 34:48
Для создания пустого файла применяется команда touch, а для создания директории — mkdir.
Копирование данных осуществляется командой cp (copy). Если нужно скопировать целую директорию со всем её содержимым (файлами и подпапками), необходимо использовать рекурсивный флаг -r. Перемещение или переименование файлов и папок выполняется одной командой — mv (move). Важно, что для mv не требуется указывать рекурсивный флаг даже при перемещении директорий. Удаление файлов производится через rm, а для удаления директорий также необходим флаг -r.
🔗 Жесткие ссылки и индексовые дескрипторы (inodes) 40:32
Понимание того, как Linux управляет данными, невозможно без концепции inode (индексового дескриптора). Файловые системы (например, ext4 или xfs) не хранят данные напрямую под именами файлов. Имя файла — это лишь указатель, который ссылается на inode, а уже тот содержит метаданные (права доступа, время изменения) и информацию о том, где именно на диске хранятся блоки данных.
Механика работы жестких ссылок 42:31
Когда вы создаете файл, Linux связывает имя файла с конкретным inode. Команда stat позволяет увидеть этот номер и количество ссылок на него. Жесткая ссылка — это, по сути, еще одно имя для того же самого inode.
Главные преимущества жестких ссылок:
- Экономия места: несколько пользователей могут «владеть» одним и тем же файлом, не создавая дубликатов данных на диске.
- Синхронность: изменения содержимого через одну ссылку сразу видны во всех остальных, так как все они ведут к одним и тем же блокам данных.
- Безопасность данных: при удалении одной жесткой ссылки данные не пропадают до тех пор, пока существует хотя бы одна другая ссылка. Файл удаляется с диска только тогда, когда счетчик ссылок
inodeстановится равен нулю.
Ограничения и особенности 46:46
При работе с жесткими ссылками (команда ln target link_name) следует учитывать три важных ограничения:
- Только файлы: нельзя создавать жесткие ссылки на директории.
- Один раздел: нельзя создать жесткую ссылку между разными файловыми системами (например, с SSD на внешний USB-диск).
- Права доступа: поскольку все ссылки указывают на один
inode, изменение прав доступа через любую из них применяется ко всем сразу.
Ранее в разговоре упоминалась работа с системной документацией, однако здесь мы сфокусировались исключительно на внутреннем устройстве файловой системы.
🐧 Символические ссылки, структура прав доступа и утилиты просмотра файлов в Linux 50:29
Гибкость символических ссылок и их особенности 50:29
При выводе списка файлов с помощью команды ls -l первую позицию в строке прав доступа может занимать символ l, который указывает на то, что перед нами мягкая, или символическая ссылка (soft link). Эта утилита также наглядно демонстрирует путь, на который ссылается созданный ярлык. Однако если целевой путь оказывается слишком длинным, команда ls -l может обрезать его в окне терминала. В качестве эффективной альтернативы для просмотра полного пути, зашитого в символическую ссылку, используется команда readlink, после которой указывается адрес самого ярлыка, например readlink family_dog_shortcut.jpg.
Интересной особенностью символических ссылок является отображение их битов разрешений: в выводе терминала они всегда выглядят как rwxrwxrwx, то есть чтение, запись и выполнение кажутся полностью открытыми для всех. На самом деле собственные права символической ссылки не имеют никакого значения для операционной системы. При попытке совершить действие с ней Linux всегда оценивает права доступа конечного целевого файла. Например, если обычный пользователь попытается перезаписать созданный им ярлык для системного файла конфигурации /etc/fstab, система заблокирует это действие, поскольку базовые права исходного файла запрещают запись кому-либо, кроме суперпользователя.
В отличие от жестких ссылок, механизм работы с которыми подробно рассматривался ранее в разговоре, символические ссылки обладают уникальными свойствами:
-
Они могут ссылаться на директории, а не только на файлы, например, через команду
ln -s pictures/ shortcut_dir. -
Они способны связывать файлы, находящиеся на абсолютно разных файловых системах.
При создании ссылок критически важно учитывать тип используемого пути. Если привязать ярлык через абсолютный путь (например, /home/aaron/pictures/family_dog.jpg), то при любом изменении имени домашней папки или промежуточных директорий ссылка немедленно сломается. Такие «битые» пути операционная система подсвечивает в терминале тревожным красным цветом. Чтобы избежать этой хрупкости, рекомендуется использовать относительные пути: находясь в домашнем каталоге пользователя, можно создать ярлык, указав относительный маршрут pictures/family_dog.jpg. В таком случае система будет успешно резолвить путь относительно текущего местоположения самой ссылки.
Стандартные права доступа и логика их проверки в Linux 52:58
Для понимания механизмов безопасности в Linux необходимо детально разобрать концепцию владельцев. Любой объект в системе принадлежит конкретному пользователю и определенной группе. Команда ls -l наглядно разделяет эти сущности: например, файл family_dog.jpg может управляться пользователем aaron. По умолчанию менять права доступа к объекту разрешено исключительно его непосредственному владельцу или суперпользователю root, обладающему неограниченными административными привилегиями. Вторым важным полем в метаданных выступает связанная группа, например family.
Оценка прав доступа в Linux происходит строго в линейном порядке слева направо, что порой приводит к неочевидным ситуациям. Рассмотрим классический пример: файл имеет маску прав -r--rw----, где владелец имеет доступ только на чтение (r--), группа имеет права на чтение и запись (rw-), а остальные пользователи лишены доступа вообще. Пользователь Aaron является владельцем этого файла и одновременно состоит в группе family. На первый взгляд может показаться, что раз группа имеет право на запись, то и Aaron сможет изменить файл. Однако при попытке добавить строку текста система выдаст ошибку.
Логика проверки со стороны ядра операционной системы выглядит следующим образом:
-
Определяется текущий пользователь, запрашивающий доступ (в данном случае это Aaron).
-
Система проверяет, является ли он владельцем файла. Ответ утвердительный, поэтому немедленно применяются права владельца (
r--), разрешающие только чтение. -
Дальнейший анализ битов для группы и остальных пользователей полностью прекращается, и попытка записи блокируется.
Если бы к этому же файлу обратился другой пользователь, например Jane, логика была бы иной: система увидит, что она не владелец, перейдет к проверке группы, зафиксирует ее членство в family и предоставит ей полный доступ на чтение и запись (rw-). Если же пользователь не совпал ни с владельцем, ни с группой, к нему применяются последние три бита из девяти символов маски разрешений — права для всех остальных (others).
Сами символы r (read), w (write) и x (execute) интерпретируются по-разному в зависимости от типа объекта. Для обычных файлов они означают чтение содержимого, его модификацию и запуск файла в качестве программы или скрипта. Для директорий семантика меняется: r позволяет просматривать список файлов внутри (например, выполнять команду ls pictures/), w дает право создавать или удалять файлы и подкаталоги (например, утилитой mkdir), а символ x отвечает за возможность «войти» внутрь каталога с помощью команды cd pictures.
Инструменты управления разрешениями: chmod, chown и chgrp 54:02
Для изменения управляющих параметров файлов используются специализированные команды. Смена группы объекта осуществляется утилитой chgrp (change group) по синтаксису chgrp <имя_группы> <файл>. Сменить группу файла (например, на wheel) обычный пользователь может только в том случае, если он сам в ней состоит. Список своих текущих групп всегда можно проверить командой groups. Смена владельца-пользователя выполняется командой chown (change owner). Поскольку передача владения другому лицу — это чувствительная с точки зрения безопасности операция, обычный пользователь не может выполнить её самостоятельно: для этого требуются права root и вызов утилиты sudo (например, sudo chown jane family_dog.jpg). С помощью chown можно одновременно переназначить и владельца, и группу, разделив их двоеточием: sudo chown aaron:family family_dog.jpg.
Для редактирования девяти битов разрешений применяется универсальная команда chmod. Она поддерживает два основных формата: символьный и восьмеричный (октал). В символьном режиме используются указатели субъектов (u — владелец, g — группа, o — остальные) и операторы (+ для добавления, - для удаления, = для жесткого присвоения).
Примеры использования символьного режима chmod:
-
chmod u+w family_dog.jpg— добавляет владельцу право на запись, превращая исходные битыr--в полноценныеrw-. -
chmod o-r family_dog.jpg— забирает право чтения у сторонних пользователей, скрывая конфиденциальный файл от всей системы. -
chmod g=r family_dog.jpg— жестко устанавливает права группы только на чтение, автоматически отключая запись или выполнение, даже если они были активны ранее. -
chmod g=или альтернативная формаchmod g-rwx— полностью очищает все права доступа для группы. -
chmod u+rw,g=r,o= family_dog.jpg— группирует разные правила в одну инструкцию через запятую.
Второй подход базируется на восьмеричных (октальных) значениях, которые можно наглядно увидеть через системную команду stat family_dog.jpg, где стандартные права отображаются в виде трехзначного числа (например, 640). В этой схеме каждый бит маски (r, w, x) представляется в двоичном виде (1 или 0). Если перевести эти триады в десятичную систему, то чтению (r) всегда соответствует вес 4, записи (w) — вес 2, а выполнению (x) — вес 1. Складывая цифры внутри каждой группы, мы получаем итоговый код. Так, маска rwxr-xr-x трансформируется в 755, а максимальные права на чтение, запись и запуск для всех (rwxrwxrwx) кодируются как 777. Финальная команда установки прав выглядит лаконично: chmod 640 family_dog.jpg.
Навигация по текстовым файлам: пейджеры less и more 1:11:35
При работе в терминале с объемными документами или системными логами стандартный вывод может мгновенно прокрутить экран, скрыв важные данные. Для решения этой проблемы используются пейджеры — программы, позволяющие открывать длинные тексты и комфортно перемещаться по ним. В экосистеме Linux основными инструментами такого рода выступают утилиты less и more. Для демонстрации их возможностей отлично подходит файл логов пакетного менеджера, расположенный по адресу /var/log/dnf.log.
Программа less является более современной и функциональной. При ее запуске имя открытого файла подсвечивается в левом нижнем углу экрана. Пользователь может перемещаться по тексту построчно вверх и вниз, используя стандартные стрелки клавиатуры. Одним из главных достоинств less является встроенный поиск: для его активации достаточно нажать клавишу косой черты / и ввести искомое слово, например debug. Программа подсветит первое совпадение, а для перехода к следующим инстанциям используется клавиша n. По умолчанию этот поиск чувствителен к регистру букв. Чтобы сделать его нечувствительным, утилите необходимо передать флаг -I. Движение в обратном направлении (вверх по документу) осуществляется комбинацией Shift + N. Для завершения работы с утилитой и возврата в командную строку используется клавиша q.
Второй пейджер, more, обладает усеченным набором функций, но вызывается аналогичным образом. Понять, что вы находитесь внутри more, можно по индикатору процента прочитанного текста внизу экрана. Навигация здесь осуществляется преимущественно постранично с помощью клавиши пробела, а выход также привязан к кнопке q.
После ознакомления с возможностями пейджеров логичным шагом в обучении становится освоение полноценного редактирования документов. В самом конце данного фрагмента инструктор переходит к разбору консольного текстового редактора Vim (Vi Improved), детальное изучение которого запланировано в рамках следующей главы.
🛠️ Глава 4. Инструментарий текстовой магии: редактор Vim и мощь утилиты grep 1:14:53
Текстовый редактор Vim для начинающих 1:14:53
Для новичков в Linux текстовый редактор Vim часто кажется непреодолимым препятствием, однако освоение его базовой логики радикально меняет продуктивность работы. Основная особенность Vim заключается в его разделении на режимы. По умолчанию редактор открывается в командном режиме (default mode), в котором нельзя обычным способом вводить текст. Чтобы вернуться в этот режим из любого другого состояния редактора, используется клавиша Escape.
Поиск текста внутри файла в командном режиме устроен аналогично утилите-пейджеру less — через клавишу косой черты /. Стоит помнить, что по умолчанию данный поиск чувствителен к регистру. Чтобы сделать его нечувствительным, после поискового запроса необходимо ввести специальную комбинацию из обратного слэша и строчной буквы "c" (\c), символизирующей слово case.
Быстрая навигация и редактирование строк в Vim осуществляются с помощью лаконичных команд:
-
Для перехода на конкретную строку введите двоеточие и номер строки (например,
:3мгновенно перенесет курсор на третью строку документа). -
Копирование целой строки выполняется двойным нажатием клавиши
y(yy) в командном режиме. -
Вставка скопированного фрагмента в место нахождения курсора происходит по нажатию клавиши
p. -
Вырезать (или удалить) строку целиком можно двойным нажатием клавиши
d(dd). Всё, что было вырезано, также можно вернуть на экран с помощью клавишиp.
Пожалуй, самым сложным моментом для тех, кто открывает Vim впервые, становится банальный выход из программы. Если вы внесли изменения в существующий файл и хотите их сохранить, введите двоеточие, букву w (от англ. write) для записи изменений и q (от англ. quit) для выхода — то есть комбинацию :wq. Если же файл был открыт без предварительного указания имени или вы хотите выйти без сохранения правок, используйте команду :q!. Знак восклицания здесь служит утвердительным сигналом системе закрыть редактор вопреки любым предупреждениям. Проверить результат записи всегда можно классической командой cat.
Поиск текста с помощью утилиты grep 1:19:50
Когда возникает необходимость найти конкретную информацию или отфильтровать строки в огромных массивах данных, на сцену выходит утилита grep. Общий синтаксис команды выглядит следующим образом: сначала указывается сама утилита grep, затем идут опции поиска, поисковый шаблон и, наконец, целевой файл. Классический пример — поиск упоминания дистрибутива в файле /etc/os-release.
Возможности grep значительно расширяются благодаря встроенным флагам:
-
-i(ignore case) — делает поиск нечувствительным к регистру символов, позволяя находить любые вариации написания слов. -
-r(recursive) — запускает рекурсивный поиск по всем файлам в указанной директории и её подкаталогах. Опции можно комбинировать, например, в виде флага-ir.
Стоит отметить, что при поиске в системных директориях обычный пользователь неизбежно столкнется с ошибками ограничения доступа. Ранее в разговоре авторы подробно касались темы разграничения прав и утилиты sudo, и здесь она незаменима: выполнение команды в формате sudo grep -ir centos /etc/ решит проблему прав.
Помимо этого, флаг -v позволяет инвертировать поиск, то есть выводить только те строки, которые не содержат указанный шаблон. Если нужно найти исключительно точное совпадение целого слова (избегая его вхождения в состав более длинных слов, вроде "red" внутри "redhat"), применяется флаг -w. Наконец, если контекст строки целиком не важен, а требуется извлечь только сами совпавшие символы, на помощь приходит опция -o.
Базовые регулярные выражения в Linux 1:23:29
Простые шаблоны поиска эффективны, но бесполезны, когда задача усложняется — например, при попытке извлечь все IP-адреса из сотен документов. Здесь требуется язык логических условий, коим и являются регулярные выражения (regex). Принцип их работы похож на математические уравнения с неизвестными и жесткими критериями отбора.
Базовые регулярные выражения (BRE) строятся с помощью специальных метасимволов-операторов, среди которых ключевыми являются циркумфлекс (^), знак доллара ($), точка (.) и звёздочка (*).
Оператор начала строки ^ (каретка) отсекает любые совпадения внутри текста, оставляя только те строки, которые начинаются строго с заданного паттерна (например, ^Sam отфильтрует только те имена, что начинаются на Sam). Напротив, знак доллара $ определяет конец строки. Поиск шаблона 7$ вернет исключительно те строки, финальным символом которых является семерка. Запомнить их расположение легко: оператор начала ставится впереди паттерна, оператор конца — строго в финале.
Точка . в синтаксисе regex заменяет ровно один любой случайный символ. Шаблон C.T успешно сопоставится со словами "cat", "cut" или "c1t", но проигнорирует "CT", так как наличие одного символа между буквами является обязательным. Если же вам необходимо найти реальную, текстовую точку, её специальное значение нужно аннулировать методом экранирования — добавив перед ней обратный слэш (\.).
Оператор звёздочка * указывает на то, что предшествующий ему символ может отсутствовать вовсе, встретиться один раз или повторяться бесконечное количество раз. Это позволяет создавать гибкие конструкции. Например, комбинация .*, помещенная между двумя косыми чертами, разрешает находиться абсолютно любой последовательности символов между ними.
Расширенные регулярные выражения и подвыражения 1:33:50
Использование базовых регулярных выражений имеет скрытую проблему. Метасимволы вроде знака плюса + или вопроса ? по умолчанию воспринимаются обычным grep как буквальные символы. Чтобы заставить их работать как операторы в BRE, их приходится постоянно экранировать слэшами (\+), что быстро превращает поисковую строку в нечитаемое месиво. Разумный выход — использование расширенных регулярных выражений (ERE) с помощью флага grep -E или специализированной команды egrep.
В рамках ERE раскрывается полный потенциал квантификаторов и логики:
-
Оператор плюс
+требует, чтобы предыдущий символ обязательно существовал и повторился один или более раз (в отличие от звёздочки, где символ опционален). -
Знак вопроса
?делает предшествующий элемент строго необязательным, допуская его появление 0 или 1 раз. Это удобно для поиска вариаций слов, например, "disabled" и "disable" через шаблонdisabled?. -
Фигурные скобки
{}задают точные рамки повторений. Конструкция{3}ищет ровно три совпадения,{,3}ограничивает поиск максимумом в три повторения, а указание диапазона через запятую{3,5}найдет последовательности длиной от трех до пяти символов.
Для построения ветвящейся логики применяется вертикальная черта |, выполняющая роль оператора «ИЛИ». С её помощью можно за один проход искать строки, содержащие либо "enabled", либо "disabled".
Специфические наборы и диапазоны символов описываются внутри квадратных скобок []. Конструкция [a-z] охватывает любую строчную букву латинского алфавита, а [0-9] — любую одиночную цифру. Это помогает решать проблемы избыточной "жадности" регулярных выражений. При попытке найти файлы устройств в каталоге /dev/ стандартный шаблон с точкой и звездочкой (.*) захватывает лишние данные. Использование строгого ERE-шаблона с ограничением по диапазонам букв и цифр (например, [a-z]*[0-9]) позволяет ювелирно отфильтровать системные имена вида /dev/sda1, четко контролируя финал строки.
👤 Управление локальными учетными записями пользователей
Создание индивидуальных учетных записей — фундаментальный аспект администрирования Linux. Это не только позволяет пользователям настраивать рабочую среду под себя, но и обеспечивает безопасность системы через разграничение прав и изоляцию файлов.
Для создания нового пользователя используется утилита useradd. При выполнении команды useradd [имя_пользователя] система автоматически выполняет ряд действий:
- Создает запись в системе и одноименную первичную группу.
- Инициализирует домашний каталог в
/home/[имя_пользователя], куда копируются файлы из «скелетного» каталога/etc/skel. - Назначает стандартную оболочку (обычно
/bin/bash).
Настройки по умолчанию можно просмотреть с помощью useradd -D (или --defaults). Сами учетные данные (UID, GID, домашний каталог, оболочка) хранятся в файле /etc/passwd.
Для удаления пользователя применяется команда userdel. Важно помнить, что по умолчанию домашний каталог пользователя сохраняется. Чтобы удалить его вместе с почтовым спулом, следует использовать флаг -r (или --remove).
Администраторы также могут гибко модифицировать существующие учетные записи с помощью usermod:
- Смена домашнего каталога:
usermod -m -d [новый_путь] [имя](флаг-mперемещает содержимое старой директории). - Блокировка учетной записи:
usermod -L(пользователь не сможет войти по паролю, но ключи SSH могут продолжить работать). - Управление сроком действия: установка даты истечения аккаунта через
-e.
Отдельно стоит выделить создание системных учетных записей для программ и демонов с помощью флага --system. У таких пользователей, как правило, нет домашнего каталога, а их UID меньше 1000. Кроме того, для контроля паролей используется утилита chage, позволяющая задавать частоту принудительной смены пароля (--maxdays) или немедленно аннулировать его действие.
👥 Управление локальными группами и членством
Группы в Linux служат мощным инструментом для организации совместного доступа к ресурсам. Вместо настройки прав для каждого пользователя индивидуально, администратор может создать группу (например, developers), добавить в нее необходимых участников и назначить группе права доступа к общим файлам.
Каждый пользователь может состоять в нескольких группах:
- Первичная (логин) группа: назначается при создании пользователя и обычно совпадает с его именем.
- Вторичные (дополнительные) группы: позволяют пользователю участвовать в различных рабочих процессах (например, входить в группы
wheel/sudoдля получения привилегий илиdockerдля управления контейнерами).
Для управления группами используются следующие утилиты:
groupadd: создание новой группы.gpasswd: основной инструмент для добавления (-a) или удаления (-d) пользователей из групп.groups: проверка принадлежности текущего пользователя к группам.
При изменении членства важно различать работу с группами через usermod: использование флага -G (или --groups) управляет вторичными группами, тогда как -g меняет первичную группу пользователя.
Удаление группы осуществляется командой groupdel. Если группа является первичной для какого-либо пользователя, система выдаст ошибку; сначала необходимо сменить первичную группу этого пользователя на другую.
Ранее в разговоре они касались регулярных выражений и их применения в различных утилитах.
-
🛡️ Безопасность и управление ресурсами в Linux 5:51
Ограничение системных ресурсов для пользователей 5:51
В Linux существует гибкая система контроля за тем, сколько ресурсов может потреблять тот или иной пользователь. Основным инструментом для этого служит файл /etc/security/limits.conf. Настройка лимитов позволяет системному администратору предотвратить ситуацию, когда один пользователь или процесс «съедает» все доступные мощности сервера.
Логика работы конфигурационного файла предельно проста:
- Значения по умолчанию: Если пользователь не указан в файле явно, к нему применяются правила, помеченные символом
*(asterisk). - Приоритеты: Индивидуальные правила для конкретного пользователя всегда имеют приоритет над общими настройками «по умолчанию».
- Типы лимитов:
- Hard limit (жесткий лимит): Максимально допустимое значение, которое обычный пользователь не может превысить.
- Soft limit (мягкий лимит): Начальный лимит при входе в систему. Пользователь может временно поднять его до уровня hard limit, если того требует задача, но не выше.
- Комбинированный лимит (
-): Установка одновременно hard и soft лимитов на одно значение.
Управлять можно такими параметрами, как количество открытых процессов (nproc), максимальный размер создаваемых файлов в килобайтах (fsize) или время использования CPU в минутах. Для проверки текущих ограничений сессии используется команда ulimit -a. Важно помнить: по умолчанию пользователь может только понижать свои лимиты, но не повышать их, за исключением случаев с hard/soft лимитами, где повышение ограничено «жестким» порогом.
Управление привилегиями пользователей через sudo 11:54
Поскольку прямое выполнение операций от имени root небезопасно, в Linux широко используется утилита sudo. Она позволяет обычным пользователям запускать команды с полномочиями суперпользователя.
Чтобы предоставить такие права, можно пойти простым путем, добавив пользователя в группу wheel. Однако для более тонкой настройки прав используется конфигурационный файл /etc/sudoers. Редактировать его напрямую нельзя — для этого существует специальная утилита visudo, которая проверяет синтаксис файла на наличие ошибок перед сохранением, предотвращая случайную блокировку административного доступа.
Правила в файле sudoers строятся по определенному шаблону и включают четыре поля:
- Пользователь или группа: Кому предоставляется право.
- Хост: На каких машинах правило действует (обычно
ALL). - Run as: От имени какого пользователя можно выполнять команды.
- Список команд: Какие конкретно утилиты разрешено запускать.
Администратор может даже разрешить выполнение определенных команд без ввода пароля, добавив в конфигурацию параметр NOPASSWD. Ранее в курсе уже упоминалось управление локальными учетными записями и группами, что является фундаментом для подобных настроек доступа.
Контроль доступа к учетной записи root 17:43
Прямой доступ к root требует особой осторожности. Помимо использования sudo для временного повышения привилегий, системный администратор может войти в систему напрямую как root, используя команды su -, su -l или sudo -i.
Иногда учетная запись суперпользователя может быть заблокирована — это означает, что авторизация по паролю невозможна, но доступ через sudo сохраняется. Управление безопасностью root включает:
- Установка или разблокировка пароля: Если root-доступ был ограничен, администратор может разблокировать его для полноценного входа.
- Блокировка парольного входа: В целях безопасности можно принудительно запретить вход в
rootпо паролю, оставив доступ только через ключи SSH илиsudo.
Критически важно не заблокировать возможность входа root до того, как вы убедитесь, что у вас есть надежно настроенная альтернатива через sudo. Потеря обоих путей доступа приведет к тому, что вы не сможете менять ключевые системные настройки, фактически заблокировав себя вне администрирования собственного сервера.
-