AUTHSELECT-PROFILES(5)

NAME
authselect-profiles - como estender os perfis do authselect.

DESCRIÇÃO

Este manual explica como os perfis do authselect são organizados e como criar novos perfis.

DIRETORIAS DE PERFIL

Os perfis podem ser encontrados em uma das três diretorias.

"/usr/share/authselect/default"
    Directório só de leitura que contem os perfis fornecidos juntamente com o authselect.

"/usr/share/authselect/vendor"
    Directório só de leitura para perfis específicos do fornecedor que podem sobrepor aqueles do directório default.

"/etc/authselect/custom"
    Lugar para os perfis definidos pelo administrador.

FICHEIROS DE PERFIL

Cada perfil consiste de um ou mais destes ficheiros que fornecem uma descrição obrigatória do perfil e descreve as alterações que são feitas ao sistema.

LEIA-ME
    Descrição do perfil. A primeira linha tem de ser um nome do perfil.

system-auth
    Pilha do PAM que é incluída em quase todos os ficheiros de configuração de serviço individuais.

password-auth, smartcard-auth, fingerprint-auth
    Estas pilhas do PAM servem para aplicações que lidam com autenticação a partir de diferentes tipos de dispositivos via correndo em simultâneo conversações individuais em vez de uma conversação agregada.

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

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

dconf-db
    Alterações à base de dados dconf. O principal caso de utilização deste ficheiro é definir alterações para o ecrã de inicio de sessão do gnome de modo a activar ou desactivar a autenticação por smartcard e impressão digital.

dconf-locks
    Este ficheiro define trancas em valores definidos na base de dados dconf.

  LINHAS CONDICIONAIS

Cada uma destas linhas serve como modelo. Um modelo é um ficheiro de texto simples com utilização opcional de vários operadores que pode ser usado para fornecer algum perfil opcional.

{continue if "feature"}
    Pára imediatamente o processamento do ficheiro a menos que "feature" esteja definida (o resto do conteúdo do ficheiro será removido). Se "feature" estiver definida, a linha inteira com este operador será removida e o resto do modelo será processado.

{stop if "feature"}
    O oposto de "continue if". Imediatamente pára o processamento do ficheiro se "feature" estiver definida (o resto do conteúdo do ficheiro será removido). Se "feature" não estiver definida, a linha inteira com este operador será removida e o resto do modelo será processado.

{include if "feature"}
    Inclui a linha onde este operador está colocado apenas se "feature" estiver definida.

{exclude if "feature"}
    O oposto de "include-if". Inclui a linha onde este operador está colocado apenas se "feature" não estiver definida.

{imply "implied-feature" if "feature"}
    Activa a funcionalidade "implied-feature" se a funcionalidade "feature" estiver activa. A linha inteira com este operador é removida, assim não é possível adicionar mais nada perto deste operador na mesma linha.

{if "feature":true|false}
    Se "feature" estiver definida, substitui este operador pela string "true", caso contrário pela string "false".

{if "feature":true}
    Se "feature" estiver definida, substitui este operador pela string "true", caso contrário por uma string vazia.

É também possível usar uma expressão lógica em linha condicional em vez de especificar um nome de funcionalidade única. Neste caso a expressão será avaliada para verdadeiro ou falso e o operador condicional irá atuar conforme o resultado.

A sintaxe da expressão consiste em nomes de funcionalidade (ex. "feature") que retorna true se a funcionalidade estiver definida ou false se não estiver definida e dos seguintes operadores lógicos: and, or a not. A expressão pode também estar dentro de parênteses e conter várias sub-expressões.

Por exemplo:

{if "feature1" or "feature2":true}
    Se "feature1" ou "feature2" estiverem definidas, substitui este operador pela string "true", caso contrário por uma string vazia.

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

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

{if "feature1" and ("feature2" or "feature3"):true}
    Se "feature1" estiver definida, e uma de "feature2" e "feature3" estiver definida substitui este operador pela string "true", caso contrário por uma string vazia.

  EXEMPLO

Aqui está um exemplo de usar o operador "if". Se a funcionalidade "with-sudo" estiver activa, irá adicionar "sss" à linha 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 ficheiro resultante estará vazio a menos que a funcionalidade "with-smartcard" esteja activa. Se ela estiver activa e também a funcionalidade "with-faillock" estiver activa, irá também activar suporte para pam_faillock.

    {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 expressão lógica. O ficheiro ficará vazio a menos que "with-smartcard" ou "with-smartcard-required" estejam definidos. Isto irá simplificar a chamada do comando authselect select o qual não tem de incluir ambas funcionalidade mas apenas "with-smartcard-required" é necessário.

    {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". Activar a funcionalidade "with-smartcard-required" irá também activar "with-smartcard" para certificar que todos os módulos PAM relevantes são usados. Isto vai conseguir o mesmo comportamento que o 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
    ...

CRIAR UM NOVO PERFIL

Para registar um novo perfil dentro do authselect, crie um directório numa das localizações de perfis do authselect com os ficheiros listados em cima. Nem todos os ficheiros têm de estar presentes, apenas o README é obrigatório. OS outros ficheiros podem ser criados em base da necessidade.

Você vai achar o comando authselect create-profile útil ao criar um novo perfil. Veja o manual authselect(8) ou authselect create-profile --help para mais informação.

VEJA TAMBÉM

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