Pessoal,
Segue abaixo um manual passo-a-passo com os procedimentos necessários para instalar o Curupira no Debian Lenny.
Espero que seja de grande utilidade para a comunidade!
Passos para instalar o Curupira no Debian Lenny
Segundo o manual do Curupira, esse sistema de gerenciamento de impressão tem os seguintes pré-requisitos:
- Instalação e configuração do Sistema Operacional Linux;
- Instalação e configuração do Samba/Winbind
- Instalação e configuração do Open-Ldap
- Instalação do Apache, CUPS/Pykota, PostgreSql e da Interface web desenvolvida na CAIXA.
Como são muitos os sistemas que interagem com o Curupira, tornando o processo de instalação desse software muito complexo, elaboramos esse manual passo-a-passo para auxiliar na instalação do software.
1. Instalar e configurar CUPS
1.1 Instalação
apt-get install cups
1.2 Testar o acesso à interface web
http://ip_servidor:631
Se o acesso não for bem sucedido, deve-se configurar o CUPS para acesso, editando as seguintes linhas do arquivo /etc/cups/cupsd.conf. No meu caso, liberei acesso total:
Listen *:631
<Location />
...
Allow From All
</Location>
............................
<Location /admin>
...
Allow From All
</Location>
1.3 Adicionar impressora no CUPS
1.4 Efetuar teste de impressão
2. Instalar e configurar LDAP
2.1 Instalação
apt-get install slapd ldap-utils
Durante a instalação poderá ser pedido os seguintes dados
DNS domain name: - digitar o domínio da rede e teclar <enter>
Name of your organization: - digitar o nome da organização (ex.: Camara Municipal de Caxias do Sul)
Admin password - digitar a senha do usuário administrador da base LDAP *
Confirm password - Confirmar a senha do usuário administrador da base LDAP *
Database Backend to use – selecionar a opção HDB
Remover a base de dados ao remover o SLAPD? – Escolher a opção SIM
Move Old database – selecionar a opção SIM
Allow LDAPv2 protocol? – selecionar a opção NÃO
Omit OpenLDAP Server Configurate – selecione NÃO.
Caso esses dados não sejam pedidos, executar o comando hostname --fqdn para verificar se o endereço de DNS está correto. Se incorreto, executar o comando dpkg-reconfigure slapd.
2.2 Configurar LDAP para suportar o mapeamento de Usuários.
2.2.1 Instalar documentação do Samba
apt-get install samba-doc
2.2.2 Executar procedimentos de configuração
- No console, executar a seguinte seqüência de comandos: cp -f /usr/share/doc/samba-
doc/examples/LDAP/samba.schema.gz /etc/ldap/schema && gunzip /etc/ldap/schema/samba.schema.gz e teclar <enter>.
- Editar o arquivo de configuração /etc/ldap/slapd.conf e incluir a linha include
/etc/ldap/schema/samba.schema abaixo da linha include /etc/ldap/schema/inetorgperson.shema. -
- Salvar a alteração.
- Criar um arquivo de nome com o conteúdo semelhante abaixo, substituindo o
valor de dc de acordo com a configuração do servidor LDAP da unidade (o exemplo trata do domínio ueba.com.br):
dn: ou=idmap,dc=ueba,dc=com,dc=br
changeType: add
objectClass: organizationalUnit
ou: idmap
- Salvar o arquivo.
- Na tela digitar o seguinte comando:
ldapmodify –x –W –f ldap.ldif –D “cn=admin,dc=ueba,dc=com,dc=br”
Atenção: Deve-se substituir o campo dc pelo correspondente da instalação do LDAP da unidade.
- Informar a senha do administrador do LDAP.
- Digitar o comando invoke-rc.d slapd restart para reiniciar o servidor OpenLdap
3. Instalar e configurar a máquina no domínio
3.1 Instalar e configurar kerberos
apt-get install krb5-config krb5-doc
Será pedido os seguintes dados:
- Realm Kerberos: ueba.com.br
- Servidores Kerberos: teste.ueba.com.br
- Servidor administrativo: teste.ueba.com.br
3.2 Instalar e configurar SAMBA e Winbind
3.2.1 Instalar SAMBA em Winbind
apt-get install samba winbind
3.2.2 Configurar SAMBA para usar o Kerberos e Winbind
# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = UEBA
netbios name = teste2
realm = ueba.com.br
................................
#"security = user" is always a good idea. This will require a Unix account
#in this server for every user accessing the server. See
#/usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
#in the samba-doc package for details.
#security = user
security = ADS
# You may wish to use password encryption. See the section on
# 'encrypt passwords' in the smb.conf(5) manpage before enabling.
encrypt passwords = true
................................
# Some defaults for winbind (make sure you're not using the ranges
# for something else.)
allow trusted domains = no
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
#The following was the default behaviour in sarge,
#but samba upstream reverted the default because it might induce
#performance issues in large organizations.
#See Debian bug #368251 for some of the consequences of *not*
#having this setting and smb.conf(5) for details.
winbind use default domain = yes
winbind enum groups = yes
winbind enum users = yes
winbind nested groups = yes
3.2.3 Configurar arquivo /etc/nsswitch.conf, editando as seguintes linhas
passwd compat winbind
groups compat winbind
shadow compat winbind
3.2.4 Adicionar autenticação winbind ao PAM, para permitir que o acesso do usuário ao console web do Curupira
3.2.4.1 Adicionar a seguinte linha no arquivo /etc/pam.d/common-account:
account sufficient pam_winbind.so
3.2.4.2 Adicionar a seguinte linha no arquivo /etc/pam.d/common-auth:
auth sufficient pam_winbind.so
3.2.5 Reiniciar Winbind e Samba
/etc/init.d/winbind restart
/etc/init.d/samba restart
3.2.6 Verificar se a máquina está autenticando no domínio, através dos seguintes comandos:
wbinfo -t
net rpc testjoin
wbinfo -u
4 Instalar subversion, para baixar os fontes do pykota
apt-get install subversion-tools
5 Baixar, instalar e configurar o Pykota
Uma das dependências do Curupira é o pykota, responsável pela contagem de impressões.
5.1 Resolver dependências
Primeiramente, deve-se resolver as dependências:
apt-get install python-pygresql python-pysqlite2 python-mysqldb python-egenix-mxdatetime python-ldap python-osd python-pysnmp4 python-jaxml python-reportlab python-imaging pkpgcounter python-pam netatalk
5.2 Baixar e instalar pkipplib
Uma das dependências do pykota é o pkipplib, que não está nos repositórios do Debian e faz parte do desenvolvimento do pykota. Para baixá-lo e executá-lo, deve-se executar os seguintes comandos:
svn co http://svn.pykota.com/pkipplib/trunk pkipplib
cd pkipplib
python setup.py install
5.3 Baixar e instalar pykota
Resolvidas as dependências do pykota, agora podemos baixá-lo e instalá-lo:
cd /tmp
svn co http://svn.pykota.com/pykota/trunk pykota
cd pykota
python checkdeps.py
python setup.py install
5.4 Configurar CUPS para usar o Pykota
5.4.1 Copiar backend do Pykota para a pasta de backends do CUPS, e dar permissões de acesso ao Pykota
rm /usr/lib/cups/backend/cupspykota
cp /usr/share/pykota/cupspykota /usr/lib/cups/backend
chmod 755 /usr/lib/cups/backend/*
5.4.2 Adicionar backend cupspykota às impressoras instaladas no CUPS
Deve-se editar o arquivo /etc/cups/printers.conf e substituir a linha
DeviceURI socket://[ip_impressora]
por:
DeviceURI cupspykota://socket://[ip_impressora]
5.5 Copiar arquivos de configuração do Pykota para a pasta /etc/pykota
cp /usr/share/pykota/conf/pykota.conf.sample /etc/pykota/pykota.conf
cp /usr/share/pykota/conf/pykotadmin.conf.sample /etc/pykota/pykotadmin.conf
chown pykota.pykota /etc/pykota/pykota.conf /etc/pykota/pykotadmin.conf
5.6 Reiniciar CUPS
/etc/init.d/cups restart
6 Baixar e instalar as demais dependências do curupira
Instalado o pykota, agora deve-se instalar as demais dependências do Curupira.
6.1 Baixar e instalar o pacote python-module-pysnmp
O pacote python-module-pysnmp não está disponível nos repositórios do Debian Lenny, portanto faz-se necessário que se baixe o referido pacote do Portal do Software Público, instalando-o em seguida através do seguinte comando
dpkg – i python-module-pysnmp_3.4.2-1_all.deb
6.2 Instalar as demais dependências via apt-get
As demais dependências do Curupira estão disponíveis nos repositórios do Debian Lenny, sendo possível instalá-las via apt-get:
apt-get install postgresql-8.3 apache2.2-common apache2 openssl libapache2-mod-
auth-pam php5 php5-ldap libapache2-mod-php5 php5-pgsql php5-gd ldap-utils
python-module-pysnmp sudo samba winbind
7 Conversão dos fontes para instalação no Debian Lenny
A conversão se faz necessária caso sejam utilizados os fontes disponíveis no portal do software público do governo federal. Caso se utilize o pacote .deb personalizado para o Debian Lenny, não são necessários executar os passos 7.1 a 7.5.
7.1 Baixar e descompactar os fontes do portal do Software Público (http://www.softwarepublico.gov.br)
7.2 Modificar arquivo DEBIAN/control
Neste arquivo deve-se modificar as dependências para o uso do postgresql8.3
Package: curupira
Priority: extra
Section: contrib/admin
Installed-Size: 5848
Depends: postgresql-8.3, apache2-common | apache2.2-common, apache2, openssl,
libapache2-mod-auth-pam, php5, php5-ldap, libapache2-mod-php5, php5-pgsql, php5-
gd, ldap-utils, pykota, pkpgcounter, pkipplib, python-module-pysnmp, sudo,
samba, winbind
Conflicts: sigim, apache, apache-common, php4
Maintainer: daniacs@gmail.com
Architecture: all
Version: 1.4.17
Description: Sistema Gerenciador de Impressao (CURUPIRA):
Sistema WEB para gerenciamento de imprecao e gecacao de relatorios.
7.3 Modificar arquivo DEBIAN/postinst
Deve-se modificar os seguintes trechos:
if [ $eh_versao7 -eq 7 ]; then
invoke-rc.d postgresql restart >/dev/null 2>/dev/null
else
invoke-rc.d postgresql-8.3 restart >/dev/null 2>/dev/null
fi
..........................................
function povoa_pykota() {
local pykota_postgres=/usr/share/pykota/postgresql/pykota-postgresql.sql
echo -n "Criando banco de dados do PyKota"
$psql -h $host -U $psql_admin $banco_admin < \
$pykota_postgres &> $logfile
status $?
}
..........................................
if [ $eh_versao7 -eq 7 ]; then
postgres_conf=/etc/postgresql/pg_hba.conf
else
postgres_conf=/etc/postgresql/8.3/main/pg_hba.conf
7.4 Instalar alien, para converter pacote tar.gz em deb
apt-get install alien
7.5 Converter pacote tar.gz em .deb
Após instalado o alien, podemos converter o pacote tar.gz em .deb através do seguinte comando:
alien -d curupira.tar.gz
8 Instalar curupira
Agora podemos instalar o Curupira, a partir do pacote gerado pelo programa alien.
dpkg -i curupira-1.4.17.deb
- Durante a instalação, será pedida uma série de informações, como país, estado, cidade, etc. Deve-se completar todas as informações pedidas.
9 Modificar arquivos do Curupira
Caso se use os fontes disponibilizados no portal, deve-se modificar os seguintes arquivos após a instalação do Curupira:
- /etc/pykota/insere-usuario
- /var/www/curupira/script/busca_info_rede/usrmgr-ng
- /var/www/curupira/script/function_infos.php
9.1 Modificar o arquivo insere_usuario
9.1.1 Modificar as seguitnes variáveis, na função pesquisa_ad() conforme a necessidade:
local server="servidor_AD"
local porta=porta_AD
local dominio="nome_do_domínio_NETBIOS"
local user="usuario_administrador_do_AD"
local pass="senha_do_usuario"
9.1.2 Modificar os parâmetros -b e -D do comando ldapsearch
ldapsearch -w $pass -x -b dc=$dominio,dc=com,dc=br -D
cn=$user,cn=Users,dc=$dominio,dc=com,dc=br -h $server -p $porta
"sAMAccountName=$1" > $tmpfile
9.1.3 Comentar teste de versão do pykota, pois o Pykota tem a versão mais recente e não é necessário o teste
# ATENCAO verifica se eh baseado no pykota 1.25 ou nos anteriores
#versao=$(edpykota -v | sed 's/1\.\([0-9][0-9]\).*/\1/')
#if [ $versao -ge 25 ] ; then
# pykota="novo"
#else
# pykota="velho"
#fi
9.1.4 Modifcar as quotas, e comentar as linhas que verificam se o pykota é novo (as linhas em negrito foram adicionadas para incluir a quota)
quota_padrao="20" #quota padrao para inclusao na base de dados
grupo_padrao="Nivel1" #grupo padrao para inclusao na base de dados
dir_base="/etc/pykota" #diretorio base do script
editor_pykota=`which edpykota` #localizacao do edpykota
.......................................
#TODO: COLOCAR INCLUSAO DE QUOTA!
# executa a inclusao na base de dados do pykota
# caso o usuario ja esteja no bando da update.
if [ ! -z "$teste_id" ]; then
edpykota -a ${usuario}
edpykota --softlimit ${quota} --hardlimit ${quota} ${usuario}
#Só muda o grupo se este foi passado como paramêtro!!!!
if [ -z "$c_grupo" ]; then
# pega o groupid do grupo em questao
group_id=$(echo "select id from groups where groupname='$grupo'" \
| psql -U postgres pykota | egrep "[[:blank:]]+[[:digit:]]+" | \
awk '{ print $1}')
# atualiza a entrada na groupsmembers
echo "update groupsmembers set groupid=${group_id} where userid=$
{teste_id}" \
| psql -U postgres pykota
fi
else
# if [ "$pykota" == "velho" ]; then
# edpykota --add --ingroups $grupo ${usuario}/${email}
# elif [ "$pykota" == "novo" ]; then
pkusers -a ${usuario}/${email}
pkusers -i "${grupo}" ${usuario}
edpykota -a ${usuario}
edpykota --softlimit ${quota} --hardlimit ${quota} ${usuario}
# fi
fi
}
.......................................
# trata os argumentos, no caso de arqumento errado, chama a ajuda()
while getopts "hu:g:q:e:" OPT; do
case "$OPT" in
"h") ajuda;; # exibe a ajuda
"u") usuario=${OPTARG};;
"e") email=${OPTARG};;
"g") grupo=${OPTARG};;
"q") quota=${OPTARG};;
"?") ajuda;;
esac
done
.......................................
# caso nao tenha sido utilizado o parametro que define a quota, assume padrao
if [ -z $quota ]; then
echo "Assumindo quota padrao de ${quota_padrao} paginas por mes."
quota=$quota_padrao
fi
9.2 Modificar o arquivo /var/www/curupira/script/busca_info_rede/usrmgr-ng
9.2.1 Alterar as seguintes variáveis
#Informar nome ou endereço IP do servidor do AD
SERVIDOR=""
# USR=Informe_Login_de_conta_Serviço.
USR=""
# PWS=Informe_senha_do_usuario_anterior
PWS=""
# DOM=Informe_Dominio_NT_da Conta_de_Serviço_Anterior
DOM=""
9.2.2 Comentar o trecho abaixo e modificar os parâmetros -b e -D do comando ldapsearch
#if [ "${DOMINIO}" == "BH_AGENCIALIVRE" ]; then
# if [ "a${PWS}" == "a" ]; then
# ldapsearch -x -b dc=${DOMINIO},dc=livre -D cn=${USR},cn=Users,dc=$
{DOM},dc=livre -h ${SERVIDOR} "sAMAccountName=${USUARIO}" > /tmp/file-$
{USUARIO}.tmp
# else
# ldapsearch -w ${PWS} -x -b dc=${DOMINIO},dc=livre -D cn=$
{USR},cn=Users,dc=${DOM},dc=livre -h ${SERVIDOR} "sAMAccountName=${USUARIO}" > /
tmp/file-${USUARIO}.tmp
# fi;
#else
if [ "a${PWS}" == "a" ]; then
ldapsearch -x -b dc=${DOMINIO},dc=com,dc=br -D cn=${USR},cn=Users,dc=$
{DOM},dc=com,dc=br -h ${SERVIDOR} -p 389 "sAMAccountName=${USUARIO}" >
/tmp/file-${USUARIO}.tmp
else
ldapsearch -w ${PWS} -x -b dc=${DOMINIO},dc=com,dc=br -D cn=$
{USR},cn=Users,dc=${DOM},dc=com,dc=br -h ${SERVIDOR} -p 389 "sAMAccountName=$
{USUARIO}" > /tmp/file-${USUARIO}.tmp
fi;
#fi;
9.3 Modificar o arquivo /var/www/curupira/function_infos.php, no seguinte trecho:
if ( $dominio == ""){
$dominio = "UEBA"; //Informar domínio NETBIOS
}
9.4 Modificar o arquivo pega_info_usuario.php, setando as seguintes variáveis
$ad_server = ""; //IP do servidor AD
$ad_port = 389; //Porta do servidor AD
$dominio = ""; //Domínio NTEBIOS do AD
$user = "cn=Administrator,cn=Users"; //usuário do AD
$pass = ""; //Senha do administrador informado
$base_dn = "dc=ueba,dc=com,dc=br"; //Domínio LDAP
Autor: Samuel Francisco Ferrigo
55 comentários