DokuWiki

It's better when it's simple

Ferramentas do usuário

Ferramentas do site


pt-br:acl

Listas de controle de acesso (ACL)s

DokuWiki - como a maioria dos wikis - é muito aberta por padrão. Todo mundo tem permissão para criar, editar e excluir páginas. No entanto, por vezes, faz sentido para restringir o acesso a certas ou todas as páginas. Isto é, quando o Access Control List (ACL) entra em jogo. Esta página dá uma visão geral de como ACLs trabalhar em DokuWiki e como eles são configurados.

Configuração e instalação

ACLs podem ser habilitadas no instalador e uma política inicial ACL é definida lá também. Para habilitar manualmente ACLs, habilite a opção useacl e crie uma cópia dos arquivos de exemplo conf/acl.auth.php.dist e conf/users.auth.php.dist. Renomeie os arquivos para conf/acl.auth.php e conf/users.auth.php, respectivamente.

Veja também

Existem mais algumas opções de configuração e recursos que se relacionam com a autenticação, registro do usuário e ACL configuração. Por favor, verifique suas respectivas páginas wiki para obter mais informações:

:!: AVISO: do DokuWiki ACL recurso foi incluída por algum tempo e deve ser bastante estável. No entanto, se você está preocupado com o risco de usuários não autorizados acessam informações no seu wiki, você nunca deve colocá-lo em um computador acessível a partir da Internet.

Restrições de acesso

Restrições de acesso podem ser atribuídas a páginas e namespaces. Há sete permissões: nenhum, ler, editar, criar, enviar, excluir e administrador. As permissões superiores incluem as inferiores, com leitura sendo a mais inferior e excluir a mais alta. Permissões para criar, enviar e excluir aplicam-se apenas a namespaces e não às páginas.

Regras que foram atribuídas para namespaces aplicam-se a arquivos de mídias do namespaces, bem como para namespaces de página.

Quando o DokuWiki verifica os direitos que deve atribuir a um usuário, ele usa todas as regras correspondentes ao nome do usuário ou os grupos que ele ou ela pertence e a regra que define a permissão do usuário é escolhida de acordo com o seguinte processo:

  • Regras que correspondem mais perto do namespace da página são preferidas sobre as regras que correspondem mais longe - nós chamamos isso de “correspondência específica”.
  • Quando mais de uma regra corresponde ao mesmo nível, é preferível a regra que dá o maior nível de acesso.

Os usuários estão nos grupos que foram atribuídos no gerenciador de usuários (ou o servidor de autenticação). No entanto, existem dois grupos que são um pouco especiais:

  • @ALL - Todos, mesmo os usuários não autenticados, são membros do grupo 'ALL'. Você pode usar este grupo para restringir o acesso para todos os usuários (como uma configuração padrão) e depois relaxar as permissões para alguns usuários selecionados.
  • @user - Todos os utilizadores auto registrados são, por padrão, automaticamente um membro do grupo 'user'. Use isso para dar permissões a usuários autenticados. O nome deste grupo é configurado através da opção config:defaultgroup. Ao contrário do grupo virtual 'ALL', o grupo 'user' é um grupo verdadeiro ao qual todos os usuários são adicionados automaticamente ao utilizar o mecanismo de autenticação simples. Se você usar um backend diferente, você precisa usar os grupos fornecidos por este mecanismo. Os grupos são representados internamente e na Administração da ACL por um prefixo @ para o nome do grupo.

Editando ACLs

Para adicionar ou alterar regras de acesso, você deve usar a Administração de ACL que está disponível a partir do menu “Administrar”. Faça login como superusuário, clique em “Administrar” e escolha “Administração da Lista de Controles de Acesso”. Uma descrição detalhada da sua interface pode ser encontrada aqui.

Basicamente, existem três passos para adicionar uma nova regra de ACL:

  1. selecione o namespace ou página para restringir a partir da árvore de navegação superior esquerdo
  2. escolha a quem a regra de ACL deve ser aplicada
    1. selecionando um grupo conhecido ou usuário no menu suspenso
    2. ou selecionando “Usuário:” ou “Grupo:” e digitando o nome do grupo ou usuário no campo de texto
  3. definir a permissão adequada

As regras existentes podem ser alteradas ou apagadas na tabela na parte inferior da Administração da ACL.

Exemplos de ACLs

Nesta seção vamos explicar como as regras de acesso funcionar, usando um exemplo de configuração que se parece com isso na Administração da ACL:

Vamos dar uma olhada em cada linha:

  1. Isso define a permissão para todos no espaço de nomes principal, permitindo que todos possam editar e criar páginas. No entanto enviar não é permitido.
  2. É atribuído permissões totais ao usuário bigboss.
  3. Agora, o acesso para o namespace desen é restrito. Ninguém está autorizado a fazer qualquer coisa.
  4. Bem, isso não é realmente verdade - atribuímos aos membros do grupo devel direitos completos aqui.
  5. E, claro, o usuário bigboss é permitido, também, e ele é o único que pode apagar arquivos enviados.
  6. E o grupo de marketing pode ler tudo no namespace devel, mas apenas ler.
  7. No entanto, o grupo devel não quer que seu patrão veja a página funstuff - lembre-se: “correspondências específicas” substituem permissões de namespace.
  8. E, finalmente, o grupo marketing está autorizado a editar a página devel:marketing também.
  9. Em seguida, as permissões para o namespace marketing são definidos. Todos os membros do grupo marketing tem permissão para enviar lá - outros usuários correspondem a linha #1 para que eles ainda podem criar e editar. O usuário bigboss herda seus direitos de linha #2 para que ele possa enviar e apagar arquivos.
  10. A última linha, finalmente, restringe a página inicial como somente-leitura para todos. Somente os superusuários poderão editar essa página.

Vamos dar uma olhada em um segundo exemplo para entender melhor a correspondência específica:

Desta vez, nós olhamos as regras que irá corresponder para diferentes usuários ao tentar acessar a página private:bobspage.

  1. Abby, um usuário regular
    1. três regras correspondem: #1, #2, #4
    2. regra #4 é a mais próxima, ela corresponde ao nível de namespace por isso tem precedência sobre as outras três regras anteriores
    3. nível de permissões de Abby é None (Nenhum)
  2. bob, um usuário regular
    1. quatro regras correspondem: #1, #2, #4, #6
    2. regra #6 é aplicada devido a sua correspondência exata
    3. nível de permissão de Bob é Delete (Excluir)
  3. bob se esquece de fazer o login e tenta acessar a sua página
    1. duas regras correspondem: #1 & #4
    2. regra #4 está mais perto, Bob ganha nível de permissão None (Nenhum) enquanto não está logado
  4. charlie, um membro do grupo staff
    1. cinco regras correspondem: #1, #2, #3, #4, #5
    2. duas regras correspondem ao nível de namespace, a regra #5 atribui a charlie o maior nível de permissão em relação as outras regras então ela é escolhida - o nível de permissão de Charlie é Delete (Excluir)

Note que a regra #5 parece duplicar a regra #3. Sem a regra #5, os membros do grupo staff não seriam capaz de acessar o namespace private porque o comportamento da regra #4 seria mantê-los fora.

Informações avançadas

Restrições de acesso são salvas em um arquivo chamado conf/acl.auth.php, o que deve possuir permissões de escrita pelo servidor web se você quiser usar a interface de Administração da ACL descrita acima. Não é recomendado para editar este arquivo manualmente. Use a interface de administração em seu lugar.

Linhas vazias e comentários no estilo shell (#) são ignorados. Cada linha contém 3 campos separados por espaço em branco:

  • O recurso a restringir. Este pode ser um nome de página ou de um namespace. Namespaces são marcados por um asterisco adicional (veja exemplos abaixo).
  • Um nome de grupo ou usuário. Nomes de grupos são marcados por um prefixo @.
  • Um nível de permissão (ver abaixo).

Há 7 níveis de permissão representados por um número inteiro. Níveis superiores incluem os inferiores (se você pode editar, você pode ler também). No entanto, a administração de permissão 255 não pode ser usada no arquivo conf/acl.auth.php. Ela só é usada internamente por correspondência contra a opção superuser.

Nome Nível aplica-se a Permissão constante do DokuWiki
none 0 páginas, namespaces nenhuma permissão-bloqueio total AUTH_NONE
read 1 páginas, namespaces permissão de leitura AUTH_READ
edit 2 páginas, namespaces páginas existentes podem ser editadas AUTH_EDIT
create 4 namespaces novas páginas podem ser criadas AUTH_CREATE
upload 8 namespaces arquivos de mídia podem ser enviados AUTH_UPLOAD
delete 16 namespaces arquivos de mídia podem ser sobrescritos ou excluídos AUTH_DELETE
admin 255 plugins de administração superusuário1) pode alterar as configurações de administrador AUTH_ADMIN

Aqui está um exemplo de configuração correspondente ao Exemplo 1 dado acima:

*                     @ALL        4
*                     bigboss    16
devel:*               @ALL        0
devel:*               @devel      8
devel:*               bigboss    16
devel:*               @marketing  1
devel:funstuff        bigboss     0
devel:marketing       @marketing  2
marketing:*           @marketing  8
start                 @ALL        1

Por favor note que a ordem não importa no arquivo. O arquivo é analisado como um todo, em seguida, uma correspondência para a combinação de página/usuário atual é procurada. Quando for encontrada uma correspondência mais adequada, a verificação é abortada. Se nenhuma correspondência for encontrada, permissões de grupo para a página atual são verificadas. Se nenhuma correspondência for encontrada, a verificação continua no próximo namespace superior.

:!: Nota: Para configurar os usuários ou grupos com caracteres especiais (como espaços em branco), você precisa escapá-los com caracteres especiais em HTML. Isso só se aplica a caracteres especiais no intervalo abaixo de 128 bytes. O arquivo ACL usa codificação UTF-8 então multibytechars podem ser escritos como são.

:!: Nota: Quando se utiliza $conf['authtype'] = 'ad'; e nomes de grupo com espaços necessitam ser escritos no arquivo conf/acl.auth.php substituindo os espaços com um “%5f”, em vez de “%20”. Isso ocorre porque os nomes de grupo com espaços são convertidos pela primeira vez em sublinhados “_”, que são “%5F”.

:!: Nota: A permissão excluir afeta apenas arquivos de mídia. As páginas podem ser excluídas (e restauradas) por todos com pelo menos permissão de editar. Alguém que tem permissões de enviar, mas não permissões de excluir, não pode sobrescrever arquivos de mídia existentes.

Wildcards de usuário

É possível usar curingas (wildcards) de usuário e de grupo nas ACLs. Isto pode ser útil para wikis com muitos usuários registados, se você quiser dar a cada usuário ou grupo um espaço de nomes pessoal onde só ele/ela tem acesso de gravação, e você não quiser editar as ACLs para cada um deles. Para conseguir isso %USER% é substituído pelo nome de usuário do usuário conectado no momento e %GROUP% por todos os grupos deste usuário.

No exemplo, um usuário conectado ganha permissões totais (enviar/excluir) para o namespace de usuário user:<username>:* e revogar todo o acesso a outros namespaces localizados no namespace user:*.

Nesse caso, o usuário autenticado tem acesso apenas ao próprio namespace e não tem acesso aos namespaces de usuários (nem mesmo exibe os nomes de namespaces) de outros usuários.

#
# Conceder acesso total ao namespace do usuário conectado
user:%USER%:*          %USER%  16
#
# Permitir navegar no próprio namespace através do índice
user:                  %USER%  1
#
# Permitir acesso somente-leitura para a página inicial localizada no namespace "user"
user:start             %USER%  1
#
# Desativar todos os acessos aos namespaces dos usuários não sejam de propriedade do usuário conectado
# (inclui a visualização de namespaces por meio do índice)
user:*                 @user   0
#
# Permitir que os membros do grupo 'group' editem páginas no namespace 'group'
%GROUP%:*               %GROUP% 2

:!: Nota: a versão 2009-12-25c “Lemming” tem alguma ressalva. Se você adicionar, atualizar ou remover entradas ACL através da interface de administração, o DokuWiki irá substituir %USER% no segundo campo do ACL para %25USER%25 (este é o bug bug FS #1955). Para evitar isso, altere permissões apenas manualmente (editando o arquivo conf/acl.auth.php) ou altere o arquivo manualmente após cada operação na interface de administração, pois %25USER%25 não funciona como esperado, somente %USER% deve ser utilizado em conf/acl.auth.php. Este bug foi corrigido nas versões mais recentes.

:!: Nota: O curinga mudou de @ para % em Dezembro de 2008 - se você estiver atualizando de uma versão mais antiga você precisa ajustar a sua configuração de ACL de acordo.

pt-br/acl.txt · Última modificação: 2023-12-02 17:48 por nerun

Exceto onde for informado ao contrário, o conteúdo neste wiki está sob a seguinte licença: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki