AUTHSELECT-PROFILES(5)

NAME
authselect-profiles - como estender perfile do authselect.

DESCRIÇÃO

Essa página do manual explica como os perfis do authselect são organizados e como criar novos perfis.

DIRETÓRIOS DE PERFIS

Perfis podem ser encontrados em um de três diretórios.

"/usr/share/authselect/default"
    Diretório somente leitura contendo perfis enviados junto com o authselect.

"/usr/share/authselect/vendor"
    Diretório somente leitura para perfis específicos do fornecedor que podem substituir aqueles no diretório padrão.

"/etc/authselect/custom"
    Local para perfis definidos pelo administrador.

ARQUIVOS DE PERFIL

Cada perfil consiste em um ou mais desses arquivos, que contém uma descrição de perfil mandatória e descreve as mudanças feitas no sistema de arquivos.

README
    Descrição do perfil. A primeira linha deve ser o nome do perfil.

system-auth
    A pilha PAM incluída em quase todos os arquivos de configuração de serviço individuais.

password-auth, smartcard-auth, fingerprint-auth
    Essas pilhas de PAM são para aplicativos que lidam com autenticação de diferentes tipos de dispositivos por meio da execução simultânea de conversas individuais em vez de uma conversa agregada.

postlogin
    O objetivo desta pilha PAM é fornecer um local comum para todos os módulos PAM que devem ser chamados após a pilha configurada em system-auth ou em outros arquivos de configuração PAM comuns. Ela está incluída em todos os arquivos de configuração de serviço individuais que fornecem serviço de login com acesso a shell ou arquivo. NOTA: os módulos no arquivo de configuração postlogin são executados independentemente do sucesso ou falha dos módulos no arquivo de configuração system-auth.

nsswitch.conf
    Arquivo de configuração do Name Service Switch.

dconf-db
    Mudanças no banco de dados dconf. O principal uso deste arquivo é definir alterações na tela de login do GNOME para habilitar ou desabilitar a autenticação por cartão inteligente e impressão digital.

dconf-locks
    Este arquivo define bloqueios em valores definidos no banco de dados dconf.

  LINHAS CONDICIONAIS

Cada um desses arquivos serve como um modelo. Um modelo é um arquivo de texto simples com uso opcional de vários operadores que podem ser usados para fornecer alguns recursos de perfil opcionais.

{continue if "recurso"}
    Interrompe imediatamente o processamento do arquivo, a menos que "recurso" seja definido (o restante do conteúdo do arquivo será removido). Se "recurso" for definido, toda a linha com este operador será removida e o restante do modelo será processado.

{stop if "recurso"}
    Oposto de "continue if". Interrompe imediatamente o processamento do arquivo se "recurso" estiver definido (o restante do conteúdo do arquivo será removido). Se "recurso" não estiver definido, toda a linha com este operador será removida e o restante do modelo será processado.

{include if "recurso"}
    Inclui a linha onde este operador é colocado somente se "recurso" estiver definido.

{exclude if "recurso"}
    Oposto de "include-if". Inclui a linha onde este operador é colocado somente se "recurso" não estiver definido.

{imply "recurso-implícito" if "recurso"}
    Habilite o recurso "recurso-implícito" se o recurso "recurso" estiver habilitado. Toda a linha com este operador é removida, portanto, não é possível adicionar mais nada ao redor deste operador na mesma linha.

{if "recurso":true|false}
    Se "recurso" estiver definido, substitua este operador pela string "true", caso contrário, pela string "false".

{if "recurso":true}
    Se "recurso" estiver definido, substitua este operador pela string "true", caso contrário, por uma string vazia.

Também é possível usar uma expressão lógica na linha condicional em vez de especificar um único nome de recurso. Nesse caso, a expressão será avaliada como verdadeira ou falsa e o operador condicional atuará de acordo com o resultado.

A sintaxe da expressão consiste em nomes de recursos (por exemplo, "recurso") que retornam true se o recurso estiver definido ou false se não estiver definido, e nos seguintes operadores lógicos: and, or e not. A expressão também pode estar entre parênteses e conter várias subexpressões.

Por exemplo:

{if "recurso1" or "recurso2":true}
    Se "recurso1" ou "recurso2" for definido, substitua este operador pela string "true", caso contrário, por uma string vazia.

{if not "recurso":true|false}
    Se "recurso" não estiver definido, substitui este operador pela string "true", caso contrário, pela string "false".

{if not "recurso":true}
    Se "recurso" não estiver definido, substitui este operador pela string "true", caso contrário, por uma string vazia.

{if "recurso1" and ("recurso2" or "recurso3"):true}
    Se "recurso1" for definido, e um de "recurso2" e "recurso3" for definido, substitua este operador pela string "true", caso contrário, por uma string vazia.

  EXEMPLO

Aqui está um exemplo de uso do operador "if". Se o recurso "with-sudo" estiver habilitado, ele adicionará "sss" à linha do sudoers.

    passwd:     sss files
    group:      sss files
    netgroup:   sss files
    automount:  sss files
    services:   sss files
    sudoers:    files {if "with-sudo":sss}

Aqui está um exemplo dos operadores "continue-if" e "include-if". O arquivo resultante estará vazio, a menos que o recurso "with-smartcard" esteja habilitado. Se ele estiver habilitado e o recurso "with-faillock" também estiver habilitado, o suporte para pam_faillock também será habilitado.

    {continue if "with-smartcard"}
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        required                                     pam_faillock.so preauth silent deny=4 unlock_time=1200 {include if "with-faillock"}
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
    auth        sufficient                                   pam_unix.so nullok
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_faillock.so authfail deny=4 unlock_time=1200       {include if "with-faillock"}
    auth        required                                     pam_deny.so
    ...

Aqui está um exemplo de "continue-if" usando uma expressão lógica. O arquivo estará vazio, a menos que "with-smartcard" ou "with-smartcard-required" esteja definido. Isso simplificará a chamada do comando authselect, que não precisa incluir ambos os recursos, mas apenas "with-smartcard-required".

    {continue if "with-smartcard" or "with-smartcard-required"}
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        required                                     pam_faillock.so preauth silent deny=4 unlock_time=1200 {include if "with-faillock"}
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
    auth        sufficient                                   pam_unix.so nullok
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_faillock.so authfail deny=4 unlock_time=1200       {include if "with-faillock"}
    auth        required                                     pam_deny.so
    ...

Aqui está um exemplo do operador "imply-if". Habilitar o recurso "with-smartcard-required" também habilitará "with-smartcard" para garantir que todos os módulos PAM relevantes sejam usados. Isso resultará no mesmo comportamento do exemplo anterior.

    {imply "with-smartcard" if "with-smartcard-required"}
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        [success=1 default=ignore]                   pam_succeed_if.so service notin login:gdm:xdm:kdm:kde:xscreensaver:gnome-screensaver:kscreensaver quiet use_uid {include if "with-smartcard-required"}
    auth        [success=done ignore=ignore default=die]     pam_sss.so require_cert_auth ignore_authinfo_unavail             {include if "with-smartcard-required"}
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so                                                 {exclude if "with-smartcard"}
    auth        [default=2 ignore=ignore success=ok]         pam_localuser.so                                                 {include if "with-smartcard"}
    auth        [success=done authinfo_unavail=ignore user_unknown=ignore ignore=ignore default=die] pam_sss.so try_cert_auth {include if "with-smartcard"}
    auth        sufficient                                   pam_unix.so {if not "without-nullok":nullok}
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_deny.so
    ...

CRIANDO UM NOVO PERFIL

Para registrar um novo perfil no authselect, crie um diretório em um dos locais de perfil do authselect com os arquivos listados acima. Nem todos os arquivos precisam estar presentes, apenas o README é obrigatório. Outros arquivos podem ser criados conforme a necessidade.

Você pode achar o comando authselect create-profile útil ao criar um novo perfil. Consulte a página de manual authselect(8) ou authselect create-profile --help para mais informações.

VEJA TAMBÉM

authselect(8), nsswitch.conf(5), PAM(8)