4.1
COMPATIBILIDADE
4.1.1
Requisitos de Acesso
4.1.2
Requisitos de Disco
4.2
INSTALAÇÃO
4.2.1
Descompactando o Código Fonte
4.2.2
Caminhos Perl
4.2.3
Ajustando o Diretório de Documentos
4.2.4
Configurações da Ferramenta
4.2.5
Atualização
4.3
SEGURANÇA
4.3.1
Autenticação
4.3.1.1
Baseada em Formulário (Segurança Manual)
4.3.1.2
Baseada em Servidor (Segurança Interna)
4.3.1.3
Baseada em COOKIE (Autenticação Opcional)
4.3.2
Controle de Acesso
A ferramenta HyperNews
funciona com o suporte CGI padrão, fornecido pela maioria dos servidores
http Unix. É conhecido, que a ferramenta funciona com os servidores
NCSA httpd (1.5, ou 1.5.2, mas não 1.5.1), CERN httpd (não
recomendado), Apache, e Netsite.
É utilizado
o mecanismo de segurança interna dos servidores Apache, NCSA, ou
CERN httpd. E este mesmo mecanismo não é sempre utilizado
por outros servidores http, neste caso algumas alterações
deverão ser feitas para que a segurança interna funcione,
ou utilizar-se a “segurança manual” (Seção
4.3.1.1).
Todo o programa é
escrito na linguagem Perl, e requer Perl 5 (LALIBERTE, 1995).
Para instalar a ferramenta,
é necessário ter-se acesso como root no sistema operacional
(Unix), ser um administrador de rede, ou, pelo menos, ter-se o administrador
disponível para fazer algumas configurações no servidor
http. Estas configurações precisarão ser feitas muitas
vezes, até que tudo esteja funcionando da maneira que deseja-se,
e depois disto, a maioria das configurações poderão
ser feitas via HyperNews pela Internet, ao invés de utilizar-se
o shell e arquivos de sistema (LALIBERTE, 1995).
Se o servidor que deseja-se
instalar a ferramenta permite a criação de diretórios
CGI bin, ou a utilização de scripts CGI, então isto
será suficiente para instalá-la.
Para a instalação do código da ferramenta não é necessário mais que 1Mbyte. Mas dependendo da quantidade de fóruns e de mensagens, pode ser necessário muito espaço para armazená-los. Cada mensagem utiliza o espaço próprio (depende do tamanho), mais um arquivo de configuração (urc, aproximadamente 2Kbytes), um diretório, se existirem respostas, uma lista de respostas, e uma lista de endereços de correio-eletrônico dos subscritos. Portanto, deve-se manter um controle sobre as mensagens e fóruns adicionados, para que estes não ultrapassem os limites do disco.
Após ter-se certeza de se possuir os requisitos de compatibilidade para executar a ferramenta e possuir o código, será necessário instalá-la e configurá-la de acordo com as necessidades. É importante lembrar que as informações de instalação contidas neste trabalho, referem-se a versão 1.9.9 da ferramenta, alguns detalhes podem ser diferentes para outras versões da mesma.
4.2.1 Descompactando o Código Fonte
O código pode
ser descompactado em qualquer diretório que permita programas CGI,
já que o código é também o executável
(Perl é um interpretador). Recomenda-se que os scripts sejam colocados
num diretório próprio, para facilitar a manutenção
(Ex.: cgi-bin/HyperNews),
mas outros diretórios também poderão ser usados (LALIBERTE,
1995).
Um exemplo para descompactar,
seria:
cd
.../cgi-bin
gunzip
hypernews.tar.gz
tar
xf hypernews.tar
Será criado o
diretório “cgi-bin/HyperNews###”,
onde “###”
é o numero da versão. Todo o código será descompactado
no diretório “HyperNews###/.scripts”.
É recomendado que troque-se o nome do diretório para apenas
“HyperNews”,
pois muitas URLs internas terão que ser alteradas quando a ferramenta
for atualizada.
Os scripts estarão
todos no subdiretório “HyperNews/.scripts”,
o qual estará invisível. Pode-se conferir se a descompactação
criou uma ligação simbólica de “HyperNews/.scripts/.scripts”
para “/HyperNews/.scripts”.
Pode-se desejar alterar
a maneira que o servidor http está configurado, para evitar que
seja necessário mencionar o prefixo “cgi-bin”
(ou algum outro prefixo) nas URLs.
Por exemplo, segundo
LALIBERTE (1995), para servidores NCSA (e servidores derivados deste, como
o Apache), deve-se adicionar um ScriptAlias ao arquivo “srm.conf”:
ScriptAlias /HyperNews/ <diretório/utilizado>/HyperNews/
Pode ser necessário alterar algumas restrições sobre quais scripts são permitidos no diretório HyperNews. Em versões do servidor Apache (1.1.1) o padrão no arquivo “access.conf” para o diretório “cgi-bin” seria:
Options
None
AllowOverride
None
Seria necessário inserir uma configuração especial para o diretório HyperNews, tal como:
<Directory
<diretório/utilizado>/HyperNews>
AllowOverride
All
Options
FollowSymLinks (Options +FollowSymLinks, para Apache 1.3)
</Directory>
E, então, reinicializar o servidor http para que este utilize as mudanças de configuração.
Antes de executar-se scripts no HyperNews, se o binário Perl não for “/usr/bin/perl”, será necessário executar o script “fixPerlPath” (incluído no diretório “.scripts”) nos arquivos do diretório “/HyperNews/.scripts”. Primeiro deve-se editar o script “fixPerlPath” para alterar a primeira linha com o caminho correto do binário Perl. Então executa-se “make fix” ou “./fixPerlPath *”. Isto apenas alterará os arquivos que precisam ser modificados (LALIBERTE, 1995).
4.2.3 Ajustando o Diretório de Documentos
Será necessário
configurar um diretório, chamado, diretório de documentos
do HyperNews, (nomeado pela variável “$hndocs”
no arquivo de configuração). Recomenda-se que este diretório
permaneça em algum local sob o diretório de documentos raiz
do servidor (normalmente “.../httpd/htdocs”),
embora possa ficar em qualquer lugar. Este diretório irá
conter os arquivos e subdiretórios para os cabeçalhos e “corpos”
(conteúdo), dos fóruns e das mensagens HyperNews. Também
possuirá as informações de segurança para acesso
ao HyperNews.
É importante
mencionar que não deve-se nomear o diretório de documentos
com o mesmo nome do diretório de scripts do HyperNews, por exemplo
“/HyperNews”.
Pois isto poderá confundir o servidor e até o próprio
administrador. Ao mesmo tempo que, provavelmente não se desejará
colocar o diretório de documentos dentro do diretório cgi-bin
do HyperNews. Isto não permitirá acessar-se o diretório
de documentos através do browser, desde que os documentos “parecerão”
para o servidor http, programas cgi-bin a serem executados (LALIBERTE,
1995).
O diretório
de documentos deve ficar sempre aberto para escrita, para o usuário
ou grupo (user:group)
que executa o HyperNews. Se nada estiver modificado o usuário ou
grupo que executa o HyperNews será o mesmo que o do próprio
servidor.
Pode-se desejar restringir
o acesso para leitura no diretório de documentos do HyperNews, então
o servidor permitirá que apenas membros ou administradores HyperNews
possam ler os arquivos diretamente. O processo de configuração
da ferramenta fará isto automaticamente, ao optar-se na leitura
ser apenas para membros.
O diretório
“Icons”
(que contém os ícones) precisa ser acessível via servidor
http, e provavelmente não será restrito (não deseja-se
que os usuários recebam uma caixa de diálogo para autenticação,
para cada ícone acessado), então deve ser colocado em algum
local fora do diretório de documentos “$hndocs”,
se o diretório de documentos estiver com restrição
de leitura.
4.2.4 Configurações da Ferramenta
O processo de configuração
da ferramenta HyperNews criará os diretórios e os links necessários
para os scripts, restrições de acesso, ícones, artigos
e mensagens. Também, será criado um arquivo chamado “hnrc”,
no diretório “HyperNews/Admin”,
que ajusta todas as variáveis que controlam como a ferramenta funciona.
O programa de configuração
da ferramenta pode ser executado de duas maneiras. A primeira é
através da linha de comando: HyperNews/Admin/setup.pl.
A segunda forma, com o browser, será discutida a seguir. É
necessário executar-se o script “setup.pl”
para que este permita, futuramente, que a ferramenta HyperNews (via servidor
http) escreva nos diretórios que foram criados para manterem os
fóruns e as mensagens. Antes de executar o script deve-se digitar
o comando “su”
para o usuário que executa o servidor (LALIBERTE, 1995).
A primeira vez que
executa-se o “setup.pl”,
se o arquivo “hnrc”
não existir, um novo será criado com os valores padrões.
Deve-se editar este arquivo, para ajustar os valores da forma deseja-se
e executar o script “setup.pl”
novamente. Os comentários no arquivo “hnrc”,
provavelmente não serão suficientes para saber-se quais valores
devem ser ajustados. Neste caso, a melhor solução é
utilizar a segunda maneira para configurar a ferramenta, embora algumas
opções de configuração só estejam disponíveis
no arquivo “hnrc” (LALIBERTE, 1995).
A segunda maneira de
configurar a ferramenta HyperNews é através do browser, acessando-se
o seguinte endereço (substituindo o que for necessário para
a instalação adotada):
http://<nome.do.servidor>/HyperNews/.scripts/setup-form.pl/
Se aparecer o código,
ao invés de um documento HTML com o formulário que deveria
ser o resultado da execução do código, será
necessário modificar a configuração do servidor para
que este código seja executado. Uma alternativa é executar
o script “setup-form.cgi”,
este apenas contém um link para o “setup-form-pl”,
mas pode ser usado se o servidor requer que o script termine com “.cgi”.
O formulário
de configuração (setup-form.pl),
é dividido em algumas partes distintas. A primeira parte apenas
explica alguns detalhes de preenchimento, e diz que cada vez que o formulário
é enviado, será procurado um arquivo “hnrc”,
se este não existir um novo será criado, se existir o antigo
recebera a extensão “-old”
e o novo ficará no seu lugar. Se algum erro ocorrer, basta renomear
o arquivo antigo.
A segunda parte chama-se
“HyperNews URLs”, mostra somente um campo, que ajusta o valor da
variável “$http”,
que será usada, entre outras coisas, para gerar a URL dos documentos
e dos scripts, esta conterá o prefixo do servidor, pode ser um valor
fixo como, por exemplo: http://saturno.ucpel.tche.br; ou utilizar-se “http://$ENV{SERVER_NAME}”
para retornar o nome do servidor.
Logo a seguir, uma
outra parte, chamada “HyperNews Documents Directory”, ajusta o Diretório
de Documentos do HyperNews (variável “$hndocs”),
existem dois campos nesta parte, um que ajusta o valor da variável,
que será o caminho completo para o diretório de documentos
(por exemplo, “/home/httpd/htdocs/hndocs”),
e o outro ajustará a variável “$hnRootDoc”,
e deve ser preenchido com uma URL, que o usuário acessará,
quando ele digitar um endereço que não exista mais, ou cometer
um erro de digitação.
Uma terceira parte,
chamada “Formatting Options”, oferece algumas Opções
de Formatação, existem quatro campos nesta parte, os dois
primeiros definem o cabeçalho (variável “$headerText”)
e o rodapé (variável “$footerText”),
estes campos devem ser preenchidos com texto HTML, também pode-se
utilizar uma URL nestes campos, ou um caminho para um arquivo, que será
relativo ao diretório de documentos. O cabeçalho e o
rodapé aparecerão em todos os fóruns e mensagens,
mas podem ser sobrescritos pelo usuário, na criação
do fórum, estes valores serão usados se o usuário
não fornecê-los. O terceiro campo define um rótulo
“<BODY>” (HTML) global, qual será usado nos fóruns, em
que o usuário não definir um rótulo na criação.
E o último campo desta parte define o padrão de “profundidade”
(quantidade de níveis que serão visualizados) para a árvore
de mensagens (os valores podem ser: 1, 2, 3 ou -1 para todos os níveis),
este padrão, também, somente será usado no caso do
usuário não fornecê-lo na criação do
fórum.
A próxima parte
do formulário, chamada “Icons”,
trata dos Ícones da ferramenta, mostra dois campos e uma opção.
O primeiro campo ajusta o caminho do diretório de ícones
do HyperNews (variável “$hnicons”),
um exemplo seria: $hndocs/Icons,
onde “$hndocs”,
é a variável (ajustada anteriormente) que indica o caminho
do diretório de documentos. O outro campo deve fornecer a URL completa
para o mesmo diretório de ícones (por exemplo: $http/hndocs/Icons,
onde “$http”,
é a variável que contém o nome do servidor). Abaixo
existem duas opções, seleciona-se a primeira (Copy Icons
to $hnicons) somente a primeira vez que o script de configuração
for executado, para copiar os ícones (instalar) para o diretório
informado, e marca-se a segunda opção (No, não),
se os ícones já estiverem instalados. É importante
lembrar que, se o diretório de documentos ($hndocs)
estiver com restrição de leitura, os ícones devem
ser colocados em algum local fora deste diretório de documentos.
Outra parte, chamada
“Directory and File Modes”, trata dos Modos de acesso dos Diretórios
e Arquivos, dois campos são mostrados, o primeiro ajusta o modo
para criação de diretórios (variável “$hndirmode”,
por exemplo: 0775), e o segundo campo ajusta o modo para criação
de arquivos (variável “$hnfilemode”,
por exemplo: 0664).
Depois, é mostrada
uma parte, chamada “People and Passwords” (Pessoas e Senhas), existem
vários campos, no primeiro será definida uma lista de administradores
da ferramenta HyperNews (variável “@hnAdmin”),
pode ser apenas um, e o primeiro da lista é mais importante, pois
será mostrado ao usuário, para tirar dúvidas, caso
ocorra algum erro. Os administradores tem acesso a ações
que não são permitidas aos membros, como mudar senhas, e
também, podem apagar qualquer mensagem, entre outras permissões.
Além dos administradores desta lista, com acesso a qualquer dado
HyperNews, cada fórum têm seu próprio administrador
(no caso o autor do fórum), este tem acesso aquilo que envolve o
seu fórum. O próximo campo, ajusta o diretório (variável
“$hnPeople”)
que possui os arquivos com as informações dos membros, um
arquivo para cada membro (incluindo o administrador), o diretório
também conterá um subdiretório para cada grupo. Abaixo
um outro campo, que contém o caminho completo para o arquivo de
senhas (variável “$hnPassword”),
por exemplo: $hnpeople/.htpasswd.
O campo seguinte, é o campo do nome do grupo (variável “$hnGroup”),
este consiste no nome do grupo de membros que tem acesso aos documentos
da instalação atual. Cada instalação da ferramenta
deve ter um grupo diferente de usuários, mas todos podem compartilhar
os mesmos arquivos de informação pessoal e senha. Este campo
deve ser deixado em branco na primeira instalação (chamada
raiz). Em caso de ter-se que preencher o campo, este deve ser preenchido
com um diretório relativo ao diretório com as informações
dos membros.
A parte seguinte do
formulário de configuração, chamada “Security Options”,
mostra algumas Opções de Segurança, a ferramenta HyperNews
utiliza o mecanismo de autenticação dos servidores NCSA httpd,
Apache, e outros. Utilizar este mecanismo de autenticação,
permite ao servidor requisitar autenticação automaticamente,
e o browser mostrar um caixa de diálogo que pede a identificação
de membro e a senha. Tudo isto é realizado, apenas colocando-se
os scripts restritos em um diretório que contenha um arquivo de
restrição de acesso. No início desta parte aparecem
duas opções, a primeira (Use form-based authentication ($manualSecurity))deve
ser marcada no caso do mecanismo de autenticação ser diferente
dos citados, para utilizar “segurança manual”, baseada em formulário,
e a segunda é marcada para utilizar-se o mecanismo de autenticação
do servidor (recomendada). Outras partes, que fazem parte das Opções
de Segurança, são mostradas:
Cada uma destas
partes, oferece quatro opções (Figura 2), a primeira
opção serve para desabilitar a ação correspondente,
a segunda define que qualquer usuário poderá efetuar a ação,
mesmo que este não seja um membro, a terceira define que somente
membros poderão realizar a ação, e a última
opção define que somente administradores HyperNews poderão
realizar a ação correspondente.
Figura 2 - Opções de
Restrição
Após preencher-se
todo o formulário deve-se submetê-lo, pressionando o botão
“Proceeed to Setup HyperNews”, alguns detalhes serão checados, se
tudo estiver correto, muitas coisas serão criadas ou atualizadas.
Por isso, antes de enviar o formulário, deve-se “abrir”, temporariamente,
os diretório cgi HyperNews, “.scripts”,
e “Admin”,
para o servidor poder escrever nestes, assim o servidor poderá criar
os links para os scripts, e adicionar as restrições de acesso
aos diretórios.
Após enviar-se
o formulário, pela primeira vez (ou após executar o script
“setup.pl”
pela segunda vez), serão criados os arquivos de restrição
de acesso, então será necessário autenticar-se com
um dos administradores para acessar o formulário novamente. As senhas
serão fornecidas aleatoriamente aos administradores (enviadas por
correio-eletrônico se possível, e mostradas quando envia-se
o formulário de configuração ou quando executa-se
o script “setup.pl”
através da linha de comando). Esta senha deve ser lembrada, ou não
será possível acessar o formulário de configuração
novamente, neste caso a única solução é apagar
os arquivos de restrição de acesso e a senha (encriptada)
do arquivo de senhas (.htpasswd)
manualmente, e acessar o formulário novamente.
Para utilizar uma nova
versão da ferramenta, recomenda-se que a versão antiga seja
mantida temporariamente, para ter-se certeza de que a nova versão
está funcionando normalmente e da maneira desejada. Para isto deve-se
instalar a nova versão em um diretório diferente (por exemplo:
.../HyperNews1.9.9,
diretório criado quando o arquivo com o código é descompactado),
então configurar esta versão para ser executada usando o
mesmo diretório de documentos e tudo mais. Pode-se desejar copiar
o arquivo de configuração (hnrc)
da versão antiga, sob o arquivo da nova versão antes de executar
o script de configuração, desta forma todas as configurações
da versão antiga aparecerão e pode-se alterar apenas as configurações
desejadas para a nova versão (LALIBERTE, 1995).
Quando tudo estiver
funcionando, como o desejado, na nova versão, será necessário
apenas trocar os nomes dos diretórios (por exemplo: mv
HyperNews HyperNews.old; mv
HyperNews1.9.9 HyperNews). Por
questão de segurança, isto não deve ser feito a qualquer
momento, deve-se ter certeza que nenhum usuário esta utilizando
a ferramenta antes de trocar os nomes, ou para ser mais cuidadoso, “tirar
o servidor do ar” (shut down) temporariamente.
A autenticação
assegura que o usuário é alguém que a ferramenta HyperNews
conhece alguma informação. A ferramenta só conhecerá
informações de membros que tenham sido previamente cadastrados
ao site. Existem várias maneiras diferentes que a autenticação
pode ser feita, algumas dessas maneiras são suportadas pela ferramenta
HyperNews. Geralmente, deve-se checar que cada senha envida por um usuário
encontre uma que o servidor associe com o usuário. Nota-se, que
isto não é suficiente para considerar o usuário autenticado,
pois este pode ter autenticado-se previamente em alguma URL anterior. Então,
cada requisição de URL é independente das outras,
cada script deve ser autenticado novamente (LALIBERTE, 1995).
A ferramenta HyperNews
não armazena senhas descodificadas de membros, para reduzir o risco
de exposição. Ao invés disto, apenas armazena senhas
codificadas, e checa uma senha enviada, codificando-a da mesma forma, e
comparando com as senhas armazenadas.
A seguir serão
mostradas as maneiras que a ferramenta HyperNews pode realizar a autenticação
dos membros.
4.3.1.1 Baseada em Formulário (Segurança Manual)
Com esta maneira de se realizar a autenticação, o usuário digita uma identificação de usuário (UserID) e uma senha em um formulário que é enviado. A identificação e a senha podem ser “escondidas” em um formulário gerado depois de uma autenticação anterior (para evitar a autenticação, novamente, em todos as requisições), então isto não é particularmente seguro, desde que o documento gerado pode ser armazenado temporariamente em algum local e visualizado ou reutilizado (intencionalmente ou não).
4.3.1.2 Baseada em Servidor (Segurança Interna)
O servidor precisa estar
configurado para “saber” sobre as exigências de autenticação.
Isto significa que a ferramenta deve ajustar um arquivo “.htaccess”
ou equivalente. Quando um usuário faz o pedido de uma URL para uma
área restrita, o servidor responde com um código, o qual
significa que o browser deve enviar uma identificação de
usuário e uma senha. Se o browser não conhecer a identificação
e a senha associadas a esta área, ele, normalmente, exibirá
uma caixa de diálogo perguntando ao usuário as informações.
Depois disso, o browser continuará mandando a mesma identificação
e senha para pedidos da mesma área, até que o usuário
“saia” (feche) do browser.
No servidor, os diretórios
são normalmente restritos com um arquivo “.htaccess”.
A ferramenta HyperNews cria um único arquivo “.htaccess”
armazenado no diretório “$hnPeople”
(diretório que contém os arquivos com as informações
sobre membros). Uma ligação simbólica é feita
para este arquivo, dos diretórios “SECURED”,
“Admin”,
e “.scripts”,
e do diretório de documentos ($hndocs),
se todo tipo de leitura for restrito. Na autenticação manual
(baseada em formulários), as ligações para o arquivo
“.htaccess”
são removidas.
O arquivo “.htaccess”
faz referência a um arquivo de senhas, chamado “.htpasswd”
armazenado, também, no diretório “$hnpeople”,
este arquivo de senhas contém uma lista de identificações
de usuários e suas respectivas senhas codificadas.
4.3.1.3 Baseada em COOKIE (Autenticação Opcional)
Uma vez que o usuários
for autenticado através de outro mecanismo, o servidor pode enviar
um cookie de volta ao browser, o qual o browser enviará novamente
para o servidor, cada vez que fizer um pedido para a mesma área.
A ferramenta HyperNews utiliza-se de cookies, se configurada para isto,
e se o usuário permitir, para manter uma forma codificada da senha.
Estes cookies são configurados para serem eliminados no final da
execução do browser.
A identificação
de usuário e a senha fornecidas por um cookie são utilizadas
com a prioridade mais baixa, desde que um browser continuará enviando
cookies mesmo se outro usuário estiver utilizando-o.
O controle de acesso
é diferente da autenticação, a qual apenas checa que
o usuário é alguém que conhece-se alguma informação.
Após saber-se quem é o usuário, pode-se impor um controle
de acesso que restringe quem pode realizar determinadas ações.
Algumas ações podem ser permitidas para todos, e outras apenas
para administradores.
O arquivo “.htaccess”
suportado por vários servidores, pode referenciar uma lista de grupos
de usuários que têm acesso a operações particulares,
mas esta lista de grupos ou a lista de membros nos arquivos de grupo pode
ficar grande o suficiente para ultrapassar o limite dos buffers em alguns
servidores. Por este motivo, apenas diferencia-se três tipos de usuários,
não membros, administradores, e membros que não são
administradores.
A ferramenta identifica
vários tipos de ações e para cada ação,
um nível diferente de controle de acesso pode ser aplicado. Estas
ações são coisas como ler fóruns e mensagens,
escrever mensagens, criar ou editar fóruns, etc. Para cada ação,
a configuração da ferramenta especifica se esta pode ser
realizada por ninguém, apenas por membros, ou apenas por administradores.
Os administradores podem geralmente realizar qualquer ação,
mesmo quando a ação for restrita a “ninguém”. A diferença
da opção “ninguém”, para a opção “somente
administradores”, é que na primeira não existira nenhuma
interface visual (botão, link, etc.) para acessar a ação
restrita.
Indiferentemente da
configuração, a ferramenta aplica um outro tipo de controle
de acesso, baseado na URL usada para acessar um script. Se a URL contém
“/SECURED/”,
então o usuário deve ser um membro, e se contém “/Admin/”
ou “/.scripts/”,
o usuário deve ser um administrador. Com esta restrição
a ferramenta, as vezes, modifica a interface mostrada ao usuário,
para habilitar alguma ação adicional, ou mostrar mais informações.