sábado, 28 de noviembre de 2009

Centos 5x: Samba + PDC con LDAP como backend

Vamos a configuar a Centos 5.x para que sea nuestro PDC, para ellos vamos a requerir los siguientes paquetes:

samba
samba-common
samba-client
openldap-servers
openldap-clients
smbldap-tools

El nombre del dominio sera:

pimpom.loc
Una vez hecha la instalacion, vamos hacer unos movimientos, asi me gusta hacerlo a mi, LDAP almacena su BD en:

/var/lib/ldap

Ahi dentro voy a crear un folder con el mismo nombre de mi DOMINIO->PIMPOM pero en minuscula:

mkdir /var/lib/ldap/pimpom

Lo que sigue es copear el archivo de nombre DB_CONFIG.example en el folder creado, este archivo lo localizan donde se instala openldap que es:

/etc/openldap/

cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

Observar que necesitamos eliminar la extension del archivo. Ahora necesitamos
cambiar los permisos del folder donde vamos a almacenar la base de datos.

chown -R ldap:ldap /var/lib/ldap/pimpom

LDAP tiene un usuario administrador, aqui le vamos a llamar Manager y ademas debe tener un password, samba por ejemplo necesita saber esta informacion para poder interactuar con LDAP, por ello lo que sigue es crear el password, esta informacion debemos tener a la mano durante todo este tuturial.

Obtenemos nuestro password de una vez:

slappasswd
New password:
Re-enter new password:
{SSHA}afhadskjfhdlaksfhdlskf
Lo que sigue ahora es ya entrar a la configuracion de LDAP, el nombre del archivo que
necesitamos editar es slapd.conf y ya saben donde localizarlo correcto?
slapd.conf
*NOTA: Elimino los comentarios por que usan mucho espacio
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

database bdb
suffix "dc=pimpom,dc=loc"
rootdn "cn=Manager,dc=pimpom,dc=loc"
rootpw {SSHA}DSJDASKLJDASKLJDASLKJDASLJDASL
directory /var/lib/ldap/pimpom
loglevel 256

index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq

Al principio pueden ver los schemas de ldap, por defult ldap no tiene el de samba asi que
tenemos que darselo.

cp /usr/share/doc/samba-3.0.33/LDAP/samba.schema /etc/openldap/schema

Ahora como hemos habilitado el log de ldap:
loglevel 256

Necesitamos configurar syslog para que acepte los logs de ldap, para ello abrimos el syslog.conf y agregamos esto a el final del archivo:
local4.* /var/log/ldap.log
Creamos ese archivo
touch /var/log/ldap.log
Reiniciamos syslog
service syslog restart
Shutting down kernel logger:                               [  OK  ]
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
Starting kernel logger:                                    [  OK  ]

Vamos revisando lo que hemos hecho:

slapd.conf listo
syslog.conf listo
Bien ya necesitamos iniciar ldap para ver si no hay problemas:
service ldap start
Checking configuration files for slapd:  config file testing succeeded
                                                  [  OK  ]
Starting slapd:                                            [  OK  ]
Checamos que este escuchando el puerto 389.
netstat --inet -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 *:ldap                      *:*         tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN
Ahi esta "ldap" escuchando, seguimos.
Ya tenemos a LDAP operando, ahora sigue samba,para ellos vamos a configurar smb.conf asi:
SMB.CONF
#Global parameters
[global]
workgroup = PIMPOM
server string = PDC Domain
netbios name = SMBPDC
hosts allow = 172.16.5. 127.
interfaces = eth0
bind interfaces only = Yes

# passwd backend
encrypt passwords = yes
passdb backend = ldapsam:ldap://172.16.5.7/
enable privileges = yes
pam password change= Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %nn *ReType*new*UNIX*password* %nn * passwd:*all*authentication*tokens*updated*successfully*
unix password sync = Yes

# Log options
log level = 1
log file = /var/log/samba/%m.log
max log size = 500
syslog = 1

# Name resolution
name resolve order = wins hosts bcast

# misc
timeserver = No
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
use sendfile = yes
veto files = /*.eml/*.nws/*.{*}/
veto oplock files = /*.doc/*.xls/*.mdb/
deadtime = 120

# Dos-Attribute
map hidden = No
map system = No
map archive = No
map read only = No
store dos attributes = Yes

# printers - configured to use CUPS and automatically load them
load printers = No
printcap name =
printing =
cups options =
show add printer wizard = No

# scripts invoked by samba
add user script = /usr/sbin/smbldap-useradd -m %u
delete user script = /usr/sbin/smbldap-userdel %u
add group script = /usr/sbin/smbldap-groupadd -p %g
delete group script = /usr/sbin/smbldap-groupdel %g
add user to group script = /usr/sbin/smbldap-groupmod -m %u %g
delete user from group script = /usr/sbin/smbldap-groupmod -x %u %g
set primary group script = /usr/sbin/smbldap-usermod -g %g %u
add machine script = /usr/sbin/smbldap-useradd -w %m

# LDAP-iConfiguration
#ldap delete dn = Yes
ldap ssl = off
ldap passwd sync = Yes
ldap suffix = dc=pimpom,dc=loc
ldap machine suffix = ou=Computers
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
ldap admin dn = cn=Manager,dc=pimpom,dc=loc
idmap backend = ldap:ldap://172.16.5.7
idmap uid = 10000-20000
idmap gid = 10000-20000

# logon options
logon script =
logon path =
logon path =
logon home =
logon drive =

# setting up as domain controller
username map = /etc/samba/usermap
preferred master = Yes
wins support = Yes
domain logons = Yes
domain master = Yes
local master = Yes
os level = 64
map acl inherit = Yes
unix charset = UTF8
password level = 6

#========== Share Definitions

[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = yes
locking = no

[homes]
comment = Home Directories
valid users = %S
read only = No
browseable = No

[Profiles]
comment = Network Profiles Service
path = /home/samba/profiles
read only = No
profile acls = yes
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
profile acls = Yes

[Public]
comment = Public Folder
path = /opt/public
available = Yes
browseable = Yes
public = Yes
read only = No
guest ok = Yes
writeable = yes
create mode = 0775
directory mode = 0775
admin users = root

Bien lo que sigue es crear el contenido del archivo que lleva por nombre: usermap, este lo vamos a colocar en /etc/samba/

touch /etc/samba/usermap

Y vamos a agregar esta informacion:

# Unix_name = SMB_name1 SMB_name2 ...
root = Manager administrator admin
nobody = guest pcguest smbguest

Salvamos y salimos.

Ahora segun la configuracion necesitamos crear unos directorios, estos son:
samba, netlogon y profiles.

mkdir /home/samba
mkdir /home/samba/profiles
mkdir /home/samba/netlogon

Necesitamos darle a samba el password de LDAP, recuerdan aquel que usuaron cuando ejecutaron: slappasswd?

smbpasswd smbpasswd -W
Setting stored password for "cn=Manager,dc=pimpom,dc=loc" in secrets.tdb
New SMB password:
Retype new SMB password:

Ahora necesitamos obtener un dato muy importante, el SID que cada dominio tiene uno "UNICO", para ello necesitamos ejectar el siguiente comando.

net getlocalsid
SID for domain SMBPDC is:"S-1-5-21-1234567890-1234567890-1234567890"

De nuevo no perder este dato que mas adelante lo vamos a necesitar.

Vamos de nuevo verificando:

ldap corriendo.
smb.conf editado.
samba,profiles,netlogon creados.
usermap creado.
smbpasswd ejecutado.

Bien parece que vamos bien. Lo que sigue es ver si smb.conf no tiene inconsitencias, para ello ejecutamos el comando testparm, si tiene el se los va a indicar, de lo contrario les va a desplegar toda la configuracion de smb.conf, si no arreglen sus detalles, lo mas comun es algo mal escrito.

Aun no vamos a ejecutar a samba, ya que prefiero terminar todo el proceso completo. Existe una utileria completa para administrar todo de ldap, esta es llamada smbldap-tools, vamos a seguir con esta aplicacion.

Existen 2 archivos en /etc/smbldap-tools/ los cuales necesitamos editar.

Vamos empezando con el mas sencillo.

smbldap.conf
*NOTA: El primer parametro es nuestro SID, si lo recuerdan?

SID="S-1-5-21-1234567890-1234567890-1234567890"

sambaDomain="PIMPOM"

##############################################################################
#
# LDAP Configuration
#
##############################################################################
slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"# Master LDAP port
masterPort="389"
ldapTLS="0"
ldapSSL="0"
verify="require"
cafile="/etc/smbldap-tools/ca.pem"
clientcert="/etc/smbldap-tools/smbldap-tools.iallanis.info.pem"
clientkey="/etc/smbldap-tools/smbldap-tools.iallanis.info.key"
suffix="dc=pimpom,dc=loc"
usersdn="ou=Users,${suffix}"
computersdn="ou=Computers,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
scope="sub"#
hash_encrypt="SSHA"
crypt_salt_format="%s"
userLoginShell="/sbin/nologin"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="999"
userSmbHome="\SMBDC\%U"
userProfile="\\SMBPDC\profiles\%U"
userHomeDrive="W:"

Ahora el siguiente archivo:

smbldap_bind.conf

slaveDN="cn=Manager,dc=pimpom,dc=loc"
slavePw="mi-password"
masterDN="cn=Manager,dc=pimpom,dc=loc"
masterPw="mi-password"

Recuerden el inicio, que cuando estabamos configurando ldap usamos un password, es el que nos pide smbldap_bind.conf.

Sigue la parte mas importante, vamos a crear nuestro dominio, la siguiente instruccion lo que haces es dar de alta todos los grupos del dominio para emular un dominio nt4 en samba.

Aqui de nuevo nos va a pedir el password del administrador de ldap.

E
smbldap-populate

Populating LDAP directory for domain PIMPOM
(S-1-5-21-1234567890-1234567890-1234567890)
(using builtin directory structure)

adding new entry: dc=pimpom,dc=local
adding new entry: ou=Users,dc=pimpom,dc=local
adding new entry: ou=Groups,dc=pimpom,dc=local
adding new entry: ou=Computers,dc=pimpom,dc=local
adding new entry: ou=Idmap,dc=pimpom,dc=local
adding new entry: uid=root,ou=Users,dc=pimpom,dc=local
adding new entry: uid=nobody,ou=Users,dc=pimpom,dc=local
adding new entry: cn=Domain Admins,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Domain Users,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Domain Guests,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Domain Computers,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Administrators,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Account Operators,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Print Operators,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Backup Operators,ou=Groups,dc=pimpom,dc=local
adding new entry: cn=Replicators,ou=Groups,dc=pimpom,dc=local
adding new entry: sambaDomainName=PIMPOM,dc=pimpom,dc=local

Ahora para que centos pueda usar los usuarios de LDAP, necesitamos hacer unos cambios, existen 2 archivos de nombre ldap.conf, uno en /etc y otro /etc/openldap/,

Vamos empezando con /etc/ldap.conf:

/etc/ldap.conf
*NOTA: De nuevo omito todos los comentarios.

host 127.0.0.1
base dc=pimpom,dc=loc
ldap_version 3
timelimit 120
bind_timelimit 120
bind_policy soft
idle_timelimit 3600
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,
nscd,gdm,apache
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

El que sigue:

/etc/openldap/ldap.conf
HOST 127.0.0.1
BASE dc=pimpom,dc=loc
URI ldap://127.0.0.1/

Ahora ya con esto es solo cuestion de configurar a centos para que haga uso de LDAP, para ello tenemos una utileria llamada authconfig-tui, vamos a seguir las siguientes imagenes para mayor claridad:

Figura 1: Configurando Centos con LDAP.
Asi deben dejar su configuracion, de esta manera Centos hara uso de los usuarios de LDAP.

O bien si se siente vikingos y desean hacerlo a mano, deben editar el archivo nsswitch.conf que esta en /etc/
Y quedaria asi:
NOTA: Recordar guardar una copia por si algo sale mal o desean retornar su sistema a su estado inicial.

nsswitch.conf

passwd:     files ldap
shadow:     files ldap
group:      files ldap

#hosts:     db files nisplus nis dns
hosts:      files wins dns

# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   files ldap

publickey:  nisplus

automount:  files ldap
aliases:    files nisplus

Salvan y listo.

Una vez hecho esto lo que sigue es arrancar todo y probar.

1; Reiniciar ldap

service ldap restart

2; Arrancar samba

service smb start

Pruebas

1; net groupmap list nos debe mostrar nuestros grupos creados:

net groupmap list
Domain Admins (S-1-5-21-1234567890-1234567890-1234567890-512) -> Domain Admins
Domain Users (S-1-5-21-1234567890-1234567890-1234567890-513) -> Domain Users
Domain Guests (S-1-5-21-1234567890-1234567890-1234567890-514) -> Domain Guests
Domain Computers (S-1-5-21-1234567890-1234567890-1234567890-515) -> Domain Computers
Administrators (S-1-5-32-544) -> Administrators
Account Operators (S-1-5-32-548) -> Account Operators
Print Operators (S-1-5-32-550) -> Print Operators
Backup Operators (S-1-5-32-551) -> Backup Operators
Replicators (S-1-5-32-552) -> Replicators

2; pdbedit -Lv nos debe dar los usuarios basicos:
smbldap-tools]# pdbedit -Lv
---------------
Unix username: root
NT username: root
Account Flags: [U ]
User SID: S-1-5-21-1234567890-1234567890-1234567890-500
Primary Group SID: S-1-5-21-1234567890-1234567890-1234567890-513
Full Name: root
Home Directory: \\SMBPDC\root
HomeDir Drive: W:
Logon Script:
Profile Path: \\SMBPDC\profiles\root
Domain: PIMPOM
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Mon, 24 May 2010 18:32:27 PDT
Password can change: Mon, 24 May 2010 18:32:27 PDT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
---------------
Unix username: nobody
NT username: nobody
Account Flags: [NDU ]
User SID: -2998
Primary Group SID: S-1-5-21-1234567890-1234567890-1234567890-513
Full Name: nobody
Home Directory: \\SMBPDC\nobody
HomeDir Drive: W:
Logon Script:
Profile Path: \\SMBPDC\profiles\nobody
Domain: PIMPOM
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: 0
Password can change: 0
Password must change: 0
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

3; Vamos creando un usuario.

smbldap-useradd -a -m pepito
-Ahora le damos el password.
smbldap-passwd pepito
Changing UNIX and samba passwords for pepito
New password:
Retype new password:

Aqui debemos tener un usuario creado y con su directorio en /home, vamos revisando el directorio:

ls /home
pepito samba

Bien ahora vamos viendo que dice pdbedit de ese usuario:
pdbedit -Lv pepito
Unix username: pepito
NT username: pepito
Account Flags: [U ]
User SID: S-1-5-21-1234567890-1234567890-1234567890-3002
Primary Group SID: S-1-5-21-1234567890-1234567890-1234567890 -513
Full Name: pepito
Home Directory: \\SMBPDC\pepito
HomeDir Drive: W:
Logon Script:
Profile Path: \\SMBPDC\profiles\pepito
Domain: PIMPOM
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Tue, 25 May 2010 12:32:56 PDT
Password can change: Tue, 25 May 2010 12:32:56 PDT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Ahora que smbldap-tools nos de informes de el:

smbldap-usershow pepito
dn: uid=pepito,ou=Users,dc=mueblex,dc=com
objectClass: top,person,organizationalPerson,inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
cn: pepito
sn: pepito
givenName: pepito
uid: pepito
uidNumber: 1001
gidNumber: 513
homeDirectory: /home/pepito
loginShell: /sbin/nologin
gecos: System User
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
displayName: pepito
sambaSID: S-1-5-21-1234567890-1234567890-1234567890-3002
sambaPrimaryGroupSID: S-1-5-21-1234567890-1234567890-1234567890-513
sambaProfilePath: \\SMBPDC\profiles\pepito
sambaHomePath: \\SMBPDC\pepito
sambaHomeDrive: W:
sambaLMPassword: B6202951EB466F13AAD3B435B51404EE
sambaAcctFlags: [U]
sambaNTPassword: C6243CD48B29A825CCD68E4053321A66
sambaPwdLastSet: 1274815976
sambaPwdMustChange: 1361129576
userPassword: {SSHA}IQwFvKBbbKv+0AnVZse6ycYoNTV0cU92
shadowLastChange: 14754
shadowMax: 999

Pueden ver el dato que dice:

sambaHomeDrive: W:

Este salio de smbldap.conf ahi lo configuramos. Ahora vamos a ver que dice centos de este usuario.

id pepito
uid=1001(pepito) gid=513(Domain Users) groups=513(Domain Users)

Parece que todo esta funcionando correctamente, vamos a revisar a samba

smbclient -L \\SMBPDC -U%
Domain=[PIMPOM] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Sharename Type Comment
--------- ---- -------
netlogon Disk Network Logon Service
Profiles Disk Network Profiles Service
Public Disk Public Folder
IPC$ IPC IPC Service (PDC Domain)
Domain=[PIMPOM] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Server Comment
--------- -------
JGARCIAVM
SMBPDC PDC Domain
SMB-VMXPKLABAZA

Workgroup Master
--------- -------
PIMPOM SMBPDC

Bien todo parece estar operando como esperabamos.

Domain Admins

Si desean que un usuario sea Administrador del dominio "Domain Admins" ese l grupo ahi debemos agregar nuestro usuario.

Supongamos que nuestro usuario es "sysadm", entonces seria asi:

smbldap-groupmod -m sysadm "Domain Admins"
adding user sysadm to group Domain Admins

Listo, cuando necesitemos hacer algo como administrador entramos como tal.



miércoles, 25 de noviembre de 2009

Printers: HP 4000 Errores

Error 79.0803. en pantalla!!!

Un cold reset y listo!!!

Centos/FreeBSD: PHP Execution Time

Si tus scripts necesitan mas del tiempo que tiene php para ejecutar un script, debemos modificar este valor de php

max_execution_time

Lo encuentran en php.ini y en centos esta en /etc y en freebsd esta en /usr/local/etc

Por default es 60 segundos o 1 minutos pero ahi veces que necesitamos mas, esto ustedes lo sabran no hay ciencia exacta solo la experiencia propia, pero como recomendacion nunca le den la opcion que sea ilimitado.

Cuado hagan el cambio deben reiniciar apache para que agarre el valor nuevo.

Saludos!!!

miércoles, 18 de noviembre de 2009

Centos 5.x: Migrando LDAP.

Paquetes que se necesitan instalar antes de empezar todo en el nuevo servidor:

openldap-servers
openldap-clients
samba
samba-common
smbldap-tools
Mandriva MDS
Apache
ntpd

Voy a mover una bd de ldap de gentoo hacia centos.

En gentoo me traje los archivo de respaldo que sale ejecutando:

slapcat -l respaldo.ldif

Copie la misma configuracion que tenia en el gentoo hacia centos hablando de openldap y samba, hasta los schemas, si no hacen esto van a tener problemas, debe quedar igual que el server donde esta operando.

No necesite traer el contenido de la base de datos /var/lib/openldap-directory, por que con el puro archivo respaldo.ldif se van a recuperar los datos.

Lo unico que copie fue DB_CONFIG.example hacia el folder donde ldap va a almacenar sus datos /var/lib/ldap, pero ese lo instala openldap-servers.

Por ultimo activar el syslog para que ldap logie, asi si pasa algo podremos saber mas facil por donde buscarle para reparar el dano.

Agregamos esto a el /etc/syslog.conf

local4.* -/var/log/ldap.log

Salvamos, creamos ese archivo en /var/log

touch /var/log/ldap.conf

Reiniciamos syslogd

/etc/init.d/syslog restart

Cambiamos los permisos para que ldap sea el unico con derechos en ese folder

chown -R ldap:ldap /var/lib/ldap
chmod -R 600 /var/lib/ldap

Jalamos el respaldo

slapadd -l respaldo.ldif

De aqui que nos se les pase configurar a centos para que se autentifique con ldap para el es necesario configurar /etc/nsswitch.conf

slapd.conf

include         /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/mmc.schema
include /etc/openldap/schema/nis.schema
#include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/mail.schema
include /etc/openldap/schema/samba.schema


#################################
schemacheck on
allow bind_v2

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

#######################################################################
# Logging Options (disable when everything is working fine)
#######################################################################
loglevel 256

#######################################################################
# LDBM database definitions
#######################################################################
database bdb
directory "/var/lib/ldap/mydominio"
cachesize 100000
dbcachesize 1000000
lastmod on
suffix "dc=midominio,dc=com"
rootdn "cn=root,dc=midominio,dc=com"

password-hash {crypt}
password-crypt-salt-format "$1$%.8$"
rootpw {CRYPT}asdasdasdasdasdasd.


access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
by dn="cn=root,dc=oakwest,dc=com" write
by anonymous auth
by self write
by * none

access to *
by * read

index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
index sambaGroupType,sambaSIDList,uniqueMember eq

Sin lo esto:
access to *
by * read
Centos no podra accesar la informacion de los usuarios.

Respaldando Samba

Bien seguimos con samba, necesitamos traernos el respaldo de samba, ahi como lo ven samba tambien tiene sus archivos importantes que se deben respaldar si lo van a mover a otro servidor.

No solo el folder /etc/samba se debe respaldar, el tiene aparte unos archivos con extension "tdb" que regularmente los almacena en "/var/cache", "/var/lib/samba".

Este link les puede servir si desean adentrarse mas y entender a samba y sus archivos critcos.

Samba TDB

Segun dice que los importantes y sus rutas son en Centos:

account_policy --> /var/cache/samba
group_mapping --> /var/cache/samba
ntdrivers --> /var/cache/samba
ntforms --> /var/cache/samba
ntprinters --> /var/cache/samba
passdb --> No lo uso por que mi db es LDAP
registry --> /var/cache/samba
secrets --> /etc/samba
share_info --> /var/cache/samba
winbindd_idmap --> /var/cache/samba

Vamos iniciando por respaldar el archivo secrets.tdb, nos movemos a ese folder y hacemos esto:

cd /var/lib/samba/private
tdbbackup -s bak secrets.tdb

Si observa se acaba de crear ahi mismo un archivo de nombre secrets.tdbbak

Si leemos el man de esta herramienta dice que fue hecha para trabajar hasta cuando el servicio de samba esta operando, o sea que no es necesario apagar a samba para usarla, lo cual es beneficioso para nosotros que administramos este tipo de servicios.

Ahora seguimos con el folder /var/cache/samba/, un cd hasta haya y

tdbbackup -s bak *.tdb

Aqui son mas archivos, creamos ahi dentro un folder de nombre "cache-bak" y movemos todos los archivos con extension tdbbak hacia ahi:

mv *.tdbbak cache-bak/

Ya que jalemos este folder a el nuevo servidor, eliminamos los archivos que nos utiles segun la pagina de samba para que no nos causen problemas, de todos modos cuando samba arranca los crea por ello nos son importantes.

creamos un tar de cache-bak y lo jalamos a el nuevo servidor.

tar -cf cache-bak.tar /var/cache/cache-bak

Movemos ambos archivos a el nuevo servidor con Centos 5.4, ahi cambian las cosas poquito, porque el secrets lo marca en /etc/samba/ el cache esta donde mismo /var/cache/samba.

Copeamos cada archivo a su lugar, nos olvidamos de los temporales.

A la hora de copear solo debe asegurarse que tenga la extension tdb y no los muevan tal cual estan:

mv secrets.baktdb /etc/samba/secrets.tdb

Asi pueden mover todos los demas, cada uno a su respectivo sitio.

Como vamos a mover a samba, debemos checar su archivo de configuracion a ver si no es necesario hacerle algun cambio.

Si todo esta bien, ejecutamos samba.

service smb start

El proceso normal para leventar un PDC con samba es sacar el SID del servidor y darlo de alta en varias aplicaciones como samba, smbldap-tools. Aqui cambia un poco por que el SID ya lo tenemos, si lo modificamos tendriamos que modificar cada uno de nuestros clientes por que el SID es la firma del servidor.

Asi que en este caso lo que vamos hacer es grabar el que tenemos en el servidor de produccion, como ya tenemos este dato de los archivos de configuracion se lo tenemos que dar comando para eso es:

net setlocalsid
SID for domain PDC-SRV is: S-1-5-21-4251888864-2409518005-1441902238

net setlocalsid "TODA LA NUMERACION DEL VIEJO SERVIDOR"

Reiniciamos samba, no debe marcar error.

SMBLDAP-TOOLS

Lo configuramos igual que el servidor de produccion, pero no ejecutamos el smbldap-populate por que ya tenemos la estructura del dominio. Solo verficar que este igual que el de produccion.

Ya que lo tenga listo prueban un smbldap-usershow, smbldap-passwd, etc.

Autentificacion Local

Tenemos que configurar a centos para que se autentifique localmente, para ello debemos tambien modificar el archivo /etc/openldap/ldap.conf y /etc/ldap.conf

/etc/openldap/ldap.conf

HOST 127.0.0.1
BASE dc=oakwest,dc=com
URI 127.0.0.1

/etc/ldap.conf

host 127.0.0.1
base dc=oakwest,dc=com
ldap_version 3
timelimit 120
bind_timelimit 120
bind_policy soft
idle_timelimit 3600
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

Ejecutan

authconfig-tui

User Information --> ldap
Authentication --> agregan LDAP

Next--> checan los parametros, si todo esta correcto le dicen ok y listo, ya podra Centos usar los parametros del ldap localmente.

Probando

Bien, vamos viendo si ldap esta operando sin problemas:


lunes, 16 de noviembre de 2009

Centos 5.x: Activar disco con Raid en modo rescate

Tenemos que accesar nuestro arreglo con el disco de rescate de Centos 5.x, por default cuando lo ejecutamos el no lo hace, asi que nos toca hacerlo.

Para ello necesitamos crear el archivo mdadm.conf de lo contrario no va a querer, asi:

mdadm --examine --scan > /etc/mdadm.conf

Lo creamos y ahora si iniciamos los arreglos para poder accesarlos.

mdadm --assemble --scan /dev/md0
mdadm --assemble --scan /dev/md1

Listo!!!

sábado, 14 de noviembre de 2009

Centos 5.x: Creacion de un arreglo Raid-1

Tenemos nuestro sistema trabajando, el tutorial de Centos en su wiki habla sobre hacerlo sobre un sistema arrancado desde el CD en modo de reparacion, pero si oo hago no podre mostrarles la informacion que vaya saliendo segun avance.

Asi que prefiero hacerlo con el sistema en operacion, ya cuando lo hayan perfeccionado podran hacerlo lo otro que es mas seguro, aunque he hecho esto varias veces y nunca he tenido problemas, ademas que siempre tengo respaldo de mis sistemas.

Vamos empezando, tenemos un sistema con LVM sobre el 1er disco IDE de nombre:

dmesg | grep dha
device-mapper: ioctl: 4.11.5-ioctl (2007-12-12) initialised: dm-devel@redhat.com
[root@]# dmesg | grep hda
ide0: BM-DMA at 0x08b0-0x08b7, BIOS settings: hda:DMA, hdb:pio
hda: WDC WD1600SB-01RFA0, ATA DISK drive
hda: max request size: 512KiB
hda: 321672960 sectors (164696 MB) w/8192KiB Cache, CHS=20023/255/63, UDMA(100)
hda: cache flushes supported
hda: hda1 hda2
EXT3 FS on hda1, internal journal


Sobre un sistema LVM con esta informacion:

# lvm pvdisplay
--- Physical volume ---
PV Name /dev/hda2
VG Name VolGroup00
PV Size 153.28 GB / not usable 3.21 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 4905
Free PE 0
Allocated PE 4905
PV UUID xPGYzM-vzei-2mEO-QxkB-NR34-UaLS-nuSv8j


Su parte logica es:

root@ lvm lvdisplay
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID 6kY4pz-N7da-44Oi-7s2C-jWNR-GR7C-tAjHpc
LV Write Access read/write
LV Status available
# open 1
LV Size 152.28 GB
Current LE 4873
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

--- Logical volume ---
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID R9WgZa-QTUx-knYp-bU7f-gf3t-2BSJ-hh9dzm
LV Write Access read/write
LV Status available
# open 1
LV Size 1.00 GB
Current LE 32
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1


Esta particionado de la siguiente manera:

fdisk -l /dev/hda
Disk /dev/hda: 164.6 GB, 164696555520 bytes
255 heads, 63 sectors/track, 20023 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 20023 160730325 8e Linux LVM

Creo que es todo lo que necesitamos saber, vamos ahoar a ver el disco 2 IDE de nonbre como sabran hdc ya que esta en el 2do canal IDE, nunca pongan un RAID-1 sobre el mismo bus o cable IDE, se pueden meter en problemas, ya que el bus se puede saturar, ya que recuerden que cuando se guarda info a los discos se hace a los 2 y el bus tiene que mandar la misma info a los discos, si tienen mucho uso del disco como una base de datos o un samba solo analicen a situacion.

Bien el 2do disco es del mismo tamano, no puede ser menor a el disco que se quiere respaldar:

root@ dmesg | grep hdc
ide1: BM-DMA at 0x08b8-0x08bf, BIOS settings: hdc:DMA, hdd:DMA
hdc: WDC WD1600SB-01RFA0, ATA DISK drive
hdc: max request size: 512KiB
hdc: 321672960 sectors (164696 MB) w/8192KiB Cache, CHS=20023/255/63, UDMA(100)
hdc: cache flushes supported
hdc: hdc1 hdc2

Identico a el 1ro.

fdisk -l /dev/hdc

Disk /dev/hdc: 164.6 GB, 164696555520 bytes
255 heads, 63 sectors/track, 20023 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 13 104391 fd Linux raid autodetect
/dev/hdc2 14 9729 78043770 fd Linux raid autodetect

Miren este disco ya fue usado en un arreglo anteriormente, no importa vamos a eliminarlo todo su info para empezar de 0.

Si checo mi comando mount solo para ver que no se esta usando:

# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

Correcto, nada relacionado a ese disco aparece.

Vamos empezando a eliminar las particiones:

fdisk /dev/hdc

The number of cylinders for this disk is set to 20023.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/hdc: 164.6 GB, 164696555520 bytes
255 heads, 63 sectors/track, 20023 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 13 104391 fd Linux raid autodetect
/dev/hdc2 14 9729 78043770 fd Linux raid autodetect

Command (m for help): d
Partition number (1-4): 2

Command (m for help): d
Selected partition 1

Command (m for help): p

Disk /dev/hdc: 164.6 GB, 164696555520 bytes
255 heads, 63 sectors/track, 20023 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

Command (m for help):

Aqui ya no tenemos nada, solo guardamos lo hecho para que se apliquen los cambios, aun no se han llevado a el disco.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

root@

Listo no regreso a el shell. Vamos ahora a crear las particiones como si el disco fuera de paquete, ariba ya vimos que el disco debe quedar particionado como el 1ro, o sea asi:

fdisk -l /dev/hda

Disk /dev/hda: 164.6 GB, 164696555520 bytes
255 heads, 63 sectors/track, 20023 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 20023 160730325 8e Linux LVM

Bien, asi que empezamos:

root@ fdisk /dev/hdc

The number of cylinders for this disk is set to 20023.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-20023, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-20023, default 20023): 13

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (14-20023, default 14):
Using default value 14
Last cylinder or +size or +sizeM or +sizeK (14-20023, default 20023):
Using default value 20023

Command (m for help): p

Disk /dev/hdc: 164.6 GB, 164696555520 bytes
255 heads, 63 sectors/track, 20023 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 13 104391 83 Linux
/dev/hdc2 14 20023 160730325 83 Linux

Command (m for help):


Aqui ya tenemos el disco igual que el 1ro, ahora sigue cambiar las particiones por tipo Raid asi:

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/hdc: 164.6 GB, 164696555520 bytes
255 heads, 63 sectors/track, 20023 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 13 104391 fd Linux raid autodetect
/dev/hdc2 14 20023 160730325 fd Linux raid autodetect

Command (m for help):

Ya podemos ver que estan identicas, asi que guardamos los cambios:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Listo ya tenemos nuestro disco para seguir la operacion, ahora lo que sigue es cargar ciertos modulos ya que que cuando generemos el nuevo initrd los va a necesitar a fuercitas si no cuando reiniciemos el equipo no podra cargar los modulos referente a el RAID.

Vamos a ver necesitamos todos estos para no andar buscando cuales si cuales no vamos cargandolos:

root# modprobe linear
root# modprobe multipath
root# modprobe raid0
root# modprobe raid1
root# modprobe raid5

El md ya lo tenia cargado. Si ejecutamos el siguiente comando nos debera sacar una informacion parecida a esta:

root# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4]
unused devices:

Ahi podran ver que si cargo los modulos anteriores. Vamos solo a tener 2 particiones ya que nuestro disco que deseamos respaldar tiene solo 2. Estas van a ser y tiene esta relacion:

md0 ----> /dev/hdc1 === /dev/hda1
md1 ----> /dev/hdc2 === /dev/hda2

Vamos a verficar que el disco hdc no tenga ninguna informacion sobre algun raid,
solo para cerciorarnos:

root@# mdadm --zero-superblock /dev/hdc1
mdadm: Unrecognised md component device - /dev/hdc1
root@ mdadm --zero-superblock /dev/hdc2
mdadm: Unrecognised md component device - /dev/hdc2

Nos debe sacar esta informacion. Sino saca nada, es que si tenia info de arreglos anteriores, pero si lo vuelven a ejecutar les debera la informacion anterior.

Creando las particiones:

root@ mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/hdc1
mdadm: /dev/hdc1 appears to contain an ext2fs file system
size=104320K mtime=Sun Oct 25 22:33:00 2009
Continue creating array? y
mdadm: array /dev/md0 started.
root@ mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/hdc2
mdadm: array /dev/md1 started.

Ya hemos creado las 2 particiones tipo raid-1, este mensaje:

mdadm: /dev/hdc1 appears to contain an ext2fs file system

Me lo saco por que este disco anteriormente lo use en un sistema linux y tenia formato ext3, pero no hay problema es solo informativo, de todos modos vamos a tener que darle formato de nuevo. Ahora vean el siguiente formato:

root@ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4]
md1 : active raid1 hdc2[1]
160730240 blocks [2/1] [_U]

md0 : active raid1 hdc1[1]
104320 blocks [2/1] [_U]

unused devices:
root@

Ya nos aparecen un raid-1 pero le falta un disco:

160730240 blocks [2/1] [_U]

Es normal, es el disco que deseamos respaldar el que le falta para ser un raid-1 completo.

Ahora lo que sigue es formatear el disco, empezando por la particion /dev/md0 por que es donde va el boot. la 2da(md1) va a ser tipo LVM.

# mkfs.ext3 -L "/boot" /dev/md0

mke2fs 1.39 (29-May-2006)
Filesystem label=/boot
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
26104 inodes, 104320 blocks
5216 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Como mencione la 2da particion va a tener un tipo LVM asi que primero la creamos y luego formateamos.

Empezamos por crear la particion fisica:

lvm pvcreate /dev/md1
Physical volume "/dev/md1" successfully created

Ahora sigue crear el grupo:

lvm vgcreate RaidSys /dev/md1
/dev/cdrom: open failed: Read-only file system
/dev/cdrom: open failed: Read-only file system
Attempt to close device '/dev/cdrom' which is not open.
Volume group "RaidSys" successfully created

No me interesa el mensaje del cd-rom.

Algo interesando es que si lees hacerca del PE de los LVM te dicen que por default si valor es de 4MB, pero Centos cuando los instalas el usa el valor de 32MB, chequen el disco 1:

lvm pvdisplay
--- Physical volume ---
PV Name /dev/hda2
VG Name VolGroup00
PV Size 153.28 GB / not usable 3.21 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 4905
Free PE 0
Allocated PE 4905
PV UUID xPGYzM-vzei-2mEO-QxkB-NR34-UaLS-nuSv8j


Vean

PE Size (KByte) 32768

Bueno asi que cuando vayamos a crear el grupo vamos especificar este valor para que sea igual que el disco 1, para ello se usa el parametro "-s", vamos haciendolo:

lvm vgcreate -s 32MB RaidSys /dev/md1
/dev/cdrom: open failed: Read-only file system
/dev/cdrom: open failed: Read-only file system
Attempt to close device '/dev/cdrom' which is not open.
Volume group "RaidSys" successfully created

Verificamos lo hecho:

root@ lvm pvdisplay
--- Physical volume ---
PV Name /dev/hda2
VG Name VolGroup00
PV Size 153.28 GB / not usable 3.21 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 4905
Free PE 0
Allocated PE 4905
PV UUID xPGYzM-vzei-2mEO-QxkB-NR34-UaLS-nuSv8j

--- Physical volume ---
PV Name /dev/md1
VG Name RaidSys
PV Size 153.28 GB / not usable 3.12 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 4905
Free PE 4905
Allocated PE 0
PV UUID B5wfIK-MUOh-xr1Q-1s3P-FgGs-PQRd-2MZZ0L

Vean el mismo valor del PE, listo. Dentro de este Volumen de grupo vamos a crear nuestras 2 particiones logicas que seran / y swap.

Vamos empezando por el swap de 1G

lvm lvcreate --size 1GB --name swap RaidSys
Logical volume "swap" created

Listo, sigue crear el root:

lvm lvcreate --size 152.28GB --name Root RaidSys
Rounding up size to full physical extent 152.28 GB
Logical volume "Root" created

Nos dice ese mensaje por que casi usamos todo lo permitido, verificamos lo hecho:

# lvm lvdisplay
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID 6kY4pz-N7da-44Oi-7s2C-jWNR-GR7C-tAjHpc
LV Write Access read/write
LV Status available
# open 1
LV Size 152.28 GB
Current LE 4873
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

--- Logical volume ---
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID R9WgZa-QTUx-knYp-bU7f-gf3t-2BSJ-hh9dzm
LV Write Access read/write
LV Status available
# open 1
LV Size 1.00 GB
Current LE 32
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1

--- Logical volume ---
LV Name /dev/RaidSys/swap
VG Name RaidSys
LV UUID 1ATXgH-l3KP-eJCX-YKSc-XDfV-QhU8-wQcGi1
LV Write Access read/write
LV Status available
# open 0
LV Size 1.00 GB
Current LE 32
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2

--- Logical volume ---
LV Name /dev/RaidSys/Root
VG Name RaidSys
LV UUID Sg0lp7-xZNs-vH39-f4Wn-oYR0-S7hz-l0DFFq
LV Write Access read/write
LV Status available
# open 0
LV Size 152.28 GB
Current LE 4873
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3

Ahi esta igualito que el disco 1. Ahora si como ya tenemos nuestras 2 particiones vamos a necesitar darles el sistema de archivos a cada una, empezamo por el swap:

mkswap /dev/RaidSys/swap
Setting up swapspace version 1, size = 1073737 kB

Ahor vamos por el root:

mkfs.ext3 -L "/" /dev/RaidSys/Root
mke2fs 1.39 (29-May-2006)
Filesystem label=/
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
19972096 inodes, 39919616 blocks
1995980 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
1219 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Ahor lo que sigue
es copear la informacion del disco 1 a l disco 2 con arreglo, para ello necesitamos montar las particiones del arreglo para hacer esto, vamos creando las entradas en mnt:

mkdir /mnt/root
mkdir /mnt/boot

mount /dev/RaidSy/Root /mnt/root
mount/dev/md0 /mnt/boot

Necesitamos hacerle unos ajustes a nuestro ramdisk:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img.ori
[root@mbx-pervasive ~]# mkinitrd /boot/initrd-`uname -r`.img `uname -r`

Ahora copeamos la informacion a cada particion:

rsync -avHX /boot/* /mnt/boot/
cp -dpRx / /mnt/root/

Para lo referente a selinux:

touch /mnt/root/.autorelabel

Ya tenemos nuestras particiones nuevas con los datos, ahora seguimos con grub:

grub> root (hd1)
Filesystem type unknown, using whole disk

grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
quit

Listo ya tenemos nuestro 2do disco con lo necesario para botear, seguimos con editar lo archivos importantes de arranque como grub, mi grub original es este:

#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-164.6.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.6.1.el5 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-164.6.1.el5.img
title CentOS (2.6.18-164.2.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.2.1.el5 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-164.2.1.el5.img

Como ya tenemos la info en el arreglo vamos a editar todos los archvos de ahi mismo, asi que abrimos:

vim /mnt/boot/grub/menu.lst

#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS Raid-1 (2.6.18-164.6.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.6.1.el5 ro root=/dev/RaidSys/Root
initrd /initrd-2.6.18-164.6.1.el5.img
title CentOS (2.6.18-164.2.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.2.1.el5 ro root=/dev/RaidSys/Root
initrd /initrd-2.6.18-164.2.1.el5.img

Solo necesitamos cambiar la ruta de "/" por la nueva y salvamos.

Seguimos por el sistema de archivos"fstab", el original esta asi:

/dev/VolGroup00/LogVol00 / ext3 defaults,noatime 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0

Abrimos /mnt/root/etc/fstab y va a quedar asi:

/dev/RaidSys/Root / ext3 defaults,noatime 1 1
LABEL=/dev/md0 /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/RaidSys/swap swap swap defaults 0 0

Salvamos y salimos.

Por ultimo ya solo nos falta crear el archivo mdadm.conf asi:

mdadm --examine --scan > /mnt/root/etc/mdadm.conf

Listo ya solo desmontamos nuestras particiones nuevas, apagamos el equipo, cambiamos el 2do disco a la pocision del 1ro y retiramos el 1ro por el momento, prendemos el equipo y debera arrancar del nuevo disco creado.

Centos 5.x: Manejo de LVM

Tenemos un disco con LVM, vamos a ver como tronar todo esto del LVM ya que vamos a usar el disco para hacer un arreglo y necesito que este limpio ya que LVM almacena informacion en disco, aunque se borre y vuelva uno a formatear el disco la informacion referenre LVM ahi seguira.

Bien vamos mostrando la informacion de LVM:

root@ lvm lvdisplay

--- Logical volume ---
LV Name /dev/RaidSys/swap
VG Name RaidSys
LV UUID Rn2DCW-VBZZ-C01w-Zh6F-AeLl-k3Et-3kUp8P
LV Write Access read/write
LV Status available
# open 0
LV Size 2.00 GB
Current LE 64
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2

--- Logical volume ---
LV Name /dev/RaidSys/Root
VG Name RaidSys
LV UUID OmDhrO-GTfL-E38n-fOkV-DgTH-eWeV-GnXFV0
LV Write Access read/write
LV Status available
# open 0
LV Size 72.38 GB
Current LE 2316
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3

Hasta una particio swap tiene.

LVM maneja 2 particiones, la parte fisica y la logica. Para empezar debemos apagar la parte logica y despues la logica.

Vamos iniciando por el swap, me a gritar pero no tiene ya utilidad para mi:

root@ lvm lvremove /dev/RaidSys/swap
/dev/cdrom: open failed: Read-only file system
Do you really want to remove active logical volume swap? [y/n]: y
Logical volume "swap" successfully removed

No se porque me habla del CD-ROM pero no importa le digo que si, y ahora ya no aparece mi swap de esa particion:

[root@ lvm lvdisplay
--- Logical volume ---
LV Name /dev/RaidSys/Root
VG Name RaidSys
LV UUID OmDhrO-GTfL-E38n-fOkV-DgTH-eWeV-GnXFV0
LV Write Access read/write
LV Status available
# open 0
LV Size 72.38 GB
Current LE 2316
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3

Ya solo me queda la parte de los datos, vamos haciendo lo mismo, y aparte parace que esta montada la parte fisica sobre un arreglo (md), no importa ya que terminemos eliminamos la parte del arreglo para que el disco queda como de fabrica.

[root@ lvm lvremove /dev/RaidSys/Root
/dev/cdrom: open failed: Read-only file system
Do you really want to remove active logical volume Root? [y/n]: y
Logical volume "Root" successfully removed

Volvemos a verificar:

Ya solo me aparece todo lo relacionado con las particiones que si estan en operacion asi que no tiene caso mostrarlas, hemos eliminado la parte logica de ese disco.

Vamos por la parte fisica.

root@ lvm pvdisplay
--- Physical volume ---
PV Name /dev/hda2
VG Name VolGroup00
PV Size 153.28 GB / not usable 3.21 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 4905
Free PE 0
Allocated PE 4905
PV UUID xPGYzM-vzei-2mEO-QxkB-NR34-UaLS-nuSv8j

--- Physical volume ---
PV Name /dev/md1
VG Name RaidSys
PV Size 74.43 GB / not usable 22.50 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 2381
Free PE 2381
Allocated PE 0
PV UUID EgiVWq-5L51-nvtc-IVtx-yzda-JsYy-l2sNKW

Ahi tienen, 2 particiones fisicas, la 1ra es la que esta en operacion, la 2da es la del disco que necesito formatear.

root@ lvm pvremove /dev/md1 RaidSys
/dev/cdrom: open failed: Read-only file system
Can't pvremove physical volume "/dev/md1" of volume group "RaidSys" without -ff
Physical Volume RaidSys not found

Bueno dice que le demos -ff.

root@ lvm pvremove -ff /dev/md1 RaidSys
/dev/cdrom: open failed: Read-only file system
Really WIPE LABELS from physical volume "/dev/md1" of volume group "RaidSys" [y/n]? y
WARNING: Wiping physical volume label from /dev/md1 of volume group "RaidSys"
Labels on physical volume "/dev/md1" successfully wiped
RaidSys: Couldn't find device. Check your filters?

Creo que no llevaba el 2do parametro, pero bueno lo importante es que ya lo borro, aqui comprobamos.

root@ lvm pvdisplay
--- Physical volume ---
PV Name /dev/hda2
VG Name VolGroup00
PV Size 153.28 GB / not usable 3.21 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 4905
Free PE 0
Allocated PE 4905
PV UUID xPGYzM-vzei-2mEO-QxkB-NR34-UaLS-nuSv8j

Ya se fue todo lo del disco. Ahora lo que sigue es borrar ese arreglo que tiene configurado.

root@ cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hdc2[0]
78043648 blocks [2/1] [U_]

md0 : active raid1 hdc1[0]
104320 blocks [2/1] [U_]

unused devices:

Primero paramos el arreglo:

root@ mdadm -S /dev/md1
mdadm: stopped /dev/md1

root@ mdadm -S /dev/md0

root@ cat /proc/mdstat
Personalities : [raid1]
unused devices:
mdadm: stopped /dev/md0

Ya solo para borrar todo lo que haya quedado guardado del arreglo en el disco:

root@ mdadm --zero-superblock /dev/hdc1
root@ mdadm --zero-superblock /dev/hdc2

No debe sacar nada de info, solo para corroborar lo hecho y que nada haya quedamo guardado:

Si lo volvemos a ejecutar nos debe sacar este mensaje:

root@ mdadm --zero-superblock /dev/hdc2
mdadm: Unrecognised md component device - /dev/hdc2

Listo nuestro disco esta listo para volver a usar.

Ahora vamos a la parte donde tenemos las particiones LVM y necesitamos activarlas.

lvm vgchange -a y

Con esto activamos todas los grupos de volumenes.

Ahora vamos a recuperar nuestro disco de 1 lvm que tiene creado 1 vg llamado VolGroup00, ya activamos el vgroup, ahora sigue eliminar las partes logicas o particiones logicas de nombre:

LogVol00 y LogVol01.

lvremove VolGroup00

Busca cuantas particiones logicas tenemos y pregunta por cada una, le decimos que si y listo.

Ahora vamos a borrar el VolGroup:

vgremove VolGroup00

Listo, no pregunta solo informa lo hecho.

Despues sigue eliminar la parte fisica del disco.

pvremove /dev/hdc2

Listo no pregunta nada solo informa que ya elimino la info del disco y esta listo para usarse.

Con pvscan podremos verficar que ya no existe nada en este disco (hdc), cuando lo ejecuto ya no encuentra nada sobre lvm en este disco, ni lo muestra siquiera, listo!!!

Tenemos un arreglo de discos y en una de las particiones tenemos una tipo LVM que necesitamos accesarla.

1; Activamos la particion (sigan mi blog) de los arreglos.
2; Activen el Volumen:

lvm vgchange -a y RaidSys

Asi se llama el volumen de disco que esta montado en el arreglo.

Listo.

viernes, 13 de noviembre de 2009

Gentoo: Update postfix alias

Postfix 2.6.5, para actualizar los alias, editamos el archivo /etc/postfix/aliases y agregamos los que deseamos ejemplo deseo que la cuenta del usuario kgazon@micorreo.com se vaya a mi cuenta kgada@micorreo.com.

Abro el archivo /etc/postfix/aliases

kgazon: kgada

Salvo y salgo.

Y ejecuto:

newaliases

Listo, pruebenlo!!!

jueves, 12 de noviembre de 2009

Gentoo: courier-imap no reconoce los usuarios

mail home # smbldap-usershow uno
dn: uid=uno,ou=Users,dc=XXX,dc=com
uid: ssuarez
uidNumber: 522
gidNumber: 100
homeDirectory: /home/uno
shadowLastChange: 12440
shadowMax: 99999
shadowWarning: 7
userPassword: {CRYPT}BGVrxsbaDFmdQ
loginShell: /bin/false
cn: Uno
mail: uno@XXX.com
sn: uno
gecos: uno
mailuserquota: 0
objectClass: posixAccount,inetOrgPerson,shadowAccount,mailAccount
mailbox: /home/uno/Maildir/
mailenable: OK

mail home # smbldap-usershow dos
dn: uid=dos,ou=Users,dc=XXX,dc=com
uid: dos
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/dos
shadowWarning: 7
loginShell: /bin/false
cn: dos
mail: dos@XXX.com
sn: dos
gecos: dos
mailuserquota: 0
objectClass: posixAccount,inetOrgPerson,shadowAccount,mailAccount
mailbox: /home/dos/Maildir/
mailenable: OK
userPassword: {CRYPT}gWnBGqyb6LPRE
shadowLastChange: 14560
shadowMax: 9999

Gentoo: MDS 2.3.2 No quiere arrancar

Resulta que necesito actualiza Mandriva MDS en gentoo, estaba usando la version 2.3.1, pero por alguna razon ya no queria correr, ya que habia actualizado varios paquetes.

Bien decidi reinstalar la version 2.3.2 pero o sorpresa no ha querido correr, estuvo marcando varios errores, si leen el post anterior este fue uno de los motivos de correr el "revdep-rebuild" y por ello empezo todo esto.

Bien ahorita me esta marcando este error cuando trato de ejecutar el mds via consola:

./mmc-agent
/usr/lib/python2.6/site-packages/twisted/internet/_sslverify.py:5: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import itertools, md5
mmc-agent 2.3.2 starting...
Using Python 2.6.2 (r262:71600, Sep 20 2009, 23:33:16)
Using Python Twisted 8.2.0
Running as euid = 0, egid = 0
Importing available MMC plugins
/usr/lib/python2.6/site-packages/mmc/plugins/base/__init__.py:50: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
import sha
Can't bind to LDAP: invalid credentials.
Plugin base not loaded.
MMC agent can't run without the base plugin. Exiting.

Aqui al parecer es el ldap, vamos a ver...

miércoles, 11 de noviembre de 2009

Gentoo: Openldap Update Trono Samba PDC

Bien, actualice el servidor corriendo Gentoo 2010. Un revdep-rebuild hizo su desmadre, ahora resulta que varios parametros de Openldap ya no operan ejemplo:

Ahora corriendo slaptest me sale esto:

mail openldap # slaptest
/etc/openldap/slapd.conf: line 61: keyword is obsolete (ignored)
/etc/openldap/slapd.conf: line 63: keyword is obsolete (ignored)
bdb(dc=oakwest,dc=com): Program version 4.7 doesn't match environment version 4.5
bdb_db_open: database "dc=oakwest,dc=com" cannot be opened, err -30971. Restore from backup!
backend_startup_one (type=bdb, suffix="dc=oakwest,dc=com"): bi_db_open failed! (-30971)
slap_startup failed (test would succeed using the -u switch)

Esta es la version que instalo:

net-nds/openldap-2.4.19

Ya que borramos la parte de replica para eso de tener una ldap de respaldo:

slaptest
/etc/openldap/slapd.conf: line 63: keyword is obsolete (ignored)
bdb(dc=oakwest,dc=com): Program version 4.7 doesn't match environment version 4.5
bdb_db_open: database "dc=oakwest,dc=com" cannot be opened, err -30971. Restore from backup!
backend_startup_one (type=bdb, suffix="dc=oakwest,dc=com"): bi_db_open failed! (-30971)
slap_startup failed (test would succeed using the -u switch)

Aunque le demos el -u no arranca...

Lo cusioso es esto:

/usr/lib/openldap/slapd -d 1024
@(#) $OpenLDAP: slapd 2.4.19 (Nov 11 2009 22:54:23) $
root@mail:/var/tmp/portage/net-nds/openldap-2.4.19/work/openldap-2.4.19/servers/slapd
slapd starting

Ven si ejecuto el sistema a mano si arranca y vean donde aputa el ejecutable...

whereis slapd

slapd: /usr/share/man/man8/slapd.8.bz2

No da con el ejecutable, aqui esta el problema..!!!

lunes, 9 de noviembre de 2009

Ubuntu + Putty ssh con llaves!!!

Buenas tardes, esta vez vamos a hacer unas cosillas que por lo general deberia hacer un administrador de sistemas que tiene a su cargo varios equipos corriendo Linux/Unix.

En mi caso tengo varios servicios corriendo sobre LInux y otros sobre Unix, hablo de Unix por que FreeBSD es un Unix no Linux.

Bien, mi estacion de trabajo se basa en Ubuntu 9.04, y de ahi adminstro todos mis equipos, soy fan de putty, ssh es una bendicion del senor para nosotros los administradores de equipo Linux/Unix.

Por seguridad, es preferible accesar a nuestros servidores atraves de un canal seguro como ssh, no instalar nada referente a Xorg y por ultimo nunca accesar con ssh atraves de username + password.

Por que no falta el chistosito que va a querer tratar de entrar a nuestros equipos usando fuerza bruta, un password mezclado y con mas de 8 caracteres es bueno, pero para que permitir esto, nomas gasta nuestro preciado cpu.

Por ello el metodo de clave publica+clave privada es una gran solucion.

Vamos a empezar, ya tenemos instalado putty + putty-tools. En windows el puttygen es un cliente grafico, aqui en nuestros mundo Linux/Unix creo que es solo via consola, no problema estamos acostumbrados a estos pequenos inconvenientes, aunque tiene su gran ventaja...

Supongamos que en ubuntu mi usuario es "morrito", entonces abrimos una terminal y por default nos va a poner en el home folder del usuario "morrito".

Generamos un folder llamado keys:

mkdir keys

Accesamos ese folder:

cd keys

Lo que sigue es la generacion de las llaves, para ellos vamos a usar el comando puttygen con los siguientes paramatros:

-t rsa
-b 1024
-O private
-o nombrearchivo

Asi que lo hacemos:

morrito@ubuntu:~/keys$ puttygen -t rsa -b 1024 -O private -o ubuntu
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++
+++++
Enter passphrase to save key:
Re-enter passphrase to verify:

Pueden o no darle una password, yo en mi caso no lo deseo. Solo le doy enter+enter y listo, tengo un archivo llamado ubuntu con mi llave publica y privada:

Al abrirlo tenemos algo asi:

cat ubuntu

PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20091109
Public-Lines: 4
AAAAB3NzaC1yc2EAAAABJQAAAIBzhdRANoU6VDfC+HxZaLnpI8FsJNKpZbENyh2e
3ar5m+WL+8XW2vFG3SADN0EJFBcuJmF3pz6cSyb18k0AeX5Z1yfOwA2tZhlYQIet
qF/cP2JMgYIOGZWZF24cXC5BvZ0xHIjPaI7SIMxpa14HRy0T32rrL3Gwl81PrqMa
e06cUw==
Private-Lines: 8
AAAAgAY+ldn1G/VQqRF1NydtcdVAM/gB/YydtosfrpL3OaygpJ/Ia48SwO8S3yLE
t2hGRnEygc8dzAhyw9Xxa/IwFKrVzR3jTP1RQ0mnNJJJNt5QyMEk85RkI8fbTgLn
zz4y3PPvaKvLtDHtXdvXlXvLxqojd8d12DnzZkSvTR9bOSX9AAAAQQDfhwr3zpGE
2ty7HmuJoKhTZO6zwnhtZn0e+9lHGYYZ6Rf3imsYr7KaU9Z0Z35UdDm8YEgtAFgo
SKBXGQ1Un/cPAAAAQQCEThrbLs2B4ajwHK/USCMVe2iiJVxvmSqfTw1Umrz2vHhX
7foXWYPfMC/iqRa43Y6S4rj+UShYoLisd0kPDWZ9AAAAQEkmMSahz7hVq8qPrvJP
Xe0hDSFK79Ll+gMy3Hnao1ls7/7SSq8qF3m5kYyHnpaRZAhCx7/zuqk5OuYO5h0i
f2Q=

Aqui tenemos dos secciones, la seccion publica y privada, vamos separando las secciones, empezamos por seccion publica:

Public-Lines: 4
AAAAB3NzaC1yc2EAAAABJQAAAIBzhdRANoU6VDfC+HxZaLnpI8FsJNKpZbENyh2e
3ar5m+WL+8XW2vFG3SADN0EJFBcuJmF3pz6cSyb18k0AeX5Z1yfOwA2tZhlYQIet
qF/cP2JMgYIOGZWZF24cXC5BvZ0xHIjPaI7SIMxpa14HRy0T32rrL3Gwl81PrqMa
e06cUw==

Ahora la seccion privada:

Private-Lines: 8
AAAAgAY+ldn1G/VQqRF1NydtcdVAM/gB/YydtosfrpL3OaygpJ/Ia48SwO8S3yLE
t2hGRnEygc8dzAhyw9Xxa/IwFKrVzR3jTP1RQ0mnNJJJNt5QyMEk85RkI8fbTgLn
zz4y3PPvaKvLtDHtXdvXlXvLxqojd8d12DnzZkSvTR9bOSX9AAAAQQDfhwr3zpGE
2ty7HmuJoKhTZO6zwnhtZn0e+9lHGYYZ6Rf3imsYr7KaU9Z0Z35UdDm8YEgtAFgo
SKBXGQ1Un/cPAAAAQQCEThrbLs2B4ajwHK/USCMVe2iiJVxvmSqfTw1Umrz2vHhX
7foXWYPfMC/iqRa43Y6S4rj+UShYoLisd0kPDWZ9AAAAQEkmMSahz7hVq8qPrvJP
Xe0hDSFK79Ll+gMy3Hnao1ls7/7SSq8qF3m5kYyHnpaRZAhCx7/zuqk5OuYO5h0i
f2Q=

A nuestros servidores remotos, vamos a darle la seccion publica y nos vamos a firmar con la seccion privada.

Actualmente accesamos via ssh atraves de usuario+password, lo tenemos que hacer para poder llevar a cabo esto.

Accesamos a nuestro servidor corriendo centos 5.4, lo hacemos con root, ya dentro de la consola, nos vamos a el foder de ssh:

cd .ssh

Ahi dentro acreamos un archivo de nombre "authorized_keys":

touch authorized_keys

lo abrimos y estar limpio, ahi dentro pegamos la seccion publica de nuestra nueva llave y la dejamos toda en una sola linea:

AAAAB3NzaC1yc2EAAAABJQAAAIBzhdRANoU6VDfC+HxZaLnpI8FsJNKpZbENyh2e
3ar5m+WL+8XW2vFG3SADN0EJFBcuJmF3pz6cSyb18k0AeX5Z1yfOwA2tZhlYQIet
qF/cP2JMgYIOGZWZF24cXC5BvZ0xHIjPaI7SIMxpa14HRy0T32rrL3Gwl81PrqMa
e06cUw==

Recordar, debe quedar todo en una sola linea, al inicio de la linea deben agregar este parametro:

ssh-rsa

Entonces quedaria asi:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBzhdRANoU6VDfC+HxZaLnpI8FsJNKpZbENyh2e
3ar5m+WL+8XW2vFG3SADN0EJFBcuJmF3pz6cSyb18k0AeX5Z1yfOwA2tZhlYQIet
qF/cP2JMgYIOGZWZF24cXC5BvZ0xHIjPaI7SIMxpa14HRy0T32rrL3Gwl81PrqMa
e06cUw==

No importa que aqui no se observe, pero en su archivo debe todo quedar en una sola linea, y debe iniciar con el parametro "ssh-rsa", seguido de un espacio y enseguida toda su firma.

Salvamos.

Lo que sigue es abrir el putty, configurar la cuenta para su cliente, ahora lo que cambia es como autentificarse, aqui se van a la seccion: Connection->SSH->Auth.

Ahi viene un campo donde le vamos a dar la clave privada de nosotros, recuerda el archivo de nombre "ubuntu"?

Bueno pues ese archivo lo guardamos en /home/morrito/keys/, se lo damos a putty.
Nos vamos a la seccion: Connection->Data y ahi le ponemos el nombre del usuario del servidor remoto con el cual nos deseamos autentificar, en nuestro caso es "root".

Salvamos y ahora si, cuando nos logiemos no nos debe pedir ya mas el usuario o password, se tiene que ir derechito.

Esta es la forma mas segura de accesar via ssh a un servidor.

Lo mismo hacemos con FreeBSD, esto me ha funcionado con Gentoo, FreeBSD, Centos, tanto desde Windows como Linux.

Saludos!!!

domingo, 8 de noviembre de 2009

FreeBSD 7.X: Indices en Mysql 5.1.x

Tenemos la siguiente tabla: Tres.

mysql: DESCRIBE Tres;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| StatusID | int(11) | NO | PRI | NULL | auto_increment |
| SOID | int(6) | NO | PRI | NULL | |
| IP_ADDR | varchar(20) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+

Ahora vamos a ver los indices:

mysql> SHOW INDEXES FROM Tres;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Tres | 0 | PRIMARY | 1 | Status_ID | A | 12 | NULL | NULL | | BTREE | |
| Tres | 1 | SOID | 1 | SOID | A | NULL | NULL | NULL | | BTREE | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
2 rows in set (0.00 sec)

Tenemos por indice a el Status_ID es una tipo de dato int de 6 digitos, y por default es indice.
Despues vemos a SOID varchar de 6 caracteres, no es Key pero es indice, este valor es nuestra clave, ya que nosotros vamos a hacer busquedas basadas en este campo.

Y ademas no es unico, es un dato que se puede repetir mas de 1 vez.

Ya hemos capturado varios registros, vamos a verlos:

mysql> select * from Tres;
+-----------+-------+--------------+
| Status_ID | SOID | IP_ADDR |
+-----------+-------+--------------+
| 1 | 20000 | 192.168.1.1 |
| 2 | 20001 | 192.168.1.2 |
| 3 | 20002 | 192.168.1.3 |
| 4 | 20003 | 192.168.1.4 |
| 5 | 20004 | 192.168.1.5 |
| 6 | 20005 | 192.168.1.6 |
| 7 | 20006 | 192.168.1.7 |
| 8 | 20001 | 192.168.1.8 |
| 9 | 20002 | 192.168.1.9 |
| 10 | 20003 | 192.168.1.10 |
| 11 | 20001 | 192.168.1.11 |
| 12 | 20002 | 192.168.1.12 |
+-----------+-------+--------------+
12 rows in set (0.00 sec)

Tenemos que varios SOID se han repetido, vamos a ver si nuestros indices estan funcionando:

mysql> explain select * from Tres where SOID=20001;
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | Tres | ALL | SOID | NULL | NULL | NULL | 12 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)

Podemos ver que no, ya que la tabla en total tiene hasta ahorita 12 registros, y cuando hacemos esta busqueda usando"WHERE" el motor de mysql esta haciendo un barrido total a la tabla, por lo tanto no esta usando nuestros indices, sabiendo que SOID es un indice.

El problema radica en que como SOID es un tipo varchar, debemos cerrar entre comillas el valor para que mysql lo tome como lo que es, si no lo hacemos como en el caso anterior, lo toma como dato numerico, por ello falla.

Ahora vamos a ver la diferencia:

mysql> EXPLAIN select * from Tres where SOID="20001";
+----+-------------+-------+------+---------------+------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+-------+------+-------------+
| 1 | SIMPLE | Tres | ref | SOID | SOID | 8 | const | 3 | Using where |
+----+-------------+-------+------+---------------+------+---------+-------+------+-------------+
1 row in set (0.00 sec)

Vean, ahora si los uso, ya que solo nos estra regresando los 3 registros que tiene con ese valor, y este dato lo esta sacando de los indices, ya no tuvo que hacer un barrido completo a la tabla.

Esto salva preciado CPU, acceso a disco que sumado es tiempo de respuesta muy importante cuando estamos hablando de tablas con mas de 100,000 registros.

Hasta la proxima!!!

miércoles, 4 de noviembre de 2009

FreeBSD 7.X: phpMyAdmin 3.x

Esta ves le toca el turno a phpMyAdmin, ya estoy muy acostumbrado a usarlo, este se localiza en:

root#whereis phpmyadmin
phpmyadmin: /usr/ports/databases/phpmyadmin

Nos vamos hacia alla y ejecutamos:

root#make install clean

Nos va a salir la pantalla donde podemos agregar ciertas funcionalidades, yo en lo personal agrego todas, una vez que le damos click en el boton "OK" empieza la klabaza.

Ya que termina, este guarda sus archivos php en donde freebsd pone a apache:

/usr/local/www

Ingresamos a esa ruta...

cd /usr/local/www/phpMyAdmin

Una vez aqui dentro, dice el manual de phpMyAdmin que debemos crear un folder de nombre config, pero como estamos trabajando con el root, todo lo que hagamos se va a ser con los permisos para el root.

Apache se ejecuta con el usuario propio que es www y el grupo del mismo nombre, entonces una vez creado el folder "config" debemos cambiarle ciertos atributos a ese folder.

Algo asi:

mkdir config
chown www:www config
chmod 660 config

De aqui tenemos que agregar unos alias a apache apuntando a el folder de phpMyAdmin, agregamos algo asi:

Alias /phpMyAdmin /usr/local/www/phpMyAdmin

Allow from all
AllowOverride All


Reiniciamos apache y probamos.

/usr/local/etc/rc.d/apache22 start

Cuando apuntemos a apache en el navegador, debemos irnos a

http://ipserver/phpMyAdmin

Y nos debe arrojar la pantalla de logeo de phpMyAdmin, algo asi:


Lo que sigue es configurar nuestro primer servidor mysql, para ello es necesario agregar a el mismo path de navegador esto:

/setup/

Y nos debe dar una pantalla parecida a esto:


Aqui empezamos la configuracion, si les dice un error que no puede localizar el folder config, chequen sus permisos antes de continuar.

Dentro de ese folder, crean un archivo llamado config.ini.php e igual permisos para apache.

Le damos un click en el boton "New Server" y empezamos...

No hay mucho que hacerle, dan de alta los parametros que creanc convenientes, salvan y existe un boton que dice "Display", le dan un click y les arroja toda la configuracion que ustedes eligie ron, la copean y la pegan en el archivo que crearon arriba config.ini.php, salvan y copean ese archivo a la ruta principal:

cp config.ini.php /usr/local/www/phpMyAdmin/

Se van en su navegar a el folder inicial de phpMyAdmin y ahora si se logean con algun usuario que tengan en mysql y deben llegar a la pantalla principal de phpMyAdmin y les debe arrojar las base de datos que tienen.

Nos vemos!!!