Conteúdo
Uma lista dos arquivos instalados, juntamente com as descrições curtas deles, pode ser encontrada em ../../../../lfs/view/11.3/chapter08/shadow.html#contents-shadow.
O Shadow foi realmente instalado no LFS e não existe razão para reinstalá-lo, a menos que você tenha instalado o CrackLib ou o Linux-PAM depois que seu sistema LFS foi concluído. Se você tiver instalado CrackLib depois do LFS, então reinstalar o Shadow habilitará o suporte a senha forte. Se você tiver instalado o Linux-PAM, [então] reinstalar o Shadow permitirá que aplicativos como login e su utilizem o PAM.
Esse pacote é conhecido por construir e funcionar adequadamente usando uma plataforma LFS 11.3.
Transferência (HTTP): https://github.com/shadow-maint/shadow/releases/download/4.13/shadow-4.13.tar.xz
Soma de verificação MD5 da transferência: b1ab01b5462ddcf43588374d57bec123
Tamanho da transferência: 1,7 MB
Espaço em disco estimado exigido: 45 MB
Tempo de construção estimado: 0,2 UPC
Linux-PAM-1.5.2 ou CrackLib-2.9.8
Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/shadow
          Os comandos de instalação mostrados abaixo são para instalações onde o Linux-PAM tenha sido instalado e o Shadow esteja sendo reinstalado para suportar a instalação do Linux-PAM.
            Se você estiver reinstalando Shadow para fornecer suporte de senha forte
            usando a biblioteca CrackLib sem
            usar Linux-PAM, [então]
            certifique-se de adicionar o parâmetro --with-libcrack ao script
            configure abaixo e
            também emita o seguinte comando:
          
sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs
Reinstale Shadow executando os seguintes comandos:
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 / /'   {} \; &&
sed -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
    -e 's@#\(SHA_CRYPT_..._ROUNDS 5000\)@\100@'       \
    -e 's@/var/spool/mail@/var/mail@'                 \
    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                \
    -i etc/login.defs                                 &&
./configure --sysconfdir=/etc               \
            --disable-static                \
            --with-group-name-max-length=32 &&
make
        Esse pacote não vem com uma suíte de teste.
          Agora, como o(a) usuário(a) root:
        
make exec_prefix=/usr install
          As páginas de manual foram instaladas no LFS, mas se a reinstalação
          for desejada, execute (como o(a) usuário(a) root):
        
make -C man install-man
sed -i 's/groups$(EXEEXT) //' src/Makefile.in: Esse sed é usado para suprimir a instalação do aplicativo groups, pois a versão originária do pacote Coreutils instalado durante o LFS é a preferida.
find man -name Makefile.in -exec ... {} \;: O primeiro comando é usado para suprimir a instalação das páginas de manual do groups, de modo que as existentes instaladas a partir do pacote Coreutils não sejam substituídas. Os outros dois comandos impedem a instalação de páginas de manual que já estão instaladas pelo Man-pages no LFS.
          sed -e 's@#ENCRYPT_METHOD
          DES@ENCRYPT_METHOD SHA512@' -e 's@#\(SHA_CRYPT_..._ROUNDS
          5000\)@\100@' -e 's@/var/spool/mail@/var/mail@' -e
          '/PATH=/{s@/sbin:@@;s@/bin:@@}' -i etc/login.defs:
          Em vez de usar o método padrão 'DES ', esse comando modifica a
          instalação para usar o método mais seguro 'SHA512' de hash de
          senhas, que também permite senhas maiores que oito caracteres. O
          número de rodadas também é aumentado para evitar ataques de senha
          de força bruta. O comando também muda o local obsoleto /var/spool/mail para caixas de correio de
          usuário(a) que Shadow usa por
          padrão para o local /var/mail. Ele
          também muda o caminho padrão para estar consistente com aquele
          configurado no LFS.
        
          --with-group-name-max-length=32: O
          nome máximo de usuário(a) é de trinta e dois (32) caracteres. Torne
          o nome máximo do grupo o mesmo.
        
          O restante desta página é dedicado à configurar o Shadow para funcionar adequadamente com o Linux-PAM. Se você não tiver o Linux-PAM instalado e reinstalou o Shadow para suportar senhas fortes por meio da biblioteca CrackLib, [então] nenhuma configuração adicional é necessária.
            /etc/pam.d/* ou, alternativamente,
            /etc/pam.conf, /etc/login.defs e /etc/security/*
          
Configurar seu sistema para usar Linux-PAM pode ser uma tarefa complexa. A informação abaixo fornecerá uma configuração básica, de modo que a funcionalidade de login e senha do Shadow funcione efetivamente com o Linux-PAM. Revise a informação e os links na página Linux-PAM-1.5.2 para informação adicional de configuração. Para informação específica relativa a integrar o Shadow, Linux-PAM e o libpwquality, você pode visitar o seguinte link:
              O aplicativo login atualmente realiza
              muitas funções que os módulos Linux-PAM agora deveriam manusear. O
              seguinte comando sed comentará as linhas
              apropriadas em /etc/login.defs e
              impedirá login de
              realizar essas funções (um arquivo de cópia de segurança
              chamado /etc/login.defs.orig
              também é criado para preservar o conteúdo do arquivo original).
              Emita os seguintes comandos como o(a) usuário(a) root:
            
install -v -m644 /etc/login.defs /etc/login.defs.orig &&
for FUNCTION in FAIL_DELAY              \
                FAILLOG_ENAB             \
                LASTLOG_ENAB             \
                MAIL_CHECK_ENAB          \
                OBSCURE_CHECKS_ENAB      \
                PORTTIME_CHECKS_ENAB     \
                QUOTAS_ENAB              \
                CONSOLE MOTD_FILE        \
                FTMP_FILE NOLOGINS_FILE  \
                ENV_HZ PASS_MIN_LEN      \
                SU_WHEEL_ONLY            \
                CRACKLIB_DICTPATH        \
                PASS_CHANGE_TRIES        \
                PASS_ALWAYS_WARN         \
                CHFN_AUTH ENCRYPT_METHOD \
                ENVIRON_FILE
do
    sed -i "s/^${FUNCTION}/# &/" /etc/login.defs
done
          
              Conforme mencionado anteriormente nas instruções do
              Linux-PAM, o Linux-PAM tem dois métodos suportados para
              configuração. Os comandos abaixo assumem que você tenha
              escolhido usar uma configuração baseada em diretório, onde cada
              aplicativo tem o próprio arquivo de configuração dele. Você
              pode opcionalmente usar um arquivo de configuração /etc/pam.conf usando o texto oriundo dos
              arquivos abaixo e fornecendo o nome do aplicativo como um
              primeiro campo adicional para cada linha.
            
              Como o(a) usuário(a) root, crie
              os seguintes arquivos de configuração do Linux-PAM no diretório /etc/pam.d/ (ou adicione o conteúdo ao
              arquivo /etc/pam.conf) usando os
              seguintes comandos:
            
cat > /etc/pam.d/login << "EOF"
# Início /etc/pam.d/login
# Configura atraso de falha antes do próximo prompt para 3 segundos
auth      optional    pam_faildelay.so  delay=3000000
# Verifica se o(a) usuário(a) tem permissão para se logar
auth      requisite   pam_nologin.so
# Verifica para assegurar que o(a) root tem permissão para se logar.
# Desabilitado por padrão. Você precisará criar o arquivo /etc/securetty
# para que este módulo funcione. Veja-se man 5 securetty.
#auth      required    pam_securetty.so
# Associações adicionais de grupo - desabilitadas por padrão
#auth      optional    pam_group.so
# Inclui configurações de autenticação do sistema
auth      include     system-auth
# Verifica acesso para o(a) usuário(a)
account   required    pam_access.so
# Inclui configurações de conta do sistema
account   include     system-account
# Configura variáveis padrão de ambiente para o(a) usuário(a)
session   required    pam_env.so
# Configura limites de recursos para o(a) usuário(a)
session   required    pam_limits.so
# Exibe data do login mais recente - Desabilitado por padrão
#session   optional    pam_lastlog.so
# Exibe a mensagem do dia - Desabilitado por padrão
#session   optional    pam_motd.so
# Verifica mensagens eletrônicas para o(a) usuário(a) - Desabilitado por padrão
#session   optional    pam_mail.so      standard quiet
# inclui configurações da sessão e senha do sistema
session   include     system-session
password  include     system-password
# Fim /etc/pam.d/login
EOF
          cat > /etc/pam.d/passwd << "EOF"
# Início /etc/pam.d/passwd
password  include     system-password
# Fim /etc/pam.d/passwd
EOF
          cat > /etc/pam.d/su << "EOF"
# Início /etc/pam.d/su
# Sempre permitir root
auth      sufficient  pam_rootok.so
# Permite que usuários(as) do grupo wheel executem su sem uma senha
# Desabilitado por padrão
#auth      sufficient  pam_wheel.so trust use_uid
# Inclui configurações de autenticação do sistema
auth      include     system-auth
# Limita su a usuários(as) no grupo wheel
# Desabilitado por padrão
#auth      required    pam_wheel.so use_uid
# Inclui configurações de conta do sistema
account   include     system-account
# Configura variáveis padrão de ambiente para o(a) usuário(a) do serviço
session   required    pam_env.so
# Inclui configurações de sessão do sistema
session   include     system-session
# Fim /etc/pam.d/su
EOF
          cat > /etc/pam.d/chpasswd << "EOF"
# Início /etc/pam.d/chpasswd
# Sempre permitir root
auth      sufficient  pam_rootok.so
# Inclui configurações do sistema de autenticação e de conta
auth      include     system-auth
account   include     system-account
password  include     system-password
# Fim /etc/pam.d/chpasswd
EOF
sed -e s/chpasswd/newusers/ /etc/pam.d/chpasswd >/etc/pam.d/newusers
          cat > /etc/pam.d/chage << "EOF"
# Início /etc/pam.d/chage
# Sempre permitir root
auth      sufficient  pam_rootok.so
# Inclui configurações do sistema de autenticação e de conta
auth      include     system-auth
account   include     system-account
# Fim /etc/pam.d/chage
EOF
          for PROGRAM in chfn chgpasswd chsh groupadd groupdel \
              groupmems groupmod useradd userdel usermod
do
    install -v -m644 /etc/pam.d/chage /etc/pam.d/${PROGRAM}
    sed -i "s/chage/$PROGRAM/" /etc/pam.d/${PROGRAM}
done
            
              
                Neste ponto, você deveria fazer um teste simples para ver se
                o Shadow está funcionando
                conforme o esperado. Abra outro terminal e se logue como
                root e, em seguida, execute
                login e se
                logue como outro(a) usuário(a). Se não vir nenhum erro, então
                está tudo bem e você deveria prosseguir com o restante da
                configuração. Se você recebeu erros, [então] pare agora e
                verifique duplamente os arquivos de configuração acima
                manualmente. Qualquer erro é o sinal de um erro no
                procedimento acima. Você também pode executar a suíte de
                teste proveniente do pacote Linux-PAM para ajudá-lo(a) a determinar
                o problema. Se não conseguir localizar e corrigir o erro,
                [então] você deveria recompilar o Shadow adicionando a chave --without-libpam ao comando configure nas instruções
                acima (também mova o arquivo de cópia de segurança
                /etc/login.defs.orig para
                /etc/login.defs). Se falhar em
                fazer isso e os erros persistirem, [então] você não
                conseguirá se logar no seu sistema.
              
              Em vez de usar o arquivo /etc/login.access para controlar o acesso ao
              sistema, o Linux-PAM usa o
              módulo pam_access.so juntamente
              com o arquivo /etc/security/access.conf. Renomeie o arquivo
              /etc/login.access usando o
              seguinte comando:
            
if [ -f /etc/login.access ]; then mv -v /etc/login.access{,.SEMUSO}; fi
          
              Em vez de usar o arquivo /etc/limits para limitar o uso dos recursos
              do sistema, o Linux-PAM usa o
              módulo pam_limits.so junto com o
              arquivo /etc/security/limits.conf. Renomeie o arquivo
              /etc/limits usando o seguinte
              comando:
            
if [ -f /etc/limits ]; then mv -v /etc/limits{,.SEMUSO}; fi
            
              Certifique-se de testar os recursos de login do sistema antes de se deslogar. Erros na configuração podem causar um bloqueio permanente exigindo uma inicialização a partir de uma fonte externa para corrigir o problema.
Uma lista dos arquivos instalados, juntamente com as descrições curtas deles, pode ser encontrada em ../../../../lfs/view/11.3/chapter08/shadow.html#contents-shadow.