8.27. Shadow-4.14.5

Пакет Shadow содержит программы для безопасной обработки паролей.

Приблизительное время сборки: 0.1 SBU
Требуемое дисковое пространство: 49 MB

8.27.1. Установка пакета Shadow

[Примечание]

Примечание

Если вы хотите принудительно использовать надежные пароли, обратитесь к инструкции https://mirror.linuxfromscratch.ru/blfs/view/stable-systemd/postlfs/cracklib.html для установки CrackLib перед сборкой. Затем добавьте параметр --with-libcrack в приведенную ниже команду configure.

Отключите установку groups и ее справочных страниц, так как Coreutils предоставляет версию лучше. Кроме того, запретите установку страниц руководств, так как они были установлены в Раздел 8.3, «Man-pages-6.06»:

sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;

Вместо используемого по умолчанию метода crypt, используйте более безопасный метод шифрования паролей YESCRYPT, который также позволяет использовать пароли длиннее 8 символов. Также необходимо изменить устаревшее местоположение для почтовых ящиков пользователей /var/spool/mail, которое Shadow использует по умолчанию, на используемое в настоящее время /var/mail. И удалите /bin и /sbin из PATH, поскольку они являются просто символическими ссылками на их аналоги в /usr.

[Примечание]

Примечание

Если вы по какой-либо причине хотите включить /bin и/или /sbin в PATH, измените PATH в файле .bashrc после сборки LFS.

sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
    -e 's:/var/spool/mail:/var/mail:'                 \
    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                \
    -i etc/login.defs
[Примечание]

Примечание

Если вы решили собрать Shadow с поддержкой Cracklib, выполните эту команду:

sed -i 's:DICTPATH.*:DICTPATH\t/lib/cracklib/pw_dict:' etc/login.defs

Подготовьте Shadow к компиляции:

touch /usr/bin/passwd
./configure --sysconfdir=/etc \
            --disable-static  \
            --with-{b,yes}crypt \
            --without-libbsd    \
            --with-group-name-max-length=32

Значение новых параметров конфигурации:

touch /usr/bin/passwd

Файл /usr/bin/passwd должен существовать, потому что его местоположение жестко задано в некоторых программах; если он не существует, скрипт установки создаст его не в том месте.

--with-{b,yes}crypt

Оболочка расширяет это значение до двух параметров: --with-bcrypt и --with-yescrypt. Они позволяют Shadow использовать алгоритмы Bcrypt и Yescrypt, реализованные в Libxcrypt, для хеширования паролей. Эти алгоритмы более безопасны (в частности, гораздо более устойчивы к атакам с использованием графических процессоров), чем традиционные алгоритмы SHA.

--with-group-name-max-length=32

Максимально допустимая длина имени пользователя составляет 32 символа. Сделайте такую же длину для названия группы.

--without-libbsd

Не используйте функцию readpassphrase из иблиотеки libbsd, которой нет в LFS. Вместо этого используйте внутреннюю копию.

Скомпилируйте пакет:

make

С этим пакетом не поставляется набор тестов.

Установите пакет:

make exec_prefix=/usr install
make -C man install-man

8.27.2. Настройка Shadow

Этот пакет содержит утилиты для добавления, изменения и удаления пользователей и групп; установки и изменения их паролей; и выполнения других задач администрирования. Полное объяснение того, что означает password shadowing, см. в файле doc/HOWTO в дереве распакованных исходных текстов. При использовании Shadow имейте в виду, что программы, которым необходимо проверять пароли (дисплейные менеджеры, FTP-программы, демоны pop3 и т.д.), должны быть совместимы с Shadow. То есть они должны уметь работать с теневыми паролями.

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

pwconv

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

grpconv

Конфигурация Shadow по умолчанию для утилиты useradd имеет несколько особенностей, требующих пояснения. Во-первых, по умолчанию утилита useradd создает пользователя и группу с тем же названием, что и имя пользователя. По умолчанию, идентификатора пользователя (UID) и идентификатора группы (GID) начинаются с 1000. Это означает, что если вы не передадите дополнительные параметры в useradd, каждый пользователь будет членом уникальной группы в системе. Если такое поведение нежелательно, вам нужно передать один из параметров -g или -N в useradd или изменить настройку USERGROUPS_ENAB в файле /etc/login.defs. Смотрите справочную страницу useradd(8) для получения дополнительной информации.

Во-вторых, чтобы изменить параметры по умолчанию, необходимо создать файл /etc/default/useradd и настроить его в соответствии с вашими потребностями. Создайте его:

mkdir -p /etc/default
useradd -D --gid 999

Пояснения к параметрам /etc/default/useradd

GROUP=999

Этот параметр задает начальный номер группы, используемых в файле /etc/group. Значение 999 берется из приведенного выше параметра --gid. Вы можете установить любое значение. Обратите внимание, что useradd никогда не будет повторно использовать UID или GID. Если номер, указанный в этом параметре, уже используется будет выбран следующий доступный номер. Также обратите внимание, что если в вашей системе нет группы с идентификатором, равным этому номеру, при первом использовании useradd без параметра -g — вы получите следующее сообщение об ошибке: useradd: unknown GID 999, даже если учетная запись была создана правильно. Поэтому мы создали группу users с этим идентификатором в Раздел 7.6, «Создание основных файлов и символических ссылок».

CREATE_MAIL_SPOOL=yes

Этот параметр заставит утилиту useradd создавать файл почтового ящика для каждого нового пользователя. useradd сделает этот файл принадлежащим группе mail с правами доступа 0660. Если вы предпочитаете, не создавать эти файлы, выполните следующую команду:

sed -i '/MAIL/s/yes/no/' /etc/default/useradd

8.27.3. Установка пароля пользователя root

Придумайте пароль для root и установите командой:

passwd root

8.27.4. Содержимое пакета Shadow

Установленные программы: chage, chfn, chgpasswd, chpasswd, chsh, expiry, faillog, getsubids, gpasswd, groupadd, groupdel, groupmems, groupmod, grpck, grpconv, grpunconv, login, logoutd, newgidmap, newgrp, newuidmap, newusers, nologin, passwd, pwck, pwconv, pwunconv, sg (ссылка на newgrp), su, useradd, userdel, usermod, vigr (ссылка на vipw) и vipw
Установленные библиотеки: libsubid.so
Созданные каталоги: /etc/default и /usr/include/shadow

Краткое описание

chage

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

chfn

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

chgpasswd

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

chpasswd

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

chsh

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

expiry

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

faillog

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

getsubids

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

gpasswd

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

groupadd

Создает группу с указанным именем

groupdel

Удаляет группу с указанным именем

groupmems

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

groupmod

Используется для изменения имени группы или GID

grpck

Проверяет целостность файлов групп /etc/group и /etc/gshadow

grpconv

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

grpunconv

Обновляет /etc/group из /etc/gshadow, а затем удаляет последний

login

Используется системой для того, чтобы пользователь мог войти в систему

logoutd

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

newgidmap

Используется для сопоставления gid пространства имен пользователя

newgrp

Используется для изменения GID во время сеанса входа в систему

newuidmap

Используется для сопоставления uid пространства имен пользователя

newusers

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

nologin

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

passwd

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

pwck

Проверяет целостность файлов паролей /etc/passwd и /etc/shadow

pwconv

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

pwunconv

Обновляет /etc/passwd из /etc/shadow а затем удаляет последний

sg

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

su

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

useradd

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

userdel

Удаляет учетную запись указанного пользователя

usermod

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

vigr

Редактирует файлы /etc/group или /etc/gshadow

vipw

Редактирует файлы /etc/passwd или /etc/shadow

libsubid

библиотека для обработки подчиненных диапазонов идентификаторов пользователей и групп