AuthGroupFile - suporte para grupos aninhados?

1

Atualmente, estou usando grupos gerenciados em um arquivo de texto simples para permitir acesso de leitura e gravação a vários recursos:

res1-r: alice bob
res1-w: zak

Este arquivo é usado com a diretiva AuthGroupFile . Com o arquivo de grupos crescendo de forma constante, eu gostaria de estabelecer algum tipo de "subgrupo". Vamos supor que alice e bob sejam membros de uma equipe e que eu gostaria de conceder acesso de leitura a toda a equipe. De fato, eu gostaria de escrever algo como:

ateam: alice bob
res1-r: @ateam

Isso é possível - diretamente ou por meio de alguma solução alternativa?

    
por vwegert 10.07.2013 / 11:04

2 respostas

0

No final, usei o seguinte script perl para realizar o trabalho:

#!/usr/bin/perl 

use strict;
use warnings;

if ($#ARGV != 0) {
    die "Usage: agc <target file>\n";
}

our %groups;

my $dstfilename = "$ARGV[0]";
my $srcfilename = "$ARGV[0].src";
open (SRCFILE, $srcfilename) or die "Could not open $srcfilename.\n";
while (<SRCFILE>) {
    chomp;
    if ($_ =~ /^(.*)\s*:\s*(.*)$/) {
        $groups{$1} = $2;
    }
}
close (SRCFILE);

open (DSTFILE, ">$dstfilename") or die "Could not open $dstfilename.\n";
print DSTFILE "# CAUTION: This file was generated from $srcfilename.\n";
print DSTFILE "# DO NOT EDIT MANUALLY - all changes will be lost upon re-generation.\n";
print DSTFILE "# Instead, edit $srcfilename and run 'agc $dstfilename'.\n";
foreach my $key (sort (keys (%groups))) {
    print DSTFILE "$key:";
    my @elems = split(/\s/, $groups{$key});
    foreach my $elem (@elems) {
        if ($elem =~ /^@(.*)/) {
            print DSTFILE " " . $groups{$1};
        } else {
            print DSTFILE " $elem";
        }
    }
    print DSTFILE "\n";
}
close (DSTFILE);
    
por 10.04.2014 / 16:19
2

Isso é possível? Provavelmente. É uma boa ideia? Não.

Parece que você está tentando reinventar a roda. O Apache suporta uma grande variedade de infra-estruturas de autenticação e, uma vez que parece que a sua organização já tem uma implementação LDAP na forma do Active Directory, eu recomendo que você dê uma olhada em mod_authnz_ldap . A longo prazo, estou disposto a apostar que o tempo necessário para implementar, manter e proteger o seu sistema baseado em arquivos de texto será significativamente maior do que o tempo que leva para trabalhar com sua equipe de serviços de diretório.

    
por 13.07.2013 / 22:28

Tags