Pacotes
Atualizar repositorio do yum
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Instalar pacotes do Cups
yum install cups* -y
Instalar pacote do samba
yum install samba samba-common samba-client -y
Instalar pacotes do Kerberos KRB5
yum install krb5-auth-dialog krb5-devel krb5-libs krb5-server krb5-server-ldap krb5-workstation -y
Instalar pacotes do python
Alguns pacotes estao no repositorio do yum, outros tem que buscar na internet.
yum install pkpgcounter python-imaging python-osdv python-reportlab python-libs tix tk tkinter xosd python python-sqlite2 MySQL-python python-psycopg python-psycopg2 python-
pysnmp PyPam netatalk -y
Pacotes do python que nao estao no repositorio do yum.
python-egenix-mxdatetime rpm -Uvh ftp://ftp.pbone.net/mirror/ftp.pramberger.at/systems/linux/contrib/rhel4/archive/i386/python-egenix-mx-base-2.0.6-3.el4.pp.i386.rpm
python-jaxml nao encontrei mas so sera util, se for fazer um dump em xml
Instalar pacote do Servidor Web
yum install httpd* php php-ldap php-pgsql php-gd mod_auth* sudo -y
Instalando o Pykota e Pkipplib via SVN
yum install subversion -y
Instalando pkipplib
cd /tmp
svn co http://svn.pykota.com/pkipplib/trunk pkipplib
cd pkipplib
python setup.py install
Instalando Pykota
cd /tmp
fazer o download do pykota via svn
svn co http://svn.pykota.com/pykota/trunk pykota
cd pykota
python checkdeps.py
Veja s dependencias e as instale se ainda restou alguma depois faça a instalação;
python setup.py install
Instalando o Postgres84
yum install postgresql84* -y
Abaixar o curupira do os repositorios do forum.
wget url
Configurando os serviços
Cups
vim /etc/cups/cupsd.config
Alterar
Listen localhhost:631 para Listen 631
Inserir Allow From All nas seguintes configurações ou configure como desejar.
<Location />
Order allow,deny
Allow From all
</Location>
<Location /admin>
Encryption Required
Order allow,deny
Allow From all
</Location>
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow From all
</Location>
Salve o arquivo de configuração e reincie o cups
service cups restart
Criando ssl para o cups
cd /etc/pki/tls/certs
make cups.key
Coloque uma senha qdo solicitar(guarde esta senha);
Removendo a senha do arquivo
openssl rsa -in cups.key -out cups.key
coloque a senha e tecle enter
make cups.csr
Preencha de acordo com as suas informações;
openssl x509 -in cups.csr -out cups.crt -req -signkey cups.key -days 3650
Adcione as duas linha abaixo no arquivo de configuração do cups;
ServerCertificate /etc/pki/tls/certs/cups.crt
ServerKey /etc/pki/tls/certs/cups.key
Edite o arqvivo mime
vim /etc/cups/mime.convs
Copiar o arquivo do backend pykota para o cups
cp /usr/share/pykota/cupspykota /usr/lib/cups/backend
chmod +x /usr/lib/cups/backend/cupspykota
Descomente a seguinte linha
application/octet-stream application/vnd.cups-raw 0 -
Salve o arquivo de configuração e reincie o cups
service cups restart
Para inserir uma impressora no cups utilize como device URI como informado abaixo;
cupspykota://socket://ip_da_impressora:9100
Configurando o samba
Apagando o conteudo do arquivo
> /etc/samba/smb.conf
Esta é a minha configuração altere como desejar
[global]
workgroup = CRT.GOV
netbios name = nome_do_servidor
realm = nome_do_dominio
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
load printers = yes
printing = cups
printcap name = cups
security = ADS
encrypt passwords = true
allow trusted domains = no
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
winbind use default domain = yes
winbind enum groups = yes
winbind enum users = yes
winbind nested groups = yes
[ADMIN$]
path = /root
writable = yes
create mask = 0777
directory mask = 0777
[printers]
comment = All Printers
browseable = yes
path = /var/spool/samba
printable = yes
guest ok = yes
public = yes
writable = yes
[print$]
comment = Printer Drivers
path = /usr/share/cups/drivers
browseable = yes
writable = yes
guest ok = yes
write list = root
Salve o arquivo do samba
Agora configurando o kerberos
Apagando conteudo do arquivo
> /etc/krb5.conf
vim /etc/krb5.conf
Esta é minha configuração altere como desejar (respeite maiusculas e minusculas)
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = NOME_DO_DOMINIO_FQDN
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
CRT.GOV.BR = {
kdc = nome_ou_ip_do_servidor_ad:88
admin_server = nome_ou_ip_do_servidor_ad:749
default_domain = nome_ou_ip_do_servidor_ad
}
[domain_realm]
.nome_do_dominio_fqdn = NOME_DO_DOMINIO_FQDN
nome_do_dominio_fqdn = NOME_DO_DOMINIO_FQDN
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Salve o arquivo do Krb5.conf
Editando o nsswitch.conf
apagando o conteudo do arquivo
>/etc/nsswitch.conf
vim /etc/nsswitch.conf (sao minhas configurações altere como desejar)
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Salve o arquivo e feche.
Agora vamos inserir a maquina no ad
net ads join -U administrador (qdo solicitar a senha coloque a senha do administrador do seu dominio)
Alterando o metodo de autenticação
authconfig --enablewinbinb --updateall
authconfig --enablewinbindauth --updateall
Iniciando o Samba e o winbind
service smb start
service winbind start
Testando a comunicaçao
wbinfo -u (mostra os usuarios do ad)
wbindo -g (mostra os grupos do ad)
Configurando o Pykota
mkdir -p /etc/pykota
Copie os arquivos de configuração
cp /usr/share/pykota/conf/pykota.conf.sample /etc/pykota/pykota.conf
cp /usr/share/pykota/conf/pykotadmin.conf.sample /etc/pykota/pykotadmin.conf
Configurando o Curupira
No meu caso a pasta estava no home do root.
Copiando as pastas e os arquivos para os seus devidos lugares;
cp -R /root/curupira-1.4.17/usr/share/curupira /usr/share/
cp -R /root/curupira-1.4.17/var/cache/curupira /var/cache/
cp -R /root/curupira-1.4.17/var/www/curupira /var/www/html/
Iniciando o Postgresql
service postgresql initdb
alterando o arquivo de configuração para acesso
vim /var/lib/pgsql/data/pg_hba.conf
altere as linhas de ident para trust como informado abaixo
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
#caso queira usar o pgadmin da sua maquina coloque a sua rede
host all all sua_rede/mascara trust
# IPv6 local connections:
host all all ::1/128 trust
vim /var/lib/pgsql/data/postgresql.conf
alterem o valor listen-address de localhost para *
reinicie o postgres
service postgresql restart
Criando a base de dados a ser utilizada
psql -f /usr/share/pykota/postgresql/pykota-postgresql.sql
atualizando a base para o curupira
psql -f /usr/share/curupira/templates/pykota-update2curupira.sql
digite exit para voltar para o perfil do root
Copie os arquivos insere-usuario e insere-impressora para a pasta do pykota em /etc/pykota
cp /usr/share/curupira/scripts/insere-usuario /etc/pykota/
cp /usr/share/curupira/scripts/insere-impressora /etc/pykota/
De permissão de execução para estes arquivos
chmod +x /etc/pykota/insere*
As configurações foram pegas do post do usuario Samuel Francisco Ferrigo
http://www.softwarepublico.gov.br/dotlrn/clubs/curupira/forums/message-view?message_id=14193559
Agora edite o arquivo insere-usuario
vim /etc/pykota/insere-usuario
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"
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
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
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
Alterar o arquivo /var/www/curupira/script/busca_info_rede/usrmgr-ng
#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=""
#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;
Alterar o arquivo /var/www/curupira/scripts/function_infos.php
if ( $dominio == ""){
$dominio = "UEBA"; //Informar domínio NETBIOS
}
Alterar o arquivo /var/www/curupira/pega_info_usuario.php
$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
Altere o arquivo script.sh
vim /var/www/html/curupira/script/script.sh
altere o valor /var/www/curupira para /var/www/html/curupira
Dando Permissões nos scritps
chmod -R 777 /var/www/html/curupira/script/script.sh
chmod -R 777 /usr/lib/cups/backend/cupspykota
chmod -R 777 /var/www/curupira/script/busca_info_rede/usrmgr-ng
Alterando o httpd.conf
vim /etc/httpd/conf/httpd.conf
# Adicione a linha abaixo no final do arquivo httpd
<Directory /var/www/html/curupira/>
AuthType basic
AuthName "Utilize DOMINIO\matricula da rede e a senha para a autenticacao."
AuthPAM_Enabled on
AuthBasicAuthoritative off
Require valid-user
Options FollowSymLinks
AllowOverride None
</Directory>
Altere o arquivo index.php
vim /var/www/html/curupira/index.php
altere o valor /login.php para /curupira/login.php
Colocando o seu usuario como administrador do sistema
Usando o pgadmin acesse o banco, selecione a base pykota va para schemas -> public -> tables -> groupsmembers (clique com o botao direito e selecione view-data escolha as 100
ultimas linhas)
altere o primeiro valor de 6 para 2 salve.
feche a pagina do curupira, abra novamente pronto voce ja esta como administrador
Qq duvida so postar
Autor: Francisco Carlos
44 comentários