Uma das grandes vantagens do Software Livre é a sua possibilidade de personalização. E, este personalização, muitas vezes, é a que permite criar soluções diferenciadas para cada ambiente/cliente.
Outro dia estava pesquisando sobre isto. Como gerenciar grupos de usuários dentro do squid e por sua vez, como utilizar estes lances em uma acl.
Consegui, em uma dica no site Viva o Linux um modo de fazer isto. Primeiramente, deve-se fazer uma listagem com os usuários e coloque ( de preferência, dentro do diretório /etc/squid ). No meu caso, eu dei o nome de /etc/squid/usuariosdif .
Crie um arquivo ( script ), com o nome usuarios e coloque o seguinte conteúdo no mesmo :
#!/bin/bash
while read linha
do
if [ `grep -i \^$linha /etc/squid/usuariosdif` ]
then
echo OK
else
echo ERR
fi
done
Quem for até o site da dica, vai ver que meu grep está um pouco diferente. O problema era, se você tivesse o nome joaopaulo e o nome joao, no mesmo arquivo, e procurasse por joao, o programa geraria uma exceção porque havia mais de um nome no resultado. Aí, com esta regex, eu consegui fazer buscar o nome, diretamente no início da linha, evitando a possibilidade de haver mais de um resultado para a mesma string.
Após isto, dê permissão de execução ao arquivo :
# chmod 755 /etc/squid/usuarios
E, finalmente, no seu squid.conf, você vai adicionar as seguintes linhas :
external_acl_type usuarios children=20 %LOGIN %SRC /etc/squid/usuarios
acl checar external usuarios
E, pronto, você agora pode criar as acls para controlar seus usuários do modo como você quiser :-)
Na realidade, o que fizemos foi criar um wrapper para dados do squid. Pode ser criado em qualquer linguagem executável no ambiente Linux/Unix. Estou inclusive pensando em desenvolver mais coisas em cima disto.
Mas, isto não faz parte da dica :-)