Работа с управлением учетными записями пользователей#

Управление учетными записями и группами с помощью инструментов командной строки#

При работе с управлением учетными записями каждому пользователю присваивается уникальный числовой идентификационный номер, называемый идентификатором пользователя (UID). Аналогично, каждая группа связана с идентификатором группы (GID). Пользователь, создающий файл, также является владельцем и владельцем группы этого файла. Файлу назначаются отдельные разрешения на чтение, запись и выполнение – для владельца, группы и всех остальных. Права доступа могут быть изменены как пользователем с административными полномочиями, так и владельцем файла.

SberLinux OS Server резервирует идентификаторы ниже 1000 для системных пользователей и групп. По умолчанию Диспетчер пользователей не отображает системных пользователей. Зарезервированные идентификаторы документируются в пакете установки. Чтобы просмотреть документацию, используйте следующую команду:

cat /usr/share/doc/setup*/uidgid

Рекомендуемая практика — назначать идентификаторы, начинающиеся с 5000, которые еще не были зарезервированы, поскольку зарезервированный диапазон может увеличиться в будущем. Чтобы идентификаторы, назначаемые новым пользователям по умолчанию, начинались с 5000, измените директивы UID_MIN и GID_MIN в файле: /etc/login.defs, как представлено на примере:

[file contents truncated]

UID_MIN 5000

[file contents truncated]

GID_MIN 5000 >[file contents truncated]

Важно

Для пользователей, созданных до изменения директив UID_MIN и GID_MIN, идентификаторы UID по-прежнему будут начинаться со значения по умолчанию – 1000. Даже с новыми идентификаторами пользователей и групп, начинающимися с 5000, рекомендуется не повышать зарезервированные системой идентификаторы выше 1000, чтобы избежать конфликта с системами, которые сохраняют ограничение в 1000.

Список всех групп хранится в конфигурационном файле /etc/group.

Теневые пароли#

В средах с несколькими пользователями очень важно использовать теневые пароли, предоставляемые пакетом shadow-utils, для повышения безопасности системных файлов аутентификации. По этой причине программа установки по умолчанию включает теневые пароли.

Ниже приведен список преимуществ теневых паролей по сравнению с традиционным способом хранения паролей:

  • Теневые пароли повышают безопасность системы, перемещая зашифрованные хеши паролей из общедоступного файла /etc/passwd в файл /etc/shadow, доступный для чтения только пользователю с административными полномочиями (например, root).

  • Теневые пароли хранят информацию о старении пароля.

  • Теневые пароли позволяют применять некоторые политики безопасности, установленные в файле /etc/login.defs.

Большинство утилит, предоставляемых пакетом shadow-utils, работают должным образом независимо от того, включены или нет теневые пароли. Но поскольку информация о старении пароля хранится исключительно в файле /etc/shadow, некоторые утилиты и команды не будут работать без предварительного включения теневых паролей. К такой категории относятся:

  • Утилита chage для настройки параметров старения пароля (подробнее в разделе «База знаний» → «Утилита chage»).

  • Утилита gpasswd для администрирования файла /etc/group (подробнее в разделе «База знаний» → «Утилита gpasswd»).

  • Команда usermod с параметром -e, --expiredate или -f, --inactive.

  • Команда useradd с параметром -e, --expiredate или -f, --inactive.

Добавление новых учетных записей с помощью командной строки#

Чтобы добавить нового пользователя в систему, зайдите в качестве пользователя с административными полномочиями и введите следующее в командной строке (подробнее в разделе «База знаний» → «Утилита useradd»):

useradd <options> <username>

Где:

  • <options> - опции;

  • <username> – имя пользователя.

Опции useradd#

Опция

Описание

--badname

Разрешить имена, которые не соответствуют стандартным ограничениям

-b <base-dir>, --base-dir <base-dir>

Указать префикс <base-dir> по умолчанию при создании домашнего каталога нового пользователя, если не указана опция -d. <base-dir> объединяется с именем учетной записи для определения домашнего каталога. Если опция -b или --base-dir не указана, то useradd будет использовать базовый каталог, указанный в переменной HOME в /etc/default/useradd или /home по умолчанию

-d <home-dir>, --home-dir <home-dir>

Создать нового пользователя с указанием определенного каталога при создании домашнего каталога. Если указанный в опции каталог не существует, то он будет создан (если не указана опция -M)

-D, --defaults

Изменить значения по умолчанию. При вызове только с опцией -D useradd отобразит текущие значения по умолчанию. При вызове с помощью -D и дополнительных опций useradd обновит значения по умолчанию для указанных параметров. Допустимыми параметрами для изменения по умолчанию являются:
-b, --base-dir;
-e, --expiredate;
-f, --inactive;
-g, --gid;
s,--shell

-e <expire-date>, --expiredate <expire-date>

Указать дату, с которой учетная запись пользователя будет отключена. Если дата не указана, то useradd будет использовать дату истечения срока действия по умолчанию, указанную переменной EXPIRE в /etc/default/useradd, или пустую строку (без истечения срока действия)

-f <days_number>, --inactive <days_number>

Задать количество дней после превышения максимального срока действия пароля, в течение которых пользователь, как ожидается, заменит пароль. Значение хранится в файле shadow password. При вводе 0 пароль с истекшим сроком действия отключается без задержки. При вводе -1 соответствующее поле в файле паролей shadow будет пустым. Если <days_number> не указано, useradd будет использовать период бездействия по умолчанию, указанный переменной INACTIVE

-g <group>, --gid <group>

Указать имя или номер основной группы пользователя. Название группы должно существовать. Номер группы должен относиться к уже существующей группе. Если опция не указана, поведение useradd будет зависеть от переменной USERGROUPS_ENAB в /etc/login.defs. Если для этой переменной установлено значение yes (или в командной строке указана опция -U/--user-group), для пользователя будет создана группа с тем же именем, что и ее логин. Если переменная установлена в значение no (или в командной строке указана опция -N/--no-user-group), useradd установит для основной группы нового пользователя значение, указанное параметром переменной GROUP в /etc/default/useradd, или 1000 по умолчанию

-G <groups>, --groups <groups>

Указать список дополнительных групп, в которые также должен входить новый пользователь. Каждая группа отделяется от следующей запятой без пробелов. На группы распространяются те же ограничения, что и на группу, указанную с помощью опции -g

-k, --skel

Указать основной каталог, содержащий файлы и каталоги, которые необходимо скопировать в домашний каталог пользователя при создании. Опция действительна, только если указана опция -m/--create-home. Если опция -k/--skel не установлена, то базовый каталог определяется переменной SKEL в /etc/default/useradd или по умолчанию в /etc/skel. По возможности копируются списки управления доступом (ACL) и расширенные атрибуты

-m, --create-home

Указать необходимость создания домашнего каталога пользователя, если он не существует. Файлы и каталоги, содержащиеся в базовом каталоге (который можно определить с помощью опции -k), будут скопированы в домашний каталог. Если опция -m/--create-home не указана и не включен параметр CREATE_HOME, по умолчанию домашние каталоги не создаются. Каталог, в котором создается домашний каталог пользователя, должен существовать и иметь соответствующий контекст SELinux и разрешения. В противном случае, домашний каталог пользователя не может быть создан или к нему нельзя получить доступ

-s <path-to-shell>, --shell <path-to-shell>

Задать путь к оболочке входа пользователя. Без этой опции система будет использовать переменную SHELL, указанную в /etc/default/useradd, или, если она также не установлена, поле для оболочки входа в систему в /etc/passwd останется пустым

-N, --no-user-group

Указать useradd не создавать группу с тем же именем, что и у пользователя, а добавить пользователя в группу, указанную с помощью опции -g или переменной GROUP в /etc/default/useradd. Если не указаны опции -g, -N и -U, поведение useradd по умолчанию определяется переменной USERGROUPS_ENAB в /etc/login.defs

-p <password>, --password <password>

Определить начальный пароль для учетной записи нового пользователя. <password>, указанный при использовании опции, будет зашифрован с помощью crypt. Без опции p/--password новая учетная запись пользователя без указания пароля будет заблокирована (отмечена знаком ! в /etc/shadow). В этом случае пользователь не сможет получить доступ к учетной записи или самостоятельно ввести пароль.

-u <uid>, --uid <uid>

Задать числовое значение идентификатора пользователя. Значение должно быть уникальным и неотрицательным. По умолчанию используется наименьшее значение ID, большее или равное UID_MIN, и большее, чем у любого другого пользователя

-r, --system

Создать системную учетную запись пользователя. Системные пользователи создаются без информации об устаревании в /etc/shadow, а их UID будут выбраны в диапазоне SYS_UID_MIN - SYS_UID_MAX, определенном в /etc/login.defs, вместо диапазона UID_MIN - UID_MAX (и их аналогов в GID для создания групп). useradd не создаст домашний каталог для такого пользователя, независимо от настройки по умолчанию в /etc/login.defs (CREATE_HOME). Необходимо указать опцию -m, если требуется создать домашний каталог для системной учетной записи

По умолчанию команда useradd создает заблокированную учетную запись пользователя. Чтобы разблокировать учетную запись, выполните следующую команду от имени пользователя с административными полномочиями, чтобы назначить пароль:

passwd username

При желании установите политику устаревания паролей с помощью параметров командной строки useradd.

Добавление новой группы пользователей с помощью командной строки#

Чтобы добавить новую группу в систему, выполните команду от имени пользователя с административными полномочиями (подробнее в разделе «База знаний» → «Утилита groupadd»):

groupadd <options> <groupname>

Где:

  • <options> - опции;

  • <groupname> - новая группа.

Опции groupadd#

Опция

Описание

-f, --force

Завершить работу и вернуть состояние успешного выполнения, если группа существует. При использовании с опцией -g если указанный GID существует, то выбирается другой

-g, --gid

Установить идентификатор группы, который должен быть уникальным и превышать 999

-K, --key key = value

Переопределить значения по умолчанию, заданные в /etc/login.defs

-o, --non-unique

Создать группы с повторяющимся GID

-p, --password

Установить зашифрованный пароль для новой группы, возвращаемый функцией crypt

-r

Создать системную группу с идентификатором GID меньше 1000

Добавление существующего пользователя в существующую группу#

Используйте утилиту usermod для добавления уже существующего пользователя в уже существующую группу (подробнее в разделе «База знаний» → «Утилита usermod»).

Различные варианты usermod оказывают различное влияние на основную группу пользователя и на его или ее дополнительные группы. Чтобы переопределить основную группу пользователя, выполните следующую команду от имени пользователя с административными полномочиями:

usermod -g <groupname>

Где <groupname> - имя группы.

Чтобы переопределить дополнительные группы пользователя, выполните следующую команду как пользователь с административными полномочиями:

usermod -G <groupname_1>,<groupname_2>,... <user_name>

Где <user_name> - имя пользователя.

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

Чтобы добавить одну или несколько групп в дополнительные группы пользователя, выполните одну из следующих команд как пользователь с административными полномочиями:

usermod -aG <groupname_1>,<groupname_2>,... <user_name>

Или:

usermod --append -G <groupname_1>,<groupname>,... <user_name>

Внимание

Обратите внимание, что в данном случае новая группа добавляется к текущим дополнительным группам пользователя.

Введение в управление учетными записями пользователей и групп#

Контроль пользователей и групп является ключевым элементом системного администрирования SberLinux OS Server. Каждый пользователь SberLinux OS Server имеет отдельные учетные данные для входа и может быть назначен различным группам для настройки их системных привилегий.

Настройка зарезервированных идентификаторов пользователей и групп#

Зарезервированные идентификаторы пользователей и групп находятся в пакете setup. Чтобы просмотреть зарезервированные идентификаторы пользователей и групп, выполните команду:

cat /usr/share/doc/setup*/uidgid

Рекомендуется назначать идентификаторы новым пользователям и группам, начиная с 5000, так как зарезервированный диапазон может увеличиться в будущем.

Чтобы идентификаторы, назначаемые новым пользователям, по умолчанию начинались с 5000, измените параметры UID_MIN и GID_MIN в файле /etc/login.defs.

Чтобы идентификаторы, назначаемые новым пользователям, по умолчанию начинались с 5000, выполните следующие шаги:

  1. Откройте файл /etc/login.defs в редакторе по выбору.

  2. Найдите строки, которые определяют минимальное значение для автоматического выбора идентификатора пользователя:

    # Min/max values for automatic uid selection in useradd
    #
    UID_MIN 1000
    
  3. Измените значение UID_MIN, чтобы оно начиналось с 5000.

    # Min/max values for automatic uid selection in useradd
    #
    UID_MIN 5000
    
  4. Найдите строки, которые определяют минимальное значение для автоматического выбора GID:

    # Min/max values for automatic gid selection in groupadd
    #
    GID_MIN 1000
    
  5. Измените значение GID_MIN, чтобы оно начиналось с 5000.

    # Min/max values for automatic gid selection in groupadd
    #
    GID_MIN 1000
    

    Динамически назначаемые UID и GID для обычных пользователей начинаются с 5000.

Примечание

Идентификаторы UID и GID пользователей и групп, созданные до изменения значений UID_MIN и GID_MIN, не изменяются. Это позволит новой группе пользователей иметь тот же идентификатор 5000+, что UID и GID.

Частные группы пользователей#

SberLinux OS Server использует конфигурацию системы user private group (UPG). Личная группа пользователей создается всякий раз, когда в систему добавляется новый пользователь. Частная группа пользователей имеет то же имя, что и пользователь, для которого она была создана. Этот пользователь является единственным членом частной группы.

UPG упрощают совместную работу над проектом между несколькими пользователями. Конфигурация системы UPG позволяет безопасно устанавливать разрешения по умолчанию для вновь созданного файла или каталога, поскольку это позволяет как пользователю, так и группе, в которую входит этот пользователь, вносить изменения в файл или каталог.

Список всех групп хранится в файле конфигурации /etc/group.

Управление пользователями из командной строки#

Создание каталога группы#

В соответствии с конфигурацией системы UPG можно применить разрешение set-group identification (setgid) к каталогу. setgid упрощает управление групповыми проектами, которые совместно используют каталог. Когда разрешение применяется к каталогу, файлы, созданные в нем, автоматически присваиваются группе, которой принадлежит этот каталог. Любой пользователь, имеющий разрешение на запись и выполнение в этой группе, может создавать, изменять и удалять файлы в каталоге.

Для создания группового каталога выполните следующий сценарий:

  1. Создайте каталог directory-name:

    mkdir directory-name
    
  2. Создайте группу group-name:

    groupadd group-name
    
  3. Добавьте пользователей в группу:

    usermod --append -G group-name username
    
  4. Свяжите пользователя и группу, владеющих каталогом, с группой group-name:

    chown :group-name directory-name
    
  5. Установите разрешения на запись, чтобы разрешить пользователям создавать и изменять файлы и каталоги, и установите setgid, чтобы это разрешение применялось в каталоге:

    chmod g+rwxs directory-name
    

    Теперь все члены группы group-name могут создавать и редактировать файлы в directory-name. Вновь созданные файлы сохраняют право собственности группы group-name.

  6. Для проверки правильности установленных разрешений, используйте:

    ls -ld directory-name
    

    Пример вывода команды:

    drwxrwsr-x. 2 root group-name 6 Nov 25 08:45 directory-name
    

Редактирование групп пользователей с помощью командной строки#

Пользователь принадлежит к определенному набору групп, которые позволяют логически собирать пользователей с одинаковым доступом к файлам и папкам. Можно редактировать основные и дополнительные группы пользователей из командной строки, чтобы изменить права доступа.

Группа — это организация, которая объединяет несколько учетных записей пользователей для общей цели, такой как предоставление доступа к определенным файлам.

Группы пользователей могут выступать в качестве основных или дополнительных. Основные и дополнительные группы обладают следующими свойствами:

Первичная группа:

  • У каждого пользователя всегда есть только одна основная группа.

  • Можно изменить основную группу пользователя.

Дополнительные группы:

  • Можно добавить существующего пользователя в существующую дополнительную группу, чтобы управлять пользователями с теми же правами безопасности и доступа внутри группы.

  • Пользователи могут быть членами нулевой или нескольких дополнительных групп.

Список основных и дополнительных групп пользователя#

Можно составить список групп пользователей, чтобы узнать, к каким основным и дополнительным группам они принадлежат. Для этого используйте команду:

groups user-name

Где user-name- имя пользователя. Если не укажете имя пользователя, команда отобразит членство в группе для текущего пользователя. Первая группа — основная, за которой следуют необязательные дополнительные.

В качестве примера выведите список групп для пользователя arina:

groups arina

Пример вывода команды:

arina : arina wheel developer

Пользователь arina имеет основную группу arina и является членом дополнительных групп wheel и developer.

Удаление пользователя из дополнительной группы#

Можно удалить существующего пользователя из дополнительной группы, чтобы ограничить его права доступа или доступ к файлам и устройствам, с помощью команды:

gpasswd -d user-name group-name

Где:

  • user-name – имя пользователя;

  • group-name – имя дополнительной группы.

В качестве примера удалите пользователя из дополнительной группы.

Если пользователь arina имеет основную группу arina2 и принадлежит к дополнительным группам wheel и developers, и нужно удалить этого пользователя из группы developers, используйте:

gpasswd -d arina developers

Убедитесь, что пользователь arina удален из дополнительной группы developers:

groups arina

Пример вывода команды:

arina : arina2 wheel

Управление доступом sudo#

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

Авторизация пользователей в sudoers#

Файл /etc/sudoers указывает, какие пользователи могут запускать команды с помощью sudo. Правила могут применяться как к отдельным пользователям, так и к группам пользователей. Также используйте псевдонимы, чтобы упростить определение правил для групп хостов, команд и даже пользователей. Псевдонимы по умолчанию определены в первой части файла /etc/sudoers.

Когда пользователь пытается использовать sudo для выполнения команды, которая не разрешена в файле /etc/sudoers, система записывает содержащееся сообщение журнала username : user NOT in sudoers.

Файл /etc/sudoers по умолчанию содержит информацию и примеры авторизации. Активируйте конкретное примерное правило, удалив символ комментария # из начала строки. Раздел авторизации, относящийся к пользователю, отмечен следующим введением:

## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).

Используйте следующий формат для создания новых sudoers и изменения существующих авторизаций:

<username> <hostname>=<path_to_command>

Где:

  • <username> - имя пользователя или группы. Например, user_1 или %group_1;

  • <hostname> - имя хоста, к которому применяется правило;

  • <path_to_command> - полный абсолютный путь к команде. Можно ограничить пользователя выполнением команды только с определенными параметрами и аргументами, добавив эти параметры после указания пути к команде. Если не указано никаких параметров, пользователь может использовать команду со всеми параметрами.

Замените любую из этих переменных на ALL, чтобы применить правило ко всем пользователям, хостам или командам.

Важно

С правилами, снимающими любые ограничения, такими как ALL ALL=(ALL) ALL, все пользователи могут запускать все команды. Это может привести к угрозам безопасности.

Укажите аргументы отрицательно, используя команду !. Например, !root указывает всех пользователей, кроме пользователя с именем root. Обратите внимание, что использование списков разрешений для разрешения определенных пользователей, групп и команд более безопасно, чем использование списков блокировки для запрета определенных пользователей, групп и команд. Используя списки разрешений, блокируйте новых неавторизованных пользователей или группы.

Важно

Избегайте использования отрицательных правил для команд, поскольку пользователи могут обойти такие правила, переименовав команды с помощью alias.

Система считывает файл /etc/sudoers от начала до конца. Поэтому, если файл содержит несколько записей для пользователя, записи применяются по порядку. В случае конфликтующих значений система использует последнее совпадение, даже если оно не самое конкретное.

Предпочтительный способ добавления новых правил sudoers - это создание новых файлов в каталоге /etc/sudoers.d/ вместо ввода правил непосредственно в файл /etc/sudoers. Это связано с тем, что содержимое этого каталога сохраняется во время обновления системы. Кроме того, легче исправить любые ошибки в отдельных файлах, чем в файле /etc/sudoers. Система считывает файлы в каталоге /etc/sudoers.d, когда доходит до следующей строки в файле /etc/sudoers:

#includedir /etc/sudoers.d

Обратите внимание, что номерной знак # в начале этой строки является частью синтаксиса и не означает, что строка является комментарием. Имена файлов в этом каталоге не должны содержать . (точки) и не должны заканчиваться ~ (тильдой).

Предоставление доступа sudo-пользователю#

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

Когда пользователям необходимо выполнить административную команду, они могут это сделать с помощью команды sudo.

Существуют следующие ограничения:

  • только пользователи, перечисленные в конфигурационном файле /etc/sudoers, могут использовать команду sudo;

  • команда выполняется в командной строке пользователя.

  1. От имени пользователя с административными полномочиями, откройте файл /etc/sudoers:

    visudo
    

    Файл /etc/sudoers определяет политики, применяемые командой sudo.

  2. В файле /etc/sudoers найдите строки, которые предоставляют доступ sudo-пользователям в административной группе wheel.

    ## Allows people in group wheel to run all commands
    %wheel ALL=(ALL) ALL
    
  3. Убедитесь, что строка, начинающаяся с \%wheel, не имеет перед собой символа комментария #.

  4. Сохраните все изменения и выйдите из редактора.

  5. Добавьте пользователей, которым нужно предоставить доступ sudo, в административную группу wheel.

  6. Выполните команду:

    usermod --append -G wheel <username>
    

    Где <username> – имя пользователя.

  7. Убедитесь, что пользователь добавлен в административную группу wheel:

    id username
    

    Пример вывода команды:

    uid=5000(username) gid=5000(username) groups=5000(username),10(wheel)
    

Разрешение пользователям без административных полномочий запускать определенные команды#

Настройте политику, которая позволяет пользователю без административных полномочий запускать определенную команду на определенной рабочей станции. Чтобы настроить политику, необходимо создать и отредактировать файл в sudoers.d.

  1. Как пользователь с административными полномочиями, создайте новый каталог sudoers.d:

    mkdir -p /etc/sudoers.d/
    
  2. Создайте новый файл в каталоге /etc/sudoers.d:

    visudo -f /etc/sudoers.d/<file-name>
    

    Где <file-name> – имя файла.

  3. Добавьте следующую строку во вновь созданный файл:

    <username> <hostname>=<path_to_the_command>
    

    Где:

    • <username> – имя пользователя;

    • <hostname> – имя хоста;

    • <path_to_the_command> – абсолютный путь к команде (например, на /usr/bin/dnf).

  4. Сохраните все изменения и выйдите из редактора.

Пример предоставления пользователю без административных полномочий возможности устанавливать программы с помощью dnf#

Чтобы разрешить пользователю arina устанавливать программы на рабочую станцию localhost.localdomain с помощью утилиты dnf (подробнее в разделе «База знаний» → «Утилита dnf») с привилегиями sudo, используйте следующий сценарий:

  1. Как пользователь с административными полномочиями, создайте новый каталог sudoers.d в /etc/:

    mkdir -p /etc/sudoers.d/
    
  2. Создайте новый файл в каталоге /etc/sudoers.d:

    visudo -f /etc/sudoers.d/arina
    

    Файл откроется автоматически.

  3. Добавьте файл /etc/sudoers.d/arina в следующую строку:

    arina localhost.localdomain = /usr/bin/yum
    
  4. Убедитесь, что два пути к командам разделены , (запятой), за которой следует пробел.

  5. При необходимости, чтобы получать уведомления по электронной почте каждый раз, когда пользователь arina пытается использовать привилегии sudo, добавьте в файл следующие строки:

    Defaults mail_always
    Defaults mailto="email@domain.ru"
    

    Где email@domain.ru - адрес электронной почты.

  6. Чтобы проверить, может ли пользователь arina выполнить команду dnf с привилегиями sudo, переключите учетную запись:

    su arina -
    
  7. Введите команду sudo dnf:

    sudo dnf
    [sudo] password for arina:
    
  8. Введите пароль sudo для пользователя arina. Система отобразит список команд dnf и разделов (опций):

    ...
    usage: dnf [options] COMMAND
    ...
    

    Если получено сообщение arina is not in the sudoers file. This incident will be reported., значит настройка была выполнена неправильно.

Изменение и сброс пароля пользователя с административными полномочиями#

Если существующий пароль пользователя с административными полномочиями забыт или больше не удовлетворяет, можно изменить или сбросить этот пароль, как пользователю с административными полномочиями, так и без.

Изменение пароля пользователя с административными полномочиями#

В этом разделе описывается, как использовать команду passwd для изменения пароля пользователя с административными полномочиями от имени пользователя с административными полномочиями (подробнее в разделе «База знаний» → «Утилита passwd»).

Чтобы изменить пароль, используйте команду:

passwd

Изменение или сброс забытого пароля пользователя с административными полномочиями в качестве пользователя без полномочий#

Предварительные условия

- Вход в систему как пользователь без административных полномочий

- Получена административная wheel-группа

Чтобы изменить или сбросить пароль пользователя с административными полномочиями, не являющегося пользователем с административными полномочиями, принадлежащего к wheel группе, используйте:

sudo passwd root

Будет предложено ввести текущий пароль пользователя, прежде чем появится возможность изменить пароль пользователя с административными полномочиями.

Сброс пароля пользователя с административными полномочиями при загрузке#

Если не получается войти в систему, как обычный пользователь или отсутствует непринадлежность к административной группе wheel, можно сбросить пароль пользователя с административными полномочиями при загрузке, переключившись в специализированную среду chroot jail.

  1. Перезагрузите систему и на экране загрузки GRUB 2 нажмите клавишу e, чтобы прервать процесс загрузки. Появятся параметры загрузки ядра:

    load_video
    set gfx_payload=keep
    insmod gzio
    linux ($root)/vmlinuz-4.18.0-80.e18.x86_64 root=/dev/mapper/sberlinux-root ro crash\
    kernel=auto resume=/dev/mapper/sberlinux-swap rd.lvm.lv/swap rhgb quiet
    initrd ($root)/initramfs-4.18.0-80.e18.x86_64.img $tuned_initrd
    
  2. Перейдите к концу строки, которая начинается с linux:

    linux ($root)/vmlinuz-4.18.0-80.e18.x86_64 root=/dev/mapper/sberlinux-root ro crash\
    kernel=auto resume=/dev/mapper/sberlinux-swap rd.lvm.lv/swap rhgb quiet
    
  3. Нажмите Ctrl+e, чтобы перейти к концу строки.

  4. Добавьте rd.break в конец строки, которая начинается с linux:

    linux ($root)/vmlinuz-4.18.0-80.e18.x86_64 root=/dev/mapper/sberlinux-root ro crash\
    kernel=auto resume=/dev/mapper/sberlinux-swap rd.lvm.lv/swap rhgb quiet rd.break
    
  5. Нажмите Ctrl+x для запуска системы с измененными параметрами. В switch_root появится подсказка.

  6. Перемонтируйте файловую систему как доступную для записи:

    mount -o remount,rw /sysroot
    

    Файловая система в каталоге монтируется как доступная только для чтения /sysroot. Переустановка файловой системы как доступной для записи позволяет изменить пароль.

  7. Войдите в среду chroot:

    chroot /sysroot
    

    Появится подсказка sh-4.4#.

  8. Сбросьте пароль пользователя с административными полномочиями:

    passwd
    
  9. Следуйте инструкциям, отображаемым в командной строке, чтобы завершить смену пароля.

  10. Включите процесс повторной маркировки SELinux при следующей загрузке системы:

    touch /.autorelabel
    
  11. Выйдите из chroot окружения:

    exit
    
  12. Выйдите из командной строки switch_root:

    exit
    
  13. Дождитесь завершения процесса повторной маркировки SELinux. Обратите внимание, что повторная маркировка большого диска может занять много времени. По завершении процесса система автоматически перезагружается.

Для проверки сброса пароля пользователя с административными полномочиями при загрузке выполните следующие шаги:

  1. Войдите в систему как обычный пользователь и откройте терминал.

  2. Запустите интерактивную оболочку от имени пользователя с административными полномочиями:

    su
    
  3. Введите свой новый пароль пользователя с административными полномочиями.

  4. Выведите имя пользователя, связанное с текущим действующим идентификатором пользователя:

    whoami
    

Пример вывода команды:

root

Управление правами доступа к файлам#

Права доступа к файлам определяют способность учетных записей пользователей и групп просматривать, изменять, получать доступ и выполнять содержимое файлов и каталогов.

Каждый файл или каталог имеет три уровня владения:

  • пользователь-владелец (u);

  • владелец группы (g);

  • другие (o).

Каждому уровню владения могут быть назначены следующие разрешения:

  • чтение (r);

  • запись (w);

  • выполнение (x).

Обратите внимание, что разрешение на выполнение для файла позволяет выполнить этот файл. Разрешение на выполнение для каталога позволяет получить доступ к содержимому каталога, но не выполнить его.

Когда создается новый файл или каталог, ему автоматически назначается набор разрешений по умолчанию. Разрешения по умолчанию для файла или каталога зависят от двух факторов:

  • Базовое разрешение.

  • Маска режима создания пользовательского файла (umask).

Базовые права доступа к файлам#

Права доступа представлены в таблице ниже.

Права доступа#

Разрешение

Символьное значение

Восьмеричное значение

Отсутствие разрешения

---

0

Выполнение

--x

1

Запись

-w-

2

Запись и выполнение

-wx

3

Чтение

r--

4

Чтение и выполнение

r-x

5

Чтение и запись

rw-

6

Чтение, запись, выполнение

rwx

7

Базовым разрешением для каталога является 777 (drwxrwxrwx), которое предоставляет всем разрешения на чтение, запись и выполнение. Это означает, что владелец каталога, группа и другие пользователи могут просматривать содержимое каталога, создавать, удалять и редактировать элементы внутри каталога, а также переходить в него.

Обратите внимание, что отдельные файлы в каталоге могут иметь свои собственные разрешения, которые могут помешать редактировать их, несмотря на неограниченный доступ к каталогу.

Базовым разрешением для файла является 666 (-rw-rw-rw-), оно предоставляет всем права на чтение и запись. Это означает, что владелец файла, группа и другие пользователи могут читать и редактировать файл.

Пример разрешения файла:

ls -l
-rwxrw----. 1 sysadmins sysadmins 2 Mar 2 08:43 file

Где:

  • - (одинарное тире) указывает, что это файл;

  • rwx указывает, что владелец файла имеет разрешения на чтение, запись и выполнение файла;

  • rw- указывает, что группа имеет разрешения на чтение и запись, но не на выполнение файла;

  • --- указывает, что другие пользователи не имеют прав на чтение, запись или выполнение файла;

  • . (точка) указывает, что для файла задан контекст безопасности SELinux.

Пример разрешения каталога:

ls -dl directory
drwxr-----. 1 sysadmins sysadmins 2 Mar 2 08:43 directory

Где:

  • d указывает, что это каталог.

  • rwx указывает, что владелец каталога имеет разрешения на чтение, запись и доступ к содержимому каталога.

    Владельцу каталога может перечислять элементы (файлы, подкаталоги) внутри каталога, получать доступ к содержимому этих элементов и изменять их.

  • r-- указывает, что группа имеет разрешения на чтение, но не на запись или доступ к содержимому каталога.

    Член группы, которой принадлежит каталог, может перечислить элементы внутри каталога. Без получения доступа к информации об элементах в каталоге или возможности их изменить.

  • --- указывает, что другие пользователи не имеют прав на чтение, запись или доступ к содержимому каталога.

    Лицо, не являющееся владельцем пользователя или группы каталога, не может перечислять элементы в каталоге, получать доступ к информации об этих элементах или изменять их.

  • . (точка) указывает, что для каталога установлен контекст безопасности SELinux.

Примечание

Базовое разрешение, которое автоматически назначается файлу или каталогу, и не является разрешением по умолчанию в конце файла или каталога. Когда создается файл или каталог, базовое разрешение изменяется с помощью umask. Комбинация базового разрешения и umask создает разрешение по умолчанию для файлов и каталогов.

Маска пользовательского режима создания файлов#

Маска режима создания пользовательского файла (umask) - переменная, управляющая тем, как устанавливаются права доступа к файлам для вновь созданных файлов и каталогов. umask автоматически удаляет разрешения из базового значения разрешений, чтобы повысить общую безопасность системы. Маска создания файла (umask) может быть установлена с использованием восьмеричной или символической записи.

umask для обычного пользователя это 0002. Значение по умолчанию umask для пользователя с административными полномочиями (например, root) - 0022.

Первая цифра в umask представляет специальные разрешения (sticky bit). Последние три цифры umask представляют разрешения, которые удалены у пользователя-владельца (u), владелец группы (g), и другие (o) соответственно.

Права доступа к файлам по умолчанию#

Числа по умолчанию устанавливаются автоматически для всех вновь создаваемых файлов и каталогов. Значение разрешений по умолчанию определяется путем применения umask к базовому разрешению.

Значение разрешений для файлов#

Числовое обозначение

Символьное обозначение

Описание

400

-r--------

Владелец файла может только читать файл. Для всех остальных все действия с файлом запрещены

644

-rw-r--r--

Все пользователи могут читать файл. Владелец может изменять файл

660

-rw-rw----

Владелец и группа могут читать и изменять файл. Для всех остальных все действия с файлом запрещены

664

-rw-rw-r--

Все могут читать файл. Владелец и группа могут изменять

666

-rw-rw-rw-

Все могут читать и изменять файл

700

-rwx------

Владелец может читать, изменять и запускать файл. Для всех остальных все действия с файлом запрещены

744

-rwxr--r--

Все могут читать файл. Владелец может также изменять и запускать файл

755

-rwxr-xr-x

Все могут читать и запускать файл. Владелец может также изменять файл

777

-rwxrwxrwx

Все пользователи могут читать, изменять и записывать файл

Когда пользователь без административных полномочий создает новый каталог, для umask устанавливается значение 002 (rwxrwxr-x), а для базовых разрешений созданного каталога устанавливается значение 777 (rwxrwxrwx). Каталог получает разрешения по умолчанию и для 775(drwxrwxr-x). Полученные в результате этого разрешения представлены в таблице ниже.

Значение разрешений для каталогов#

Параметр

Символьное значение

Восьмеричное значение

Базовое разрешение

rwxrwxrwx

777

umask

rwxrwxr-x

002

Разрешение по умолчанию

rwxrwxr-x

775

Это означает, что владелец каталога и группа могут перечислять содержимое каталога, создавать, удалять и редактировать элементы внутри каталога, а также переходить в него. Все остальные пользователи могут только перечислить содержимое каталога и перейти в него.

По соображениям безопасности обычные файлы не могут иметь разрешение на выполнение по умолчанию, даже если для umask установлено значение 000(rwxrwxrwx). Однако каталоги могут быть созданы с разрешениями на выполнение.

Изменение прав доступа к файлам с использованием символьных значений#

Используйте утилиту chmod (подробнее в разделе «База знаний» → «Утилита chmod») с символьными значениями (комбинация букв и знаков), чтобы изменить права доступа для файла или каталога.

Доступны следующие разрешения:

  • чтение (r);

  • запись (w);

  • выполнение (x).

Разрешения могут быть назначены следующим уровням владения:

  • пользователь-владелец (u);

  • владелец группы (g);

  • другое (o);

  • все (а).

Чтобы добавить или удалить разрешения, используйте следующие знаки:

  • + (знак плюс) - чтобы добавить разрешения поверх существующих разрешений;

  • - (знак минус) - чтобы удалить разрешения из существующего разрешения;

  • = (знак равно) - чтобы удалить существующие разрешения и явно определить новые.

Чтобы изменить разрешения для файла или каталога, используйте:

chmod <level><operation><permission> <file-name>

Где:

  • <level> – категория пользователей, для которой изменяются права;

  • <operation> – тип операции над правами;

  • <permission> – тип доступа;

  • <file-name> – имя файла или каталога.

Например, чтобы предоставить всем права на чтение, запись и выполнение (rwx), используйте команду chmod a=rwx my-script.sh.

Для проверки изменились ли права доступа к файлам с использованием символьных значений, выполните следующие действия.

  1. Чтобы просмотреть разрешения для определенного файла, используйте:

    ls -l <file-name>
    

    Где <file-name> – имя файла.

  2. Чтобы просмотреть разрешения для определенного каталога, введите:

    ls -dl <directory-name>
    

    Где <directory-name> – имя каталога.

  3. Чтобы просмотреть разрешения для всех файлов в определенном каталоге, выполните команду:

    ls -l <directory-name>
    

Изменение разрешений для файлов и каталогов#

Чтобы изменить права доступа к файлам my-file.txt от -rw-rw-r-- до -rw------, выполните следующий сценарий:

  1. Отобразите текущие разрешения для my-file.txt:

    ls -l my-file.txt
    -rw-rw-r--. 1 username username 0 Feb 24 17:56 my-file.txt
    
  2. Удалите разрешения на чтение, запись и выполнение (rwx) файла у владельца группы (g) и других пользователей (o):

    chmod перейти= my-file.txt
    

    Обратите внимание, что любое разрешение, которое не указано после знака равенства (=), автоматически запрещается.

  3. Убедитесь, что разрешения для my-file.txt были установлены правильно:

    ls -l my-file.txt
    -rw-------. 1 username username 0 Feb 24 17:56 my-file.txt
    

Чтобы изменить права доступа к файлам my-directory от drwxrwx--- до drwxrwxr-x, используйте:

  1. Отобразите текущие разрешения для my-directory:

    ls -dl my-directory
    drwxrwx---. 2 username username 4096 Feb 24 18:12 my-directory
    
  2. Добавьте доступ на чтение и выполнение для всех пользователей:

    chmod o+rx my-directory
    
  3. Убедитесь, что разрешения для my-directory и его содержимое были установлены правильно:

    ls -dl my-directory
    drwxrwxr-x. 2 username username 4096 Feb 24 18:12 my-directory
    

Изменение прав доступа к файлам с помощью восьмеричных значений#

Используйте утилиту chmod с восьмеричными значениями (числами) для изменения прав доступа к файлам для файла или каталога.

Чтобы изменить права доступа к файлам для существующего файла или каталога, введите:

chmod <octal_value> <file-name>

Где:

  • <file-name> – имя файла или каталога;

  • <octal_value> – восьмеричное значение.

Управление umask#

Используйте утилиту umask для отображения, установки или изменения текущего значения umask или значения по умолчанию (подробнее в разделе «База знаний» → «Утилита umask»).

Используйте umask для отображения текущего значения umask в символьном или восьмеричном режиме:

  1. Чтобы отобразить текущее значение umask в символьном режиме, используйте:

    umask -S
    
  2. Чтобы отобразить текущее значение umask в восьмеричном режиме, используйте:

    umask
    

Примечание

При отображении umask в восьмеричном режиме он отображается в виде четырехзначного числа (0002 или 0022). Первая цифра umask представляет специальный бит (sticky bit, SGID bit, SUID bit). Если первая цифра установлена равной 0, специальный бит не устанавливается.

Отображение umask bash по умолчанию#

Существует несколько оболочек, которые можно использовать, например bash, ksh, zsh и tcsh. Эти оболочки могут вести себя как оболочки для входа в систему или без входа в систему. Можно вызвать оболочку входа в систему, открыв собственный терминал.

Чтобы определить, выполняется ли команда в командной оболочке для входа или без входа, используйте команду echo $0:

  1. Если на выходе команда echo $0 возвращает bash, команда выполняется в оболочке без входа в систему.

    echo $0
    bash
    

    umask для оболочки без входа в систему устанавливается в конфигурационный файл /etc/bashrc.

  2. Если на выходе команда echo $0 возвращает -bash, команда выполняется в оболочке входа в систему.

    echo $0
    -bash
    

    umask для оболочки входа в систему устанавливается в конфигурационный файл etc/profile.

  3. Для отображения значения bash umask по умолчанию для оболочки без входа в систему используйте:

    grep umask /etc/bashrc
    

    Пример вывода команды:

    # By default, we want umask to get set. This sets it for non-login shell.
    umask 002
    umask 022
    
  4. Чтобы отобразить bash umask по умолчанию для оболочки входа в систему, используйте:

    grep umask /etc/profile
    

    Пример вывода команды:

    # By default, we want umask to get set. This sets it for login shell
    umask 002
    umask 022
    

Установка umask с использованием символьных значений#

Чтобы установить umask для текущего сеанса командной строки, используйте:

umask -S <level><operation><permission>

Где:

  • <level> – категория пользователей, для которой изменяются права;

  • <operation> – тип операции над правами;

  • <permission> – тип доступа.

Например, чтобы установить значение umask u=rwx, g=rwx, o=rwx, используйте umask -S a=rwx.

Примечание

Действителен только для текущего сеанса командной строки.

Установка umask с использованием восьмеричных значений#

Чтобы установить umask для текущего сеанса командной строки, используйте:

octal_value

Примечание

umask действителен только для текущего сеанса командной строки.

Изменение umask по умолчанию для оболочки без входа в систему#

Измените значение по умолчанию bash umask для пользователей без административных полномочий путем редактирования /etc/bashrc.

  1. Как пользователь с административными полномочиями, откройте файл /etc/bashrc в редакторе.

  2. Измените следующие разделы, чтобы изменить bash umask по умолчанию:

    if [ $UID -gt 199 ] && [ "id -gn" = "id -un" ]; then
    umask 002
    else
    umask 022
    fi
    
  3. Замените восьмеричное значение umask (002) по умолчанию другим восьмеричным значением.

  4. Сохраните изменения и выйдите из редактора.

Изменение umask по умолчанию для оболочки входа в систему#

Измените значение по умолчанию bash umask для пользователя с административными полномочиями, отредактировав /etc/profile.

  1. Как пользователь с административными полномочиями, откройте файл /etc/profile в редакторе.

  2. Измените следующие разделы, чтобы изменить bash umask по умолчанию:

    if [ $UID -gt 199 ] && [ "/usr/bin/id -gn" = "/usr/bin/id -un" ]; then
    umask 002
    else
    umask 022
    fi
    
  3. Замените восьмеричное значение umask (022) по умолчанию другим восьмеричным значением.

  4. Сохраните изменения и выйдите из редактора.

Изменение umask по умолчанию для конкретного пользователя#

Измените umask по умолчанию для конкретного пользователя, отредактировав .bashrc для этого пользователя.

Добавьте строку, указывающую восьмеричное значение umask, в файл .bashrc для конкретного пользователя.

echo 'umask octal_value' >> /home/username/.bashrc

Где:

  • octal_value – восьмеричное значение;

  • username имя пользователя.

Установка разрешений по умолчанию для вновь созданных домашних каталогов#

Измените режимы разрешений для домашних каталогов вновь созданных пользователей путем редактирования файла /etc/login.defs.

  1. Как пользователь с административными полномочиями, откройте файл /etc/login.defs в редакторе.

  2. Измените следующий раздел, чтобы установить новый режим HOME_MODE:

    # HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
    # home directories.
    # If HOME_MODE is not set, the value of UMASK is used to create the mode.
    HOME_MODE 0700
    
  3. Замените восьмеричное значение по умолчанию (0700) другим восьмеричным значением. Выбранный режим будет использоваться для создания разрешений для домашнего каталога.

  4. Если установлен параметр HOME_MODE, сохраните изменения и выйдите из редактора.

  5. Если параметр HOME_MODE не задан, измените UMASK, чтобы установить режим для вновь созданных домашних каталогов:

    # Default initial "umask" value used by login(1) on non-PAM enabled systems.
    # Default "umask" value for pam_umask(8) on PAM enabled systems.
    # UMASK is also used by useradd(8) and newusers(8) to set the mode for new
    # home directories if HOME_MODE is not set.
    # 022 is the default value, but 027, or even 077, could be considered
    # for increased privacy. There is no One True Answer here: each sysadmin
    # must make up their mind.
    
    UMASK 022
    
  6. Замените восьмеричное значение по умолчанию (022) другим восьмеричным значением.

  7. Сохраните изменения и выйдите из редактора.

Управление списком контроля доступа#

У каждого файла и каталога может быть только один пользователь-владелец и один владелец группы одновременно. Если нужно предоставить пользователю разрешения на доступ к определенным файлам или каталогам, которые принадлежат другому пользователю или группе, сохраняя при этом другие файлы и каталоги закрытыми, можно использовать списки управления доступом (ACL).

Отображение текущего списка контроля доступа#

Используйте утилиту getfacl для отображения текущего списка управления доступом (подробнее в разделе «База знаний» → «Утилита getfacl»).

Чтобы отобразить текущий список управления доступом для определенного файла или каталога, введите:

getfacl file-name

Где file-name – имя файла или каталога.

Настройка списка контроля доступа#

Используйте утилиту setfacl для установки ACL для файла или каталога (подробнее в разделе «База знаний» → «Утилита setfacl»).

Чтобы задать список управления доступом для файла или каталога, введите:

setfacl -m u:username: symbolic_valuefile-name

Где:

  • username – имя пользователя;

  • symbolic_value – символическое значение;

  • file-name – имя файла или каталога.

Изменение разрешений для группового проекта#

В следующем примере описывается, как изменить разрешения для файла group-project, принадлежащего пользователю с административными полномочиями root, который состоит в группе root, чтобы этот файл был:

  • Никем не исполняемым.

  • Пользователь mikhail имел бы разрешения rw-.

  • У пользователя arina были бы соответствующие разрешения ---.

  • У других пользователей были бы соответствующие разрешения r--.

setfacl -m u:mikhail:rw- group-project

setfacl -m u:arina:--- group-project

Чтобы убедиться, что у пользователя mikhail есть разрешение rw-, у пользователя arina есть разрешение --- и у других пользователей есть разрешение r--, используйте:

getfacl group-project

Пример вывода команды:

# file: group-project

# owner: root

# group: root user:mikhail:rw- user:arina:--- group::r-- mask::rw- other::r--

FreeIPA#

FreeIPA – это инструмент для создания среды, позволяющей централизованно управлять аутентификацией пользователей, устанавливать политики доступа и аудита.

Основные возможности FreeIPA:

  • Идентификация – управление пользователями и клиентскими узлами с помощью CLI или веб-интерфейса, настройка единого каталога пользователей и групп для всех служб систем и приложений.

  • Аутентификация – проверка аутентификационных токенов (паролей, OTP) пользователей и клиентских узлов с помощью единой службы аутентификации для всех служб систем и приложений.

  • Политики безопасности – возможность определения политик аутентификации и авторизации.

  • Управление службами – возможность организации единого пространства пользователей: каталогов пользователей, точного времени, доменных имен, управления сертификатами и доменом Kerberos.

  • Доверие – возможность настройки доверия с другими системами управления идентификацией.

  • Репликация – возможность масштабирования и повышения отказоустойчивости с помощью репликации и синхронизации данных для всех ее подсистем (каталога пользователей, данных службы точного времени, службы доменных имен, службы управления сертификатами) между отдельными экземплярами FreeIPA.

Сервер FreeIPA#

Системные требования к серверу#

Для установки сервера FreeIPA требуется система без каких-либо пользовательских настроек служб: DNS, Kerberos, Apache и Directory Server. В процессе настройки домена, FreeIPA перезапишет системные файлы и создаст их резервные копии в директории /var/lib/ipa/sysrestore/. После удаления сервера FreeIPA эти файлы будут восстановлены.

Требования к оперативной памяти (RAM):

  • Минимальные:

    • для установки с центром сертификации (CA) – 1,2 ГБ;

    • для тестового или демонстрационного использования – 2 ГБ.

  • Рекомендованные для использования в промышленных средах:

    • для 10 000 пользователей и 100 групп – не менее 4 ГБ RAM и 4 ГБ виртуальной памяти (Swap);

    • для 100 000 пользователей и 50 000 групп – 16 ГБ оперативной памяти и 4 ГБ Swap.

Для DNS необходима правильно настроенная конфигурация, без этого не будут корректно работать инструменты: DNS, Kerberos, SSL.

Внимание

После установки домен DNS изменить будет нельзя.

Так как к конфигурации предъявляются определенные требования, установщик FreeIPA осуществляет следующие проверки:

  1. Имя узла:

    • не должно быть localhost или localhost6;

    • должно быть полным (от имени узла до корня дерева доменных имен, например, company_name.ipa.test).

  2. Обратный адрес должен совпадать с именем узла.

Важно

Не используйте существующие домены, если не являетесь их администратором. Для тестирования рекомендованы зарезервированные имена DNS верхнего уровня, например, test или example.

Список IP-портов, которые использует FreeIPA:

Служба

IP-порт

Протокол

HTTP

80

TCP

HTTPS

443

TCP

LDAP

389

TCP

LDAPS

636

TCP

Kerberos

88, 464

TCP, UDP

DNS

53

TCP, UDP

NTP

123

UDP

Предварительные настройки#

Подготовительные действия:

  1. Задайте серверу полное доменное имя (FQDN), используя команду:

    hostnamectl set-hostname <full-domain-name>
    

    Где <full-domain-name> - полное доменное имя сервера.

    Внимание

    После изменения имени сервера могут перестать работать некоторые приложения. Это можно решить перезагрузкой системы. IP-адрес сервера не должен изменяться.

  2. Настройте в межсетевом экране (firewall) доступ FreeIPA для остальных хостов:

    sudo firewall-cmd --permanent --add-service={http,https,ldap,ldaps,dns,ntp,kerberos}
    
    sudo firewall-cmd --reload
    
  3. Установите пакет:

    dnf install ipa
    

Установка сервера FreeIPA со встроенным DNS и с центром сертификации#

У сервера FreeIPA со встроенным DNS существует ряд преимуществ:

  1. Автоматизация управления и обслуживания записей DNS (например, записи DNS SRV могут создаваться в процессе установки, а потом автоматически обновляться).

  2. Стабильное соединение с интернетом, благодаря настройке глобальных серверов пересылки во время установки FreeIPA. Они также полезны для установления доверительных отношений с Active Directory.

  3. Настройка обратной зоны DNS для предотвращения блокировки электронных писем из используемого домена почтовыми серверами за пределами домена FreeIPA.

Важно

Учтите, что DNS-сервер в составе FreeIPA не подходит для использования в качестве общего DNS-сервера. Некоторые расширенные функции DNS могут быть недоступны.

Интерактивная установка#

Шаги установки:

  1. Запустите установку в интерактивном режиме командой:

    ipa-server-install
    

    Появится вопрос о необходимости настройки DNS-сервера: BIND Do you want to configure integrated DNS (BIND)? [no]: yes. Введите yes.

  2. Задайте имя сервера: Server host name [ipa.example.test]:. Нажмите Enter, чтобы принять значение по умолчанию ([ipa.example.test]) или введите имя.

  3. Задайте доменное имя: Please confirm the domain name [example.test]:. Нажмите Enter, чтобы принять значение по умолчанию ([example.test]) или введите имя.

  4. Задайте имя для пространства Kerberos: Please provide a realm name [EXAMPLE.TEST]:. Нажмите Enter, чтобы принять значение по умолчанию ([EXAMPLE.TEST]) или введите имя.

  5. Задайте пароль для учетной записи Directory Manager (Менеджер каталога): Directory Manager password:. Введите пароль повторно для подтверждения: Password (confirm):.

  6. Задайте пароль для администратора FreeIPA: IPA admin password:. Подтвердите пароль: Password (confirm):.

  7. Настройте DNS-сервер, ответив на следующие вопросы:

    1. Если необходимо настроить перенаправление DNS: Do you want to configure DNS forwarders? [yes]. Введите yes.

    2. Если в настройках сети уже прописаны DNS-серверы, то установщик предложит использовать их: Do you want to configure these servers as DNS forwarders? [yes].

    3. [Необязательно]. Если необходимо использовать внешний сервер DNS, то его IP можно задать ответом на вопрос: Enter an IP address for a DNS forwarder, or press Enter to skip:.

    4. Если необходимо изменить значение для поиска обратных зон (в случае использования внешнего DNS-сервера), задайте его ответом на вопрос: Do you want to search for missing reverse zones? [yes]. В данном сценарии установки рекомендуется оставить значение по умолчанию.

  8. Укажите имя NetBIOS в ответ на запрос NetBIOS domain name [EXAMPLE]:.

  9. [Необязательно]. Укажите NTP-сервер или пул серверов в ответ на вопрос Do you want to configure OPENNTPD with NTP server or pool address? [no]:.

  10. Проверьте информацию о конфигурации, которую выведет система, и подтвердите ее: Continue to configure the system with these values? [no]: yes. Введите yes.

Далее запустится процесс конфигурации, по завершении которого будет выведено сообщение со статусом установки и перечнем дальнейших шагов:

==============================================================================
Setup complete

Next steps:
    1. You must make sure these network ports are open:
        TCP Ports:
          * 80, 443: HTTP/HTTPS
          * 389, 636: LDAP/LDAPS
          * 88, 464: kerberos
          * 53: bind
        UDP Ports:
          * 88, 464: kerberos
          * 53: bind
          * 123: ntp

    2. You can now obtain a kerberos ticket using the command: 'kinit admin'
       This ticket will allow you to use the IPA tools (e.g., ipa user-add)
       and the web user interface.

Be sure to back up the CA certificates stored in /root/cacert.p12
These files are required to create replicas. The password for these
files is the Directory Manager password
The ipa-server-install command was successful
Установка в пакетном режиме#

Установка сервера FreeIPA в пакетном режиме представляет собой запуск скрипта установки с добавлением дополнительных параметров.

Пример:

ipa-server-install -U --hostname="$(hostname)" -r EXAMPLE.TEST -n example.test -p "12345678" -a "12345678" --setup-dns --no-forwarders --no--reverse

В зависимости от выбора установки требуется различный набор параметров.

В примере указаны следующие параметры:

  • -U,--unattended – разрешение установить параметры по умолчанию, без запроса информации, как в интерактивном режиме.

  • --hostname=HOST_NAME — полное DNS-имя сервера, на котором производится установка.

  • -r REALM_NAME, --realm="REALM_NAME – имя Kerberos области для сервера FreeIPA.

  • -n DOMAIN_NAME, --domain="DOMAIN_NAME - доменное имя.

  • -p DM_PASSWORD, --ds-password="DM_PASSWORD – пароль пользователя Directory Manager, который будет использоваться сервером каталогов.

  • -a ADMIN_PASSWORD, --admin-password=ADMIN_PASSWORD – пароль администратора FreeIPA.

Параметры --setup-dns, --no-forwarders и --no--reverse относятся к установке сервера FreeIPA со встроенным DNS и описаны ниже:

  • –setup-dns - параметр, сообщающая скрипту установки, что нужно создать зону DNS, если ее еще нет, и настроить DNS-сервер.

  • –forwarder / --no-forwarders - указание, нужно настраивать серверы пересылки DNS или нет.

  • –auto-reverse / --no-reverse - указание, нужно ли автоматически обнаруживать обратные зоны DNS или нет.

Дополнительные параметры, которые используются при установке сервера FreeIPA со встроенным DNS:

  • –allow-zone-overlap - указание создать зону DNS даже если такое имя уже используется. Это позволяет в любом случае создать зону DNS с указанным именем. Игнорирует возможные ошибки при установке, если имя домена используется где-то еще.

  • –no-dnssec-validation - отключить DNSSEC. Это может потребоваться, если планируется настроить доверительные отношения с Active Directory и настроить сервер пересылки DNS. В этом случае DNSSEC нужно отключить, иначе сервер DNS от FreeIPA будет ждать защищенный ответ от DNS Active Directory.

Примечание

Скрипт установки ipa-server-install создает файл журнала /var/log/ipaserver-install.log. Используйте его для определения проблем при установке, если она завершилась с ошибкой.

Установка сервера FreeIPA без центра сертификации (режим CA-less)#

Установка сервера FreeIPA без центра сертификации (далее – CA) может быть полезна, если по каким-то причинам нельзя установить на FreeIPA службу PKI dogtag. Например, это невозможно в некоторых сертифицированных конфигурациях.

Перечень сертификатов связанных с ними параметров, необходимых для установки сервера FreeIPA без центра сертификации:

  • Сертификат и закрытый ключ LDAP-сервера:

    • --dirsrv-cert-file - для указания сертификата и файлов закрытого ключа;

    • --dirsrv-pin - для указания пароля закрытого ключа.

  • Сертификат и закрытый ключ веб-сервера Apache:

    • --http-cert-file – для указания сертификата и файлов закрытого ключа;

    • --http-pin – для указания пароля к закрытому ключу.

  • Файлы сертификатов для полной цепочки сертификатов CA: --ca-cert-file – для файла или файлов, содержащих сертификат CA, который выдал сертификаты LDAP, Apache Server и Kerberos (KDC).

  • Cертификат и закрытый ключ PKINIT центра распространения ключей Kerberos (KDC):

    • --pkinit-pin – для пароля доступа к закрытому ключу;

    • --pkinit-cert-file – для SSL-сертификата Kerberos (KDC) и закрытого ключа;

    • --no-pkinit – отключить шаги настройки pkinit.

Важно

Без предоставления сертификата PKINIT, ipa-server-install настроит сервер FreeIPA с локальным KDC с самоподписанным сертификатом.

Файлы, предоставленные с помощью параметров --dirsrv-cert-file, --http-cert-file и --ca-cert-file должны содержать полную цепочку сертификатов CA, выдавших сертификаты серверов LDAP и Apache.

Важно

Перед генерацией сертификатов убедитесь, что команда echo $HOSTNAME возвращает полное доменное имя сервера FreeIPA.

Шаги подготовки:

  1. Создайте каталог для сертификатов с помощью команды:

    mkdir ~/test_ca
    
  2. Создайте файл password.txt с паролем к закрытому ключу (длину пароля задайте не менее 8 символов). Для создания файла и записи в него пароля введите:

    echo "<password_value>" > ~/test_ca/password.txt
    

    Где <password_value> - значение пароля для закрытого ключа.

  3. Создайте базу данных NSS (NSS shared database):

    certutil -d ~/test_ca -N -f ~/test_ca/password.txt
    
  4. Создайте noise-файл и заполните его случайными числами:

    head -c20 /dev/random > ~/test_ca/noise.txt
    

    Команда создаст файл со случайными числами noise.txt размером 20 байт.

  5. Выполните экспорт переменной CERT_SERIAL:

    export CERT_SERIAL=1
    
  6. Создайте CA сертификат. Введите команды:

    SKID="0x`openssl rand -hex 20`"
    echo $SKID
    certutil -d ~/test_ca -S -n "CA" -s "CN=Certificate Authority" -x -t CT,,C -1 -2 -5 -m $CERT_SERIAL -v 120 -z ~/test_ca/noise.txt -f ~/test_ca/password.txt --extSKID
    

    Вывод команды echo $SKID потребуется в следующем шаге.

  7. Ответьте на вопросы команды:

    1. Is this a critical extension [y/N]? – введите y;

    2. Is this a CA certificate [y/N]? – введите y;

    3. Enter the path length constraint, enter to skip [<0 for unlimited path] – введите 0, если не требуется ограничение длины пути;

    4. Is this a critical extension [y/N]? - введите y;

    5. Enter value for the key identifier fields,enter to omit: – введите результат команды echo $SKID;

    6. Is this a critical extension [y/N]? - введите n на два последних одинаковых вопроса.

  8. Создайте noise-файл командой, указанной в шаге 4.

  9. Создайте запрос на сертификат:

    • Задайте значение переменной SKID командой:

      SKID="0x`openssl rand -hex 20`"
      
    • Получите хеш с помощью команды:

      echo $SKID
      
    • Создайте запрос на сертификат командой:

      certutil -d ~/test_ca -R -s CN=$HOSTNAME,O=IPA -o /tmp/servercert.req -k rsa -g 2048 -z ~/test_ca/noise.txt -f ~/test_ca/password.txt -a --extSKID
      

    Вывод команды echo $SKID введите в ответ на вопрос Enter value for the key identifier fields,enter to omit:.

  10. Подпишите запрос на сертификат. Введите команду:

    export CERT_SERIAL=$(($CERT_SERIAL + 1))
    certutil -d ~/test_ca -C -c "CA" -i /tmp/servercert.req -o /tmp/servercert.pem -m $CERT_SERIAL -v 120 -f ~/test_ca/password.txt -1 -5 -a
    

В ответ на вопросы Is this a critical extension [y/N]? введите n.

Для экспорта сертификатов в правильные форматы выполните следующие действия:

  1. Импортируйте полученный сертификат командой:

    certutil -d ~/test_ca -A -i /tmp/servercert.pem -n Server-Cert -a -t ,,
    
  2. Введите пароль к закрытому ключу в ответ на вопрос Enter Password or Pin for "NSS Certificate DB":.

  3. Экспортируйте сертификат в формат PKCS#12. Введите команду:

    pk12util -o ~/test_ca/servercert.p12 -n Server-Cert -d ~/test_ca -k ~/test_ca/password.txt -w ~/.export/password.txt
    
  4. Экспортируйте CA сертификат в формат PEM. Введите команду:

    certutil -d ~/test_ca -L -n "CA" -a > ~/test_ca/cacert.pem
    
Установка в режиме CA-less#

Для установки в режиме CA-less выполните следующие шаги:

  1. Установите пароль к закрытому ключу в значение переменной PSWD командой:

    export PSWD=$(cat ~/test_ca/password.txt)
    
  2. Запустите установку в режиме CA-less:

    ipa-server-install \
     --http-cert-file ~/test_ca/servercert.p12 \
     --http-pin $PSWD \
     --dirsrv-cert-file ~/test_ca/servercert.p12 \
     --dirsrv-pin $PSWD \
     --ca-cert-file ~/test_ca/cacert.pem \
     --no-pkinit
    

    На вопрос о необходимости настройки DNS-сервера: BIND Do you want to configure integrated DNS (BIND)? [no]: yes введите yes.

  3. Выполните шаги с 3 по 10, указанные в разделе «Интерактивная установка».

Завершение установки#

После завершения установки выполните следующие действия:

  1. Обновите записи DNS:

    1. Добавьте DNS делегирование из родительского домена в домен FreeIPA.

    2. Добавьте запись службы _ntp._udp для сервера времени в DNS. Пример команды:

      ipa dnsrecord-add <parent_domain> _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=<freeipa_domain>
      

      Где:

      • <parent_domain> - родительский домен;

      • <freeipa_domain> - домен FreeIPA.

  2. Убедитесь, что сервер FreeIPA работает:

    1. Введите команду:

      kinit admin
      
    2. Введите пароль.

    3. Выведите список активных подсистем командой

      klist
      
  3. Проверьте статус подсистем FreeIPA:

    ipactl status
    

Веб-интерфейс FreeIPA будет доступен по адресу https://<full-domain-name>, где <full-domain-name> - полное доменное имя сервера FreeIPA.

Удаление сервера FreeIPA#

Чтобы удалить сервер FreeIPA, выполните следующие шаги:

  1. Если используется встроенный DNS-сервер, убедитесь, что ipabackup.<full-domain-name> не является единственным работающим DNS-сервером в топологии. Проверьте это командой:

    ipa server-role-find --role 'DNS server'
    

    Если ipabackup.<full-domain-name> – единственный работающий DNS-сервер, то добавьте роль DNS-сервера на другой сервер FreeIPA (см man ipa-dns-install (1)).

  2. Если используется встроенный CA:

    1. Убедитесь, что ipabackup.<full-domain-name> не является единственным работающим CA в топологии. Введите команду:

      ipa server-role-find --role 'CA server'
      

      Если ipabackup.<full-domain-name> – единственный работающий CA, то добавьте роль CA сервера на другой сервер FreeIPA (см man ipa-ca-install (1)).

    2. Если были активированы хранилища (enabled vaults), убедитесь, что ipabackup.<full-domain-name> не является единственным работающим сервером KRA (Key Recovery Authority) в топологии. Введите:

      ipa server-role-find --role 'KRA server'
      

      Если ipabackup.<full-domain-name> – единственный работающий сервером KRA, то добавьте роль сервера KRA на другой сервер FreeIPA (см man ipa-kra-install (1)).

    3. Убедитесь, что ipabackup.<full-domain-name> не является сервером обновления CA:

      ipa config-show | grep 'CA renewal'
      

      Если ipabackup.<full-domain-name> – сервер обновления CA, переместите роль сервера обновления CA на другой сервер.

    4. Убедитесь, что ipabackup.<full-domain-name> не является издателем текущего списка отзывов сертификатов (CRL):

      ipa-crlgen-manage status
      

      Если ipabackup.<full-domain-name> – сервер, генерирующий CRL, переместите роль издателя на другой сервер.

  3. Подключитесь к другому серверу в топологии:

    ssh ipa_user@<another_server>
    

    Где <another_server> - полное доменное имя другого сервера.

  4. Получите учетные данные администратора FreeIPA командой:

    kinit admin
    
  5. Удалите сервер ipabackup.<full-domain-name> из топологии командой:

    ipa server-del ipabackup.example.test
    
  6. Вернитесь на ipabackup.<full-domain-name> и удалите FreeIPA командой:

    ipa-server-install --uninstall
    

    На вопрос Are you sure you want to continue with the uninstall procedure? [no]: введите yes.

  7. Убедитесь, что все записи DNS-сервера, указывающие на ipabackup.<full-domain-name>, удалены из зон DNS.

Интерфейс командной строки FreeIPA#

Важно

Перед началом работы убедитесь, что получен билет Kerberos для администратора FreeIPA с помощью команды kinit admin.

Команды, приведенные в разделе, не требуют ввода от имени пользователя с административными полномочиями.

Большинство действий, необходимых для администрирования, можно выполнить с использованием команды ipa.

Для получения перечня доступных команд введите:

ipa help commands

Команды сгруппированы по типу объекта. Например, для объекта automember (правило автоучастия) команды в выводе ipa help commands будут сгруппированы так:

automember-add  Добавить правило автоучастия.
automember-add-condition  Добавить условия в правило автоучастия.
automember-default-group-remove Удалить группу по умолчанию (резервную) для всех несоответствующих записей.

Аналогично для других объектов.

Чтобы получить информацию по конкретному объекту, введите:

ipa help <type_object>

Где <type_object> – название объекта.

Для получения справки по конкретной команду введите:

ipa <command> --help

или:

ipa help <command>

Где <command> – название команды.

Для поиска конкретных типов записей FreeIPA используйте команды ipa *-find. Например, для получения информации обо всех пользователях введите ipa user-find, а для вывода информации по всем группам, в названии или описании которых есть слово adminipa group-find admin.

Для получения перечня всех доступных команд ipa *-find введите:

ipa help commands | grep find

Для получения подробной информации о конкретной записи можно с помощью команд ipa *-show, использование которых строится по аналогии с командами ipa *-find.

Удаление файлов конфигурации неудачной установки сервера FreeIPA#

Если установка сервера FreeIPA закончилась с ошибкой, некоторые файлы конфигурации могут быть уже настроены. Повторная установка не решит эту проблему, так как установщик FreeIPA сообщит, что сервер уже настроен.

Для решения проблемы удалите частичную конфигурацию сервера FreeIPA командой:

ipa-server-install --uninstall

Затем повторите процесс установки.

Отладочную информацию можно посмотреть в следующих файлах журнала системы:

  • /var/log/ipaserver-install.log;

  • /var/log/httpd/error_log;

  • /var/log/dirsrv/slapd-INSTANCE-NAME/access;

  • /var/log/dirsrv/slapd-INSTANCE-NAME/errors.

При установке центра сертификации (CA):

  • /var/log/pki/pki-ca-spawn.$TIME_OF_INSTALLATION.log;

  • journalctl -u pki-tomcatd@pki-tomcat;

  • /var/log/pki/pki-tomcat/ca/debug.$DATE.log;

  • /var/log/pki/pki-tomcat/ca/signedAudit/ca_audit;

  • /var/log/pki/pki-tomcat/ca/system, /var/log/pki/pki-tomcat/ca/transactions, /var/log/pki/pki-tomcat/catalina.$DATE.log.

Если проблема не решится, то переустановите ОС.

Клиент FreeIPA#

Перед настройкой клиента FreeIPA выполните следующие действия:

  1. Задайте имя хоста командой:

    hostnamectl set-hostname <hostname>
    

    Где <hostname> - имя хоста.

  2. Для настройки DNS-сервера создайте файл /etc/net/ifaces/eth0/resolv.conf и запишите туда имя сервера FreeIPA с помощью команды:

    echo "nameserver n.n.n.n" > /etc/net/ifaces/eth0/resolv.conf
    

    Где n.n.n.n – IP адрес сервера FreeIPA.

  3. Настройте службу resolvconf на использование DNS FreeIPA и укажите домен для поиска посредством изменения файла /etc/resolvconf.conf:

    echo "interface_order=lo lo[0-9]*. lo.* <interface>" >> /etc/resolvconf.conf
    
    echo "search_domains=<domain-name>" >> /etc/resolvconf.conf
    

    Где <interface> - интерфейс, на котором доступен сервер FreeIPA, а <domain-name> - домен FreeIPA.

  4. Обновите DNS адреса командой:

    resolvconf -u
    

    Важно

    Если в результате настроек IP-адрес доменного DNS сервера не отображается в файле /etc/resolv.conf, перезагрузите систему.

  5. Установите необходимые пакеты:

    dnf install ipa-client zip
    
  6. Настройте подключение к серверу FreeIPA:

    • Зарегистрируйте систему, настраиваемую как клиент FreeIPA, в домене FreeIPA и настройте разрешения для использования сервисов FreeIPA.

    • Предоставьте учетные данные для установки и регистрации клиента. Доступные методы аутентификации включают привилегированные пользовательские данные (параметр по умолчанию), одноразовый пароль (OTP) и ключ (keytab) из предыдущей регистрации.

Установка клиента FreeIPA в интерактивном режиме#

Для установки клиента FreeIPA в интерактивном режиме выполните следующий сценарий:

  1. Запустите скрипт установки клиента командой:

    ipa-client-install --mkhomedir
    

    Если сервер FreeIPA, на котором будет зарегистрирован клиент, установлен со встроенным DNS или DNS-сервер в сети принимает обновления записей по протоколу GSS-TSIG, можно использовать параметр --enable-dns-updates, чтобы обновить записи DNS с помощью IP-адреса клиентской системы.

  2. Проверьте конфигурацию системы, когда установщик клиента выведет информацию, и подтвердите ее в ответ на вопрос Continue to configure the system with these values? [no]: (введите yes).

  3. Введите имя администратора сервера FreeIPA и его пароль в ответ на запрос установщика.

После настройки клиента, при успешном завершении установки, появится сообщение The ipa-client-install command was successful.

Установка клиента FreeIPA в интерактивном режиме c использованием одноразового пароля#

Для установки клиента в интерактивном режиме c использованием одноразового пароля выполните следующие шаги:

  1. Добавьте будущую клиентскую систему на сервере FreeIPA с помощью команды:

    ipa host-add <client-hostname> --random --ip-address=n.n.n.n
    

    Где <client-hostname> – имя хоста клиента, а n.n.n.n – IP-адрес сервера FreeIPA. Параметр --random используется для создания случайного одноразового пароля.

  2. Запустите ipa-client-install со следующими параметрами:

    ipa-client-install --mkhomedir --password='<password-value>'
    

    Где с помощью параметра --password указан одноразовый случайный пароль (укажите значение пароля в <password-value>).

    Важно

    После регистрации клиента в домене FreeIPA пароль станет недействительным. Он будет заменен таблицей ключей узла.

Установка клиента FreeIPA в пакетном режиме#

Для установки клиента FreeIPA в пакетном режиме необходимо передать установщику информацию, необходимую для настройки, с помощью дополнительных параметров. Минимально необходимая информация: имя и пароль администратора FreeIPA.

Пример запуска установки в пакетном режиме с минимально достаточной информацией для настройки:

ipa-client-install -U -p <freeipa-admin-name> -w <password-value>

Где используются следующие обязательные параметры:

  • -p PRINCIPAL, --principal=PRINCIPAL – имя администратора FreeIPA;

  • -w PASSWORD, --password=PASSWORD – пароль администратора FreeIPA;

  • --unattended, -U – разрешение установить параметры по умолчанию, без запроса информации в интерактивном режиме.

Если записи SRV в зоне DNS FreeIPA установлены правильно, то все остальные требуемые значения скрипт настройки обнаружит автоматически. Если не сможет, то укажите их с помощью дополнительных параметров:

  • --hostname=HOST_NAME – полное доменное имя клиентского хоста;

  • --realm=REALM_NAME – имя области Kerberos для сервера FreeIPA;

  • --domain=DOMAIN_NAME – доменное имя;

  • --server=SERVER – полное доменное имя сервера FreeIPA.

Пример запуска установки в пакетном режиме с дополнительными параметрами:

ipa-client-install -U --password='PASSWORD' --domain example.test --server ipa.example.test --realm EXAMPLE.TEST --mkhomedir

Для получения полного перечня доступных параметров введите:

ipa-client-install --help

Проверка и отладка клиента FreeIPA#

Для проверки того, может ли клиент FreeIPA получать информацию о пользователях, зарегистрированных на сервере FreeIPA, используйте команду:

id admin

Отладочная информация при установке клиента FreeIPA добавляется в файл /var/log/ipaclient-install.log. Для поиска записей, связанных с ошибками установки, необходимо отфильтровать строки с пометкой ScriptError.

Удаление клиента FreeIPA#

Клиент удаляется из домена FreeIPA вместе с конфигурацией системных служб FreeIPA, таких как демон SSSD (System Security Services Daemon).

Для удаления клиента FreeIPA выполните следующие действия:

  1. На клиенте:

    • введите команду:

      ipa-client-install --uninstall
      
    • удалите старые принципалы Kerberos, кроме /etc/krb5.keytab:

      ipa-rmkeytab -k /path/to/keytab -r <freeipa-domain-name>
      

      Где <freeipa-domain-name> – домен FreeIPA.

  2. На сервере:

    • удалите все записи DNS для хоста клиента командой:

      ipa dnsrecord-del
      
    • удалите запись хоста клиента с сервера FreeIPA LDAP с помощью команды:

      ipa host-del <hostname>
      

      Где <hostname> – имя хоста клиента.

Важно

При удалении записи хоста клиента с сервера FreeIPA LDAP также будут удалены все службы и отозваны все сертификаты, выданные для этого хоста.

Репликация в FreeIPA#

Новую реплику в FreeIPA можно установить:

  • на существующем клиенте FreeIPA, который преобразуется в реплику;

  • на машине (узле), которая еще незарегистрирована в домене FreeIPA.

Для установки реплики используется утилита ipa-replica-install.

Важно

Одновременная установка нескольких реплик не поддерживается. Устанавливайте каждую реплику поочередно.

Предварительные условия: для реплики установите те же пакеты, что и при установке сервера (см раздел «Сервер FreeIPA» –> «Предварительные настройки»).

При установке реплики доступны следующие способы авторизации:

  1. Для существующего клиента FreeIPA: включение узла, на котором установлен клиент, в группу ipaservers. Это предоставит узлу привилегии аналогичные учетным данным администратора FreeIPA.

  2. Для незарегистрированной системы: использование учетных данных администратора FreeIPA: перед запуском утилиты ipa-replica-install получите билет Kerberos для администратора FreeIPA командой kinit admin либо передайте имя и пароль администратора утилите с помощью параметров --principal и --admin-password или по запросу в интерактивном режиме.

Установка реплики на существующем клиенте FreeIPA c использованием Host Keytab#

Важно

Перед установкой повысьте клиента FreeIPA до реплики с использованием собственной таблицы Host Keytab. Для этого, перед установкой, создайте обратный адрес для реплики на DNS-сервере сервера FreeIPA. Данный способ авторизации считается более безопасным, так как учетные данные администратора не отображаются в консоли при установке.

Для установки выполните следующие действия:

  1. На любом узле FreeIPA:

    1. Получите билет Kerberos командой:

      kinit admin
      
    2. Добавьте узел клиента (будущей реплики) в группу узлов ipaservers:

      ipa hostgroup-add-member ipaservers --hosts <replica-host-name>
      

      Где <replica-host-name> – имя хоста реплики.

  2. На клиентском узле запустите утилиту установки реплики:

    ipa-replica-install
    

Установка реплики в системе, незарегистрированной в домене FreeIPA#

Перед установкой реплики в незарегистрированной системе настройте узел на использование DNS-сервера, который был сконфигурирован на сервере FreeIPA аналогично настройкам при установке клиента FreeIPA (см. раздел «Предварительные настройки для клиента FreeIPA»).

Установка с использованием случайного пароля#

Примечание

Данный способ авторизации считается более безопасным, так как учетные данные администратора не отображаются в консоли при установке.

Для установки с использованием случайного пароля выполните следующие шаги:

  1. На любом узле FreeIPA:

    1. Получите билет Kerberos командой:

      kinit admin
      
    2. Добавьте новый узел в домен FreeIPA (сгенерированный случайный пароль будет использоваться для последующей установки реплики):

      ipa host-add <hostname> --random --ip-address=<ip-adress>
      

      Где <hostname> и <ip-adress> – имя и IP-адрес незарегистрированной системы.

    3. Добавьте систему в группу узлов ipaservers:

      ipa hostgroup-add-member ipaservers --hosts <hostname>
      

      Где <hostname> – имя незарегистрированной системы.

  2. На реплике запустите утилиту установки реплики, указав сгенерированный пароль в параметре --password:

    ipa-replica-install --password '<password-value>'
    

    Где <password-value> – значение пароля из шага 1.

    Важно

    Пароль часто содержит специальные символы, поэтому следует заключать его в одинарные кавычки.

Если требуется установить реплику с интегрированными DNS и CA, это можно сделать, например, такой командой:

ipa-replica-install --password '<password-value>' --setup-ca --setup-dns --forwarder <ip-adress> --forwarder <ip-adress>

Где <ip-adress> - IP-адреса серверов пересылки DNS.

Установка с использованием учетных данных администратора FreeIPA#

Важно

Перед установкой реплики необходимо убедиться, что при установке сервера FreeIPA, была создана обратная зона DNS и реверсивная запись для основного сервера.

Для установки с использованием учетных данных администратора FreeIPA выполните следующий сценарий:

  1. В обратной зоне создайте реверсивную запись для реплики командой:

    ipa dnsrecord-add <reverse-zone-domane-name> 145 --ptr-rec '<replica-domain-name>'
    

    Где <reverse-zone-domane-name> и <replica-domain-name> – доменные имена обратной зоны и реплики.

  2. На реплике запустите установку командой:

    ipa-replica-install --principal <freeipa-admin-name> --admin-password <password-value>
    

    Где <freeipa-admin-name> и <password-value> – учетные данные администратора FreeIPA (по умолчанию имя администратора admin).

    Если необходимо установить реплику с DNS и CA, введите:

    ipa-replica-install --principal <freeipa-admin-name> --admin-password **12345678** --setup-ca --setup-dns --forwarder <ip-adress> --forwarder <ip-adress>
    

Проверка и отладка реплики#

Для проверки реплики выполните следующие шаги:

  1. Создайте тестового пользователя:

    ipa user-add <username>
    

    Где <username> - имя создаваемого пользователя.

  2. Убедитесь, что пользователь виден на другом узле с помощью команды:

    ipa user-show <username>
    

Если при установке реплики на клиенте с использованием Host Keytab возникают ошибки, связанные с проверкой соединений, то перезапустите службу dbus командой:

systemctl reload dbus

Удаление реплики#

Удаление реплики из топологии кластера производится аналогично удалению сервера администратором FreeIPA. Инструкции приведены в разделе «Удаление сервера FreeIPA».

Журналирование FreeIPA#

Файлы и каталоги журналов сервера, клиента и реплики FreeIPA:

Файл/каталог

Описание

var/log/ipaserver-install.log

Журнал установки сервера FreeIPA

/var/log/ipaclient-install.log

Журнал установки клиента FreeIPA

var/log/ipareplica-install.log

Журнал установки реплики FreeIPA

/var/log/sssd/

Файлы журналов службы SSSD (подробное журналирование можно включить в файле /etc/sssd/sssd.conf или командой sssctl)

/etc/logrotate.d/

Политики ротации файлов журналов для служб DNS, SSSD, Apache, Tomcat и Kerberos

/etc/pki/pki-tomcat/logging.properties

Ссылка на конфигурацию ведения журнала CA (по умолчанию ссылка на файл /usr/share/pki/server/conf/logging.properties)

Файлы и каталоги журналов сервера каталогов (Directory Service):

Файл/каталог

Описание

var/log/dirsrv/slapd-<REALM_NAME>

Журнал, связанный с экземпляром Directory Service, используемым сервером FreeIPA. Основная часть журналируемых данных относится к взаимодействиям сервера и реплики

/var/log/dirsrv/slapd-<REALM_NAME>/audit

Журнал аудита всех операций Directory Service, если аудит включен в конфигурации Directory Service

/var/log/dirsrv/slapd-<REALM_NAME>/access

Журнал, содержащий подробную информацию о попытках доступа к экземпляру Directory Service домена

/var/log/dirsrv/slapd-<REALM_NAME>/errors

Журнал, содержащий подробную информацию о неудачных операциях для экземпляра Directory Service домена

Файлы и каталоги журналов веб-сервера Apache:

Файл/каталог

Описание

/var/log/httpd/

Каталог журналов веб-сервера Apache

/var/log/httpd/access_log

Стандартный журнал доступа веб-сервера Apache. Сообщения, специфичные для FreeIPA, записываются вместе с сообщениями Apache, поскольку веб-интерфейс FreeIPA и интерфейс командной строки используют Apache. В журналах доступа в основном регистрируются только субъект-пользователь и используемый URI, который часто является конечной точкой RPC

/var/log/httpd/error_log

Стандартный журнал ошибок веб-сервера Apache. Журнал ошибок содержит журналы сервера FreeIPA

Файлы и каталоги журналов системы сертификатов FreeIPA:

Файл/каталог

Описание

/var/log/pki/pki-ca-spawn.<time_of_installation.>log

Журнал установки CA FreeIPA

/var/log/pki/pki-kra-spawn.<time_of_installation>.log

Журнал установки центра восстановления ключей FreeIPA (KRA)

/var/log/pki/pki-tomcat/

Каталог верхнего уровня для журналов операций PKI. Содержит журналы CA и KRA

/var/log/pki/pki-tomcat/ca/

Каталог с журналами, связанными с операциями над сертификатами. В FreeIPA эти журналы используются для субъектов-служб, узлов и других объектов, использующих сертификаты

/var/log/pki/pki-tomcat/kra/

Каталог с журналами, относящимися к KRA.

Сообщения об ошибках сертификата также добавляются в системный журнал.

Файлы журналов Kerberos:

Файл/каталог

Описание

/var/log/krb5kdc.log

Основной файл журнала для сервера Kerberos KDC

/var/log/kadmind.log

Основной файл журнала сервера администрирования Kerberos

Расположение этих файлов настраивается в файле /etc/krb5.conf.

Сообщения об ошибках DNS добавляются в системный журнал.