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.