Shadow-4.13

Introdução a 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.

Informação do Pacote

Dependências do Shadow

Exigida

Linux-PAM-1.5.2 ou CrackLib-2.9.8

Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/shadow

Instalação do Shadow

[Importante]

Importante

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

Explicações do Comando

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.

Configurando Linux-PAM para Funcionar com Shadow

[Nota]

Nota

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.

Arquivos de Configuração

/etc/pam.d/* ou, alternativamente, /etc/pam.conf, /etc/login.defs e /etc/security/*

Informação de Configuração

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:

Configurando /etc/login.defs

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
Configurando os Arquivos /etc/pam.d/

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:

'login'
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
'passwd'
cat > /etc/pam.d/passwd << "EOF"
# Início /etc/pam.d/passwd

password  include     system-password

# Fim /etc/pam.d/passwd
EOF
'su'
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
'chpasswd' e 'newusers'
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
'chage'
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
Outros utilitários de sombra
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
[Atenção]

Atenção

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.

Configurando Acesso de Login

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
Configurando Limites de Recurso

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
[Cuidado]

Cuidado

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.

Conteúdo

Uma lista dos arquivos instalados, juntamente com as descrições curtas deles, pode ser encontrada em ../../../../lfs/view/11.3-systemd/chapter08/shadow.html#contents-shadow.