Mostrando entradas con la etiqueta debian. Mostrar todas las entradas
Mostrando entradas con la etiqueta debian. Mostrar todas las entradas

Configuración de un entorno de trabajo con GIT

Cuando emprendemos el desarrollo de un sistema o de un sitio web, en el que participan dos o más personas, tenemos que organizarnos muy bien para evitar destruir con nuestros cambios el trabajo previo de los compañeros de proyecto. A pesar del nivel de sincronía y organización que se pueda alcanzar, frecuentemente surgen conflictos o dudas al trabajar en aspectos del proyecto muy cercanos entre si, por ejemplo cuando un desarrollador requiere modificar un archivo de código sobre el que viene trabajando un colega. La situación se complica cuando los involucrados no comparten un mismo entorno físico, por lo que el chat, correo o teléfono no mejoran el asunto. Es por ello que en estas circunstancias hay que recurrir a lo que se denomina un control de versiones, de los que existen varios, pero uno destaca especialmente por su origen: el GIT.

¿Qué es el GIT?

Git (pronunciado "guit") es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente. Al principio, Git se pensó como un motor de bajo nivel sobre el cual otros pudieran escribir la interfaz de usuario o front end como Cogito o StGIT. Sin embargo, Git se ha convertido desde entonces en un sistema de control de versiones con funcionalidad plena. Hay algunos proyectos de mucha relevancia que ya usan Git, en particular, el grupo de programación del núcleo Linux. (Wikipedia, 2017)

Manos a la obra

A continuación describiremos los pasos básicos para la configuración de un entorno de desarrollo conformado por al menos dos desarrolladores regido por el sistema de control de versiones GIT. Sin embargo esta metodología también sera aplicable para un programador solitario, ya que un control de versiones entre sus bondades ofrece un historial de versiones, por lo que se puede regresar a estados previos del desarrollo, en el caso de que los cambios efectuados no nos satisfagan.

En el servidor

Instalamos git. En el caso de Debian o Ubuntu

TERMINAL
  1. apt-get install git

En el caso de Fedora

TERMINAL
  1. yum install git-core

Crearemos el usuario git para que el repositorio principal se ubique en su directorio de trabajo, sin embargo se puede utilizar un usuario existente o crear uno distinto.

TERMINAL
  1. useradd git
  2. passwd git

Ahora creamos y configuramos el directorio donde se alojara el repositorio

TERMINAL
  1. cd ~
  2. mkdir repositorio.git
  3. cd repositorio.git
  4. git init --bare --shared
  5. mv hooks/post-update.sample hooks/post-update

Podemos usar el comportamiento por defecto del servicio git al momento de procesar la información proveniente de los clientes, o cambiarla por un esquema básico que se detalla a continuación:

Editamos el archivo hooks/post-update

TERMINAL
  1. nano hooks/post-update

Y realizamos el siguiente cambio:

ARCHIVO hooks/post-update
  1. # El parámetro $1 del script es el nombre del branch actualizado
  2. # Comparamos con master para actualizar el entorno de producción
  3. # y con test para actualizar el entorno de pruebas
  4. case " $1 " in
  5. *'refs/heads/master'*)
  6. echo "Pulling producción"
  7. unset GIT_DIR
  8. cd /var/www/repositorio || exit
  9. git pull origin master
  10. ;;
  11. esac
  12. case " $1 " in
  13. *'refs/heads/test'*)
  14. echo "Pulling pre-producción"
  15. unset GIT_DIR
  16. cd /var/www/repositorio-test || exit
  17. git pull origin test
  18. ;;
  19. esac
  20. exec git-update-server-info

En el cliente del desarrollador líder

Procedemos a configurar el repositorio del desarrollador líder, aquel que tiene la última palabra cuando surge un conflicto con los cambios que el equipo de desarrollo actualiza sobre el repositorio principal

TERMINAL
  1. apt-get install git
  2. cd ~
  3. mkdir repositorio.git
  4. cd repositorio.git
  5. git init
  6. git remote add origin usuario@servidor-ip:/home/usuario/repositorio.git

Ahora creamos o copiamos un archivo cualquiera en esta carpeta, por ejemplo:

TERMINAL
  1. touch prueba

Procedemos a hacer la sincronización inicial

TERMINAL
  1. git add *
  2. git commit -m “Subida inicial”
  3. git push origin master

En el cliente de los otros desarrolladores

Esta sera la configuración tipo a seguir por el resto del equipo de desarrollo

TERMINAL
  1. apt-get install git
  2. cd ~
  3. mkdir repositorio.git
  4. cd repositorio.git
  5. git init
  6. git remote add origin usuario@servidor-ip:/home/usuario/repositorio.git
  7. git pull origin master

En el servidor Web

Hasta ahora hemos configurado lo relativo a los repositorios, los pasos que se listan a continuación están enfocados hacia la construcción de un entorno adecuado para el desarrollo de un proyecto Web. El objetivo es que al momento de actualizar cambios hacia el repositorio central, estos también se reflejen en el servidor Web del ambiente de desarrollo de nuestro proyecto.

TERMINAL
  1. sudo usermod -G git www-data
  2. cd /var/www
  3. sudo mkdir repositorio
  4. sudo chown -R git:git repositorio
  5. sudo chmod 775 repositorio
  6. cd repositorio
  7. git init

En caso de tener un repositorio de pruebas, dentro del ambiente de desarrollo, se siguen estos pasos adicionales:

TERMINAL
  1. sudo usermod -G git www-data
  2. cd /var/www
  3. sudo mkdir repositorio-test
  4. sudo chown -R git:git repositorio-test
  5. sudo chmod 775 repositorio-test
  6. cd repositorio-test
  7. git init


REFERENCIA

Wikipedia. (18 de abril de 2017). Git. Recuperado de: https://es.wikipedia.org/wiki/Git



Debian: Conocer la versión del sistema desde la consola

Disponemos de tres métodos para conocer la versión del sistema operativo, utilizando el terminal

Primer método:

TERMINAL
  1. cat /etc/debian_version

Segundo método:

Instalar el paquete lsb, como root:

TERMINAL
  1. aptitude install lsb

Y luego:

TERMINAL
  1. lsb_release -a

Tercer método:

TERMINAL
  1. cat /etc/apt/sources.list

Y fijarse que versión aparece en los repositorios.



Debian: Cambiar la hora en el sistema y la BIOS

Para cambiar la hora y fecha del sistema, debemos ingresar como root y ejecutar el siguiente comando en un terminal:

TERMINAL
  1. date --set "2012-06-15 10:20"

Sin embargo, el sistema operativo cada cierto tiempo chequeara la hora y fecha guardadas en la BIOS y actualizara con estos valores la del sistema. Para evitarlo podemos configurar la fecha y hora en la BIOS, mediante la siguiente instrucción:

TERMINAL
  1. hwclock --set --date="2012-06-15 10:20"


Debian: Migración y respaldo de usuarios


Para migrar el listado de un usuarios de un equipo a otro, o simplemente para respaldarlo, tenemos dos opciones:


Primer Método

Ingresamos al sistema como root y creamos una carpeta para respaldar los archivos:

TERMINAL
  1. mkdir /root/backup/

Respaldamos o sacamos una copia de los archivos del sistema relativos a los usuarios, teniendo en consideración que por tratarse de Debian (o sus derivaciones) tomaremos como referencia el valor 1000, si fuera RedHat o familiares tomaremos como valor 500:

TERMINAL
  1. awk -F: '($3>=1000) && ($3!=65534)' /etc/passwd > /root/backup/passwd.backup
  2. awk -F: '($3>=1000) && ($3!=65534)' /etc/group > /root/backup/group.backup
  3. awk -F: '($3>=1000) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/backup/shadow.backup
  4. cp /etc/gshadow /root/backup/gshadow.backup
  5. tar -zcvpf /root/backup/home.tar.gz /home
  6. tar -zcvpf /root/backup/mail.tar.gz /var/spool/mail

Ahora hay que copiar el contenido de /root/backup/ en el nuevo sistema, un camino es:

TERMINAL
  1. scp -r /root/backup/ root@10.0.0.2:/root/

Segundo Método

Ingresamos al sistema como root, creamos una carpeta y respaldamos los archivos involucrados en el proceso para poder reversar en caso de error:

TERMINAL
  1. mkdir /root/backup-nuevo/
  2. cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/backup-nuevo/

Ahora agregamos la información de los archivos del sistema original en los archivos de configuración del nuevo sistema y copiamos el contenido del respaldo de /home y /var/spool/mail:

TERMINAL
  1. cd /root/backup/
  2. cat passwd.backup >> /etc/passwd
  3. cat group.backup >> /etc/group
  4. cat shadow.backup >> /etc/shadow
  5. cat gshadow.backup >> /etc/gshadow
  6. cd /
  7. tar -zxvf /root/backup/home.tar.gz
  8. tar -zxvf /root/backup/mail.tar.gz

Por último reiniciamos el sistema:

TERMINAL
  1. shutdown -r now


Linux: Clonación de máquinas en VirtualBox


"Oracle VM VirtualBox es un software de virtualización para arquitecturas x86, creado originalmente por la empresa alemana innotek GmbH. Actualmente es desarrollado por Oracle Corporation como parte de su familia de productos de virtualización. Por medio de esta aplicación es posible instalar sistemas operativos adicionales, conocidos como «sistemas invitados», dentro de otro sistema operativo «anfitrión», cada uno con su propio ambiente virtual." (Wikipedia, 2011)

Ejecutamos en un terminal:

TERMINAL
  1. VBoxManage clonevdi ruta_archivo_maquina_a_clonar ruta_archivo_maquina_nueva


REFERENCIA

Wikipedia. (19 de marzo de 2011). VirtualBox. Recuperado de: https://es.wikipedia.org/wiki/VirtualBox



Debian: Equivalente del autoexec.bat de MS-DOS


El equivalente del autoexec.bat de MS-DOS es el archivo /etc/rc.local. Se ejecuta después de acabado el proceso de arranque del sistema.


Debian: Evitar cambios en /etc/resolv.conf


Si hemos realizado cambios en el archivo /etc/resolv.conf y queremos evitar que el sistema operativo lo modifique, debemos ejecutar en el terminal:

TERMINAL
  1. sudo chattr +i /etc/resolv.conf


LDAP-Samba (Parte 3): Operaciones phpldapadmin


En la tercera entrega de la guiá relativa a LDAP-Samba, nos referimos a las opciones de configuración que se realizan mediante el paquete phplddapadmin.

En el navegador colocamos el siguiente URL:

http://ip_servidor_pdc/phpldapadmin

Conectarnos

Para conectarnos colocamos la siguiente credencial de ingreso

Usuario --> cn=admin,dc=cs,dc=inet

Password --> XXXXX

Crear unidades organizacionales

Expandimos el árbol dc=cs,dc=inet --> Create a child entry --> Organizational Unit

OPCIONES DE CONFIGURACIÓN

Organisational Unit: users

Repetir proceso para crear ou=machines y a ou=groups.

Mapear los 4 grupos principales

Expandimos el árbol dc=cs,dc=inet --> ou=groups --> Create a child entry --> Samba 3 Group Mappings

OPCIONES DE CONFIGURACIÓN

Group: sambausers

Windows Name: Domain Users

Samba SID: seleccionar el SID

Los grupos los ubicaremos a partir del GID 20000, por lo que deberá cambiarse este valor.

Expandimos el árbol dc=cs,dc=inet --> ou=groups --> cn=sambausers

OPCIONES DE CONFIGURACIÓN

gidNumber: 20001

sambaSID: S-1-5-21-2303635708-1500597228-3808285555-513

Repetir proceso para crear:

    sambaadmins - Domain Admins - 20002 - 512

    sambaguests - Domain Guests - 20003 - 514

    sambamachines - Domain Computers - 20004 - 515

Agregando usuarios

Expandimos el árbol dc=cs,dc=inet --> ou=users --> Create a child entry --> Samba3 Account

OPCIONES DE CONFIGURACIÓN

First name: Administrador

Last name: cs.inet

User ID: admin (este sera el login)

Samba SID: seleccionar el SID

Password: XXXXX

GID Number: sambaadmins

Primary Group ID: sambaadmins

Home directory: /home/users/admin

Los usuarios los ubicaremos a partir del UID 10000, por lo que deberá cambiarse este valor. Para este usuario en especifico (admin) utilizaremos UID = 0. Expandimos el árbol: dc=cs,dc=inet --> ou=users --> cn=Administrador cs.inet

OPCIONES DE CONFIGURACIÓN

uidNumber: 0

sambaSID: S-1-5-21-2303635708-1500597228-3808285555-0

Repetir el proceso para crear un usuario normal, para ello reemplazamos sambaadmins por sambausers y como uidNumber usamos un número de la secuencia 10000.

Para que los usuarios no puedan abrir una sesión en el servidor, expandir el arbol: dc=cs,dc=inet --> ou=users --> cn=Usuario Normal --> Add new attribute

OPCIONES DE CONFIGURACIÓN

Seleccionar loginShell: /bin/false

Por último

TERMINAL
  1. mkdir -p /home/users/usuario
  2. cp /etc/skel/.* /home/users/usuario
  3. chown -R usuario /home/users/usuario
  4. chgrp -R sambausers /home/users/usuario

Uniendo máquinas al dominio

Las máquinas las ubicaremos a partir del UID 30000 y pueden ser agregadas a través del proceso automático que se configuro en la instalación.


LDAP-Samba (Parte 1): Instalación


LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero/Simplificado de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también se considera una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas. (Wikipedia, 2010)

Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. De esta forma, es posible que computadoras con GNU/Linux, Mac OS X o Unix en general se vean como servidores o actúen como clientes en redes de Windows. Samba también permite validar usuarios haciendo de Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios compartidos y autentificar con su propio archivo de usuarios. (Wikipedia, 2010)

Para instalar un servidor de LDAP con soporte de Samba, debemos seguir los siguientes pasos:

TERMINAL
  1. aptitude install slapd ldap-utils

OPCIONES DE CONFIGURACIÓN DE aptitude install slapd ldap-utils

Cualquiera, será reconfigurado.

Continuando

TERMINAL
  1. dpkg-reconfigure slapd

OPCIONES DE CONFIGURACIÓN DE dpkg-reconfigure slapd

Omitir la configuración de OpenLDAP: no

Nombre de dominio: cs.inet

Nombre de organización: cms

Contraseña del admin: XXXXX

Confirme la contraseña del admin: XXXXX

Motor de base de datos a utilizar: BDB

Borrar la base de datos al purgar slapd: no

Mover la base de datos antigua: si

Permitir LDAP v2: si

Continuando

TERMINAL
  1. /etc/init.d/slapd restart

Para probar ejecutar en el terminal

TERMINAL
  1. ldapsearch -x -b "dc=cs,dc=inet"

Continuando

TERMINAL
  1. aptitude install apache2

Para probar consultar en el navegador la URL: http://ip_servidor_pdc

TERMINAL
  1. aptitude install smbldap-tools
  2. aptitude install phpldapadmin php5-ldap

Para probar consultar en el navegador la URL: http://ip_servidor_pdc/phpldapadmin

TERMINAL
  1. aptitude install build-essential
  2. cd /usr/src/
  3. wget http://sourceforge.net/projects/ldaputils/files/Contrib/mkntpwd/mkntpwd.tar.gz
  4. tar -xzvf mkntpwd.tar.gz
  5. make
  6. cp mkntpwd /usr/local/bin

Para probar ejecutar en el terminal

TERMINAL
  1. mkntpwd

Continuando

TERMINAL
  1. aptitude install samba samba-doc

OPCIONES DE CONFIGURACIÓN DE aptitude install samba samba-doc

Nombre del dominio: cs.inet

Usar passwords encriptados: si

Modificar smb.conf para que use la configuración WINS proveniente de DHCP: no

Continuando

TERMINAL
  1. cd /usr/share/doc/samba-doc/examples/LDAP
  2. gunzip samba.schema.gz
  3. cp samba.schema /etc/ldap/schema

Modificar /etc/ldap/slapd.conf según LDAP-Samba (Parte 2): Archivos de configuración

TERMINAL
  1. /etc/init.d/slapd restart

Aplicar Crear unidades organizacionales según LDAP-Samba (Parte 3): Operaciones phpldapadmin

TERMINAL
  1. mkdir -p /home/samba/netlogon
  2. mkdir -p /home/samba/profiles
  3. chmod 777 -R /home/samba/profiles

Modificar /etc/samba/smb.conf según LDAP-Samba (Parte 2): Archivos de configuración

Para probar ejecutar en el terminal y verificar que la configuración no tenga errores

TERMINAL
  1. testparm

Continuando

TERMINAL
  1. smbpasswd -w XXXXX
  2. /etc/init.d/samba restart

Para probar consultar en el navegador la URL: http://ip_servidor_pdc/phpldapadmin y verificar la entrada en el arbol sambaDomainName=CS.INET

Aplicar Mapear los 4 grupos principales según LDAP-Samba (Parte 3): Operaciones phpldapadmin

TERMINAL
  1. aptitude install libnss-ldap

OPCIONES DE CONFIGURACIÓN DE aptitude install libnss-ldap

Cualquiera, será reconfigurado.

Continuando

TERMINAL
  1. dpkg-reconfigure libnss-ldap

OPCIONES DE CONFIGURACIÓN DE dpkg-reconfigure libnss-ldap

Servidor de LDAP: ldap:///127.0.0.1

Nombre distintivo (DN): dc=cs,dc=inet

Versión de LDAP: 3

Se requiere usuario para la base de datos LDAP: no

Privilegios especiales de LDAP para root: si

Configuración leíble y escribible sólo para el propietario: si

Cuenta LDAP para root: cn=admin,dc=cs,dc=inet

Contraseña para la cuenta LDAP de root: XXXXX

Modificar /etc/nsswitch.conf según LDAP-Samba (Parte 2): Archivos de configuración

Para probar ejecutar en el terminal

TERMINAL
  1. getent group

Continuando

TERMINAL
  1. aptitude install libpam-ldap
  2. dpkg-reconfigure libpam-ldap

OPCIONES DE CONFIGURACIÓN DE dpkg-reconfigure libpam-ldap

Servidor de LDAP: ldap:///127.0.0.1

Nombre distintivo (DN): dc=cs,dc=inet

Versión de LDAP: 3

Make local root Database admin: si

Se requiere usuario para la base de datos LDAP: no

LDAP account for root: cn=admin,dc=cs,dc=inet

Contraseña para la cuenta LDAP de root: XXXXX

Local crypt to use when changing passwords: md5

Modificar /etc/pam.d/common-account, /etc/pam.d/common-auth y /etc/pam.d/common-password según LDAP-Samba (Parte 2): Archivos de configuración

TERMINAL
  1. aptitude install nscd
  2. /etc/init.d/samba restart

Aplicar Agregando usuarios según LDAP-Samba (Parte 3): Operaciones phpldapadmin

Para probar ejecutar en el terminal

TERMINAL
  1. getent passwd

Continuando

TERMINAL
  1. cd /usr/share/doc/smbldap-tools/examples
  2. cp smbldap.conf.gz smbldap_bind.conf /etc/smbldap-tools
  3. cd /etc/smbldap-tools
  4. gunzip smbldap.conf.gz
  5. chown root:root *
  6. chmod 600 *

Modificar /etc/smbldap-tools/smbldap_bind.conf y /etc/smbldap_tools/smbldap.conf según LDAP-Samba (Parte 2): Archivos de configuración

Aplicar Uniendo máquinas al dominio según LDAP-Samba (Parte 3): Operaciones phpldapadmin


REFERENCIA

Wikipedia. (18 de agosoto de 2010). Protocolo Ligero de Acceso a Directorios. Recuperado de: https://es.wikipedia.org/wiki/Protocolo_Ligero_de_Acceso_a_Directorios

Wikipedia. (18 de agosoto de 2010). Samba (programa). Recuperado de: https://es.wikipedia.org/wiki/Samba_(programa)



LDAP-Samba (Parte 2): Archivos de configuración


Continuando con la guía de instalación de LDAP-Samba, mostramos el contenido de los archivos de configuración. El texto en negrillas indica los parámetros que se deben personalizar


ARCHIVO /etc/ldap/slapd.conf
  1. allow bind_v2
  2. include /etc/ldap/schema/core.schema
  3. include /etc/ldap/schema/cosine.schema
  4. include /etc/ldap/schema/nis.schema
  5. include /etc/ldap/schema/inetorgperson.schema
  6. include /etc/ldap/schema/samba.schema
  7. pidfile /var/run/slapd/slapd.pid
  8. argsfile /var/run/slapd/slapd.args
  9. loglevel none
  10. modulepath /usr/lib/ldap
  11. moduleload back_bdb
  12. sizelimit 500
  13. tool-threads 1
  14. backend bdb
  15. database bdb
  16. suffix "dc=cs,dc=inet"
  17. directory "/var/lib/ldap"
  18. dbconfig set_cachesize 0 2097152 0
  19. dbconfig set_lk_max_objects 1500
  20. dbconfig set_lk_max_locks 1500
  21. dbconfig set_lk_max_lockers 1500
  22. index objectClass eq
  23. lastmod on
  24. checkpoint 512 30
  25. access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
  26.     by dn="cn=admin,dc=cs,dc=inet" write
  27.     by anonymous auth
  28.     by self write
  29.     by * none
  30. access to dn.base="" by * read
  31. access to *
  32.     by dn="cn=admin,dc=cs,dc=inet" write
  33.     by * read


ARCHIVO /etc/samba/smb.conf
  1. [global]
  2. ### Configuracion basica del servidor ###
  3. workgroup = cs.inet
  4. netbios name = servidor
  5. server string = Samba PDC Version %v
  6. socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
  7. ### Configuracion para que la maquina sea el PDC master ###
  8. os level = 65
  9. preferred master = yes
  10. local master = yes
  11. domain master = yes
  12. domain logons = yes
  13. ### Configuracion de seguridad y conexion ###
  14. security = user
  15. guest ok = no
  16. encrypt passwords = yes
  17. null passwords = no
  18. hosts allow = 127.0.0.1 10.0.0.0/255.255.255.0
  19. wins support = yes
  20. name resolve order = wins lmhosts host bcast
  21. dns proxy = no
  22. time server = yes
  23. ### Otras configuraciones varias para SAMBA ###
  24. log file = /var/log/samba/log.%m
  25. log level = 2
  26. max log size = 50
  27. hide unreadable = yes
  28. hide dot files = yes
  29. panic action = /usr/share/samba/panic-action %d
  30. ### Samba en castellano y compatible con Windows NT
  31. # Elimina problemas de acentos entre carpetas windows y samba
  32. dos charset = 850
  33. unix charset = iso-8859-15
  34. ### Parametros para el soporte de LDAP ###
  35. passdb backend = ldapsam:ldap://127.0.0.1
  36. ldap suffix = dc=cs,dc=inet
  37. ldap machine suffix = ou=machines
  38. ldap user suffix = ou=users
  39. ldap group suffix = ou=groups
  40. ldap admin dn = cn=admin,dc=cs,dc=inet
  41. ldap delete dn = no
  42. enable privileges = yes
  43. ;Para permitir a los usuarios cambiar su clave desde Windows
  44. ldap password sync = yes
  45. ### Perfiles moviles de usuario, carpeta home y script de inicio ###
  46. # Si no deseamos tener perfiles móviles comentar las lineas:
  47. # logon home
  48. # logon path
  49. logon home = \\%L\%U\.profile
  50. logon drive = H:
  51. logon path = \\%L\profiles\%U
  52. logon script = %U.bat OR netlogon.bat
  53. ### Script para automatizar la adicion de cuentas de maquinas ###
  54. ### al arbol LDAP cuando estas se unan por primera vez al dominio ###
  55. add machine script = /usr/sbin/smbldap-useradd -w "%u"
  56. ### Impresion ###
  57. load printers = yes
  58. printcap name = /etc/printcap
  59. printing = cups
  60. printcap name = cups
  61. ; Si quiero que el grupo sambaadmins pueda administrar las impresoras
  62. ; printer admin = @sambaadmins
  63. ### Recursos SAMBA ###
  64. # Ruta en donde se alojaran el(los) script(s) de inicio
  65. [netlogon]
  66. comment = Network Logon Service
  67. path = /home/samba/netlogon
  68. guest ok = no
  69. writable = no
  70. browseable = no
  71. share modes = no
  72. # Carpeta en donde se guardan los perfiles moviles de los usuarios
  73. # Si no deseamos tener perfiles móviles comentar todo este grupo.
  74. [profiles]
  75. ; comment = Perfiles de Usuarios
  76. ; path = /home/samba/profiles
  77. ; writeable = yes
  78. ; browseable = no
  79. ; guest ok = no
  80. ; hide files = /desktop.ini/ntuser.ini/NTUSER.*/
  81. ; create mask = 0600
  82. ; directory mask = 0700
  83. ; csc policy = disable
  84. # Impresoras
  85. [printers]
  86. comment = Impresoras
  87. browseable = no
  88. path = /var/spool/samba
  89. printable = yes
  90. public = no
  91. writable = no
  92. create mode = 0700
  93. # Los clientes Windows buscan este recurso como fuente de drivers
  94. [print$]
  95. comment = Drivers de Impresoras
  96. path = /var/lib/samba/printers
  97. browseable = yes
  98. read only = yes
  99. guest ok = no
  100. # carpetas home de los usuarios
  101. [homes]
  102. path = /home/users/%U
  103. comment = Carpetas HOME
  104. browseable = no
  105. writeable = yes
  106. valid users = %S
  107. read only = no
  108. guest ok = no
  109. inherit permissions = yes
  110. # Este es un recurso que solo debe ser accesible
  111. # para un grupo POSIX especial llamado sysfox
  112. # Si no necesitamos grupo POSIX comentar
  113. ;[sysfox]
  114. ; comment = Directorio de Sistemas en Fox
  115. ; path = /home/posix/sysfox
  116. ; writeable = yes
  117. ; delete readonly = yes
  118. ; valid users = @sysfox
  119. ; write list = @sysfox
  120. ; force group = sysfox
  121. ; browseable = yes
  122. ; create mask = 0770
  123. ; directory mask = 0770
  124. # Este recurso es por si quiero compartir la unidad de CD
  125. ;[cdrom]
  126. ­ ; comment = Samba server CD
  127. ; writable = no
  128. ; locking = no
  129. ; path = /media/cdrom0
  130. ; public = yes
  131. ; Lo siguiente es para auto-montar el CD cada vez que es introducido y desmontarlo
  132. ; cuando se termina la conexión al servidor.
  133. ; Para que esto trabaje, el archivo /etc/fstab debe contener una
  134. ; entrada así: /dev/hdc0 /media/cdrom iso9660 defaults,noauto,ro,user 0 0
  135. ;
  136. ; preexec = /bin/mount /cdrom
  137. ; postexec = /bin/umount /cdrom


ARCHIVO /etc/nsswitch.conf
  1. # /etc/nsswitch.conf
  2. #
  3. # Example configuration of GNU Name Service Switch functionality.
  4. # If you have the `glibc-doc-reference' and `info' packages installed, try:
  5. # `info libc "Name Service Switch"' for information about this file.
  6. passwd: compat ldap
  7. group: compat ldap
  8. shadow: compat ldap
  9. hosts: files dns
  10. networks: files
  11. protocols: db files
  12. services: db files
  13. ethers: db files
  14. rpc: db files
  15. netgroup: nis


ARCHIVO /etc/pam.d/common-account
  1. #
  2. # /etc/pam.d/common-account - authorization settings common to all services
  3. #
  4. # This file is included from other service-specific PAM config files,
  5. # and should contain a list of the authorization modules that define
  6. # the central access policy for use on the system. The default is to
  7. # only deny service to users whose accounts are expired in /etc/shadow.
  8. #account required pam_unix.so
  9. account sufficient pam_ldap.so
  10. account required pam_unix.so try_first_pass


ARCHIVO /etc/pam.d/common-password
  1. password sufficient pam_ldap.so
  2. password required pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass


ARCHIVO /etc/smbldap-tools/smbldap_bind.conf
  1. ############################
  2. # Credential Configuration #
  3. ############################
  4. # Notes: you can specify two differents configuration if you use a
  5. # master ldap for writing access and a slave ldap server for reading access
  6. # By default, we will use the same DN (so it will work for standard Samba
  7. # release)
  8. slaveDN="cn=admin,dc=cs,dc=inet"
  9. slavePw="XXXXX"
  10. masterDN="cn=admin,dc=cs,dc=inet"
  11. masterPw="XXXXX"


ARCHIVO /etc/smbldap-tools/smbldap.conf
  1. ## General Configuration
  2. SID="S-1-5-21-2303635708-1500597228-3808285555"
  3. sambaDomain="cs.inet"
  4. ## LDAP Configuration
  5. slaveLDAP="127.0.0.1"
  6. slavePort="389"
  7. masterLDAP="127.0.0.1"
  8. masterPort="389"
  9. ldapTLS="0"
  10. verify="none"
  11. suffix="dc=cs,dc=inet"
  12. usersdn="ou=users,${suffix}"
  13. computersdn="ou=machines,${suffix}"
  14. groupsdn="ou=groups,${suffix}"
  15. sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
  16. scope="sub"
  17. hash_encrypt="MD5"
  18. crypt_salt_format="%s"
  19. ## Unix Accounts Configuration
  20. userLoginShell="/bin/false"
  21. userHome="/home/users/%U"
  22. userHomeDirectoryMode="700"
  23. userGecos="System User"
  24. defaultUserGid="515"
  25. defaultComputerGid="20003"
  26. skeletonDir="/etc/skel"
  27. defaultMaxPasswordAge="45"
  28. ## SAMBA Configuration
  29. userSmbHome=""
  30. userProfile=""
  31. userHomeDrive="H:"
  32. ## SMBLDAP-TOOLS Configuration
  33. with_smbpasswd="0"
  34. smbpasswd="/usr/bin/smbpasswd"
  35. with_slappasswd="0"
  36. slappasswd="/usr/sbin/slappasswd"


Debian: Instalación de paquetes .deb


La extensión .deb es la utilizada para el formato de paquetes de software de Debian.

Estos paquetes contienen tres archivos:
  • debian-binary - número de versión del formato
  • debcontrol.tar.gz - toda la metainformación del paquete
  • data.tar.gz - los archivos que se instalan

Para instalar:

TERMINAL
  1. sudo dpkg -i nombredelpaquete.deb

Para desinstalar:

TERMINAL
  1. sudo dpkg -r nombredelpaquete


Debian: Instalación de un servidor de correo (Postfix - Dovecot)


Postfix es un MTA (Mail Transfer Agent), una alternativa al sendmail. Dovecot es un servidor de POP3 e IMAP. La configuración expuesta, en esta entrada, esta pensada en el envío de correos dentro de una red local, para usarlo externamente sera necesario instalar autenticación SASL con TLS.

Primero instalamos Postfix:

TERMINAL
  1. aptitude install postfix

Cuando pregunte seleccionamos la opción internet como tipo de servidor. El archivo de configuración del postfix esta en /etc/postfix/main.cf

Segundo instalamos Dovecot:

TERMINAL
  1. aptitude install dovecot-imapd dovecot-pop3d dovecot-common

El archivo de configuración de dovecot se encuentra en /etc/dovecot/dovecot.conf. Ahora debemos modificarlo.

TERMINAL
  1. nano /etc/dovecot/dovecot.conf

ARCHIVO /etc/dovecot/dovecot.conf
  1. protocols = pop3 imap
  2. disable_plaintext_auth = no

Reiniciamos el servicio.

TERMINAL
  1. /etc/init.d/dovecot restart


Debian: SSH sin contraseña


Si frecuentemente nos conectamos a otro equipo vía SSH, o hemos definido un proceso que se ejecuta automáticamente y de manera desatendida, podemos valernos de este método para evitar que al realizar la conexión el sistema nos solicite la contraseña.

Nos referiremos a cliente como la maquina que se quiere conectar al servidor, sin que este último le solicite clave.

Editamos el archivo /etc/ssh/sshd_config

TERMINAL
  1. nano /etc/ssh/sshd_config

Verificamos la presencia de estas lineas:

ARCHIVO /etc/ssh/sshd_config
  1. RSAAuthentication yes
  2. PubkeyAuthentication yes

Luego verificar si en el cliente están creadas las llaves publicas RSA y DSA

TERMINAL
  1. ls ~/.ssh

En caso de estar creadas, deberíamos observar estos archivos:

id_rsa.pub
id_dsa.pub

En caso de no estar creadas, ejecutar:

TERMINAL
  1. ssh-keygen -t rsa
  2. ssh-keygen -t dsa
  3. ssh-add

Ahora la idea es copiar el contenido de los archivos id_rsa.pub e id_dsa.pub dentro del archivo ~/.ssh/authorized_keys en el servidor.

En el cliente:

TERMINAL
  1. scp ~/.ssh/id_rsa.pub usuario@servidor:.ssh/1.pub
  2. scp ~/.ssh/id_dsa.pub usuario@servidor:.ssh/2.pub

En el servidor:

TERMINAL
  1. cd .ssh/
  2. cat 1.pub >> authorized_keys
  3. cat 2.pub >> authorized_keys


Debian: SSH - En caso de cambio de identidad de un host


Debido a algún cambio en el host remoto al que intentamos conectarnos, como por ejemplo que le hayan reinstalado el sistema operativo, su clave pública puede cambiar, lo que ocasiona que al intentar conectarnos dicha clave no se corresponda con la que tenemos almacenada, por lo que saldrá un mensaje de advertencia de una posible suplantación de identidad.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Someone could be eavesdropping on you right now (man-in-the-middle attack)!

It is also possible that the RSA host key has just been changed.

The fingerprint for the RSA key sent by the remote host is

c6:70:0f:ff:2d:a7:40:b8:82:e5:ed:35:b4:d6:77:ca.

Please contact your system administrator.

Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.

Offending key in /home/user/.ssh/known_hosts:8

RSA host key for server has changed and you have requested strict checking.

Host key verification failed.

En caso de que en efecto estemos seguros de que no se trata de una suplantación, podemos editar el archivo donde se almacenan las claves publicas de los host a los cuales nos hemos conectado, y borrar la linea problemática, que en el caso de este ejemplo es la 8.

TERMINAL
  1. nano ~/.ssh/known_hosts

Un método alternativo es

TERMINAL
  1. ssh-keygen -R hostname


Debian: Configuración de puertos locales


En informática, un puerto es una interfaz a través de la cual se pueden enviar y recibir los diferentes tipos de datos. La interfaz puede ser de tipo física (hardware) o puede ser a nivel lógico o de software, en cuyo caso se usa frecuentemente el término puerto lógico (por ejemplo, los puertos de redes que permiten la transmisión de datos entre diferentes computadoras). (Wikipedia, 2009)

El rango de puertos locales se define dentro del archivo /proc/sys/net/ipv4/ip_local_port_range:

TERMINAL
  1. nano /proc/sys/net/ipv4/ip_local_port_range

Efectuamos el siguiente cambio:

ARCHIVO /proc/sys/net/ipv4/ip_local_port_range
  1. ip_inicial ip_final


REFERENCIA

Wikipedia (16 de diciembre de 2009). Puerto (informática). Recuperado de: https://es.wikipedia.org/wiki/Puerto_(informática)



Debian: Colorear los directorios


Para colorear los directorios que se despliegan con el comando ls debemos editar el archivo ~/.bashrc que contiene los lineamientos de la configuración del shell:

TERMINAL
  1. nano ~/.bashrc

Efectuamos los siguientes cambios:

ARCHIVO ~/.bashrc
  1. export LS_OPTIONS='--color=auto'
  2. eval "'dircolors'"
  3. alias ls='ls $LS_OPTIONS'

Cerramos la sesion del usuario, para que los cambios surtan efecto

TERMINAL
  1. logout


Webmin: bloqueo de acceso por IP


Webmin es una herramienta de configuración de sistemas accesible vía web para sistemas Unix, como GNU/Linux y OpenSolaris, GNU/Linux. Con él se pueden configurar aspectos internos de muchos sistemas operativos, como usuarios, cuotas de espacio, servicios, archivos de configuración, apagado del equipo, etcétera, así como modificar y controlar muchas aplicaciones libres, como el servidor web Apache, PHP, MySQL, DNS, Samba, DHCP, entre otros. (Wikipedia, 2009)

Para seleccionar que IPs pueden acceder a webmin, se debe:

Editamos el archivo de configuración /etc/webmin/miniserv.conf

TERMINAL
  1. nano /etc/webmin/miniserv.conf

Efectuamos el siguiente cambio:

ARCHIVO /etc/webmin/miniserv.conf
  1. allow=ip1 ip2 ip3

Reiniciamos el servicio

TERMINAL
  1. /etc/init.d/webmin restart

 

REFERENCIA

Wikipedia. (8 de septiembre de 2009). Webmin. Recuperado de: https://es.wikipedia.org/wiki/Webmin



Debian: Interfaces de red


Comandos Básicos


TERMINAL
  1. ifconfig

Muestra información sobre las interfaces de red activas

TERMINAL
  1. ifconfig -a

Muestra información sobre las interfaces de red activas

TERMINAL
  1. ifconfig eth0

Muestra información sobre una interfaz de red especifica

TERMINAL
  1. ifconfig eth0 10.0.0.2 netmask 255.255.255.0

Configura temporalmente la dirección ip y la mascara de red de una interfaz. Este cambio se pierde al reiniciar el servicio de red

TERMINAL
  1. ifconfig eth0 down

Desactiva una interfaz de red

TERMINAL
  1. ifconfig eth0 up

Activa una interfaz de red

TERMINAL
  1. ifdown eth0

Desactiva una interfaz de red

TERMINAL
  1. ifup eth0

Activa una interfaz de red basándose en la configuración del archivo /etc/network/interfaces

TERMINAL
  1. ping 10.0.0.1

Verifica el estado de la conexión, enviando un paquete a la dirección ip (o url) indicada y esperando un paquete de respuesta. Si se especifica el parámetro -c# solo se enviaran # paquetes, de no especificarse mandara indefinidamente paquetes hasta que se interrumpa con CTRL-C

TERMINAL
  1. route

Muestra la tabla de rutas, donde se especifica que red se accede desde cada interfaz

TERMINAL
  1. route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1 dev eth0

Agrega una ruta a la tabla con las especificaciones indicadas

TERMINAL
  1. route del -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1

Elimina la ruta de la tabla que concuerda con las especificaciones indicadas. Deben especificarse todas las características que se indican en la entrada de la tabla, de lo contrario no procede la eliminación

 

Configuración de una IP fija

Para cambiar la dirección IP del sistema de manera permanente se deben seguir los siguientes pasos:

Listamos el archivo de configuración de las interfaces

TERMINAL
  1. cat /etc/network/interfaces

TERMINAL
  1. auto eth0
  2. iface eth0 inet dhcp

Ahora reemplazamos las lineas anteriores por las siguientes, de acuerdo a los valores requeridos

TERMINAL
  1. nano /etc/network/interfaces

Efectuamos estos cambios

ARCHIVO /etc/network/interfaces
  1. auto eth0
  2. iface eth0 inet static
  3. address 10.0.0.2
  4. netmask 255.255.255.0
  5. gateway 10.0.0.1
  6. network 10.0.0.0 #opcional, no es necesaria
  7. broadcast 10.0.0.255 #opcional, no es necesaria

Reiniciamos el servicio de red

TERMINAL
  1. /etc/init.d/networking restart

 

Debian: Recuperación del password de root


En caso de no recordar la clave de root de un sistema, se deben seguir los siguientes pasos:

Primero tenemos que conseguir un cd live y arrancar desde este.

Una vez iniciado el cd live, montamos el dispositivo que representa la partición del sistema en cuestión, en un directorio por ejemplo en /mnt

TERMINAL
  1. mount /dev/hda1 /mnt

Ahora cambiamos el sistema raíz, al que se encuentra en el dispositivo recién montado

TERMINAL
  1. chroot /mnt

Inicializamos el password de root

TERMINAL
  1. passwd -d root

O alternativamente podemos definir uno nuevo

TERMINAL
  1. passwd root

Retiramos el cd y reiniciamos

TERMINAL
  1. init 6

 

Debian: Configuración de repositorios


Para configurar los repositorios en Debian debemos editar el archivo /etc/apt/sources.list que contiene el listado de repositorios que buscara el sistema:

TERMINAL
  1. nano /etc/apt/sources.list

Realizamos los siguientes cambios:

ARCHIVO /etc/apt/sources.list
  1. #deb file:/home/repositorio  -->  ejemplo de uso de file
  2. deb http://ftp.us.debian.org/debian/ lenny main contrib non-free
  3. deb-src http://ftp.us.debian.org/debian/ lenny main
  4. deb http://security.debian.org/ lenny/updates main contrib non-free
  5. deb-src http://security.debian.org/ lenny/updates main

Cada linea de este archivo representa un repositorio y su sintaxis es:

deb uri distribucion [componentes]

deb: indica que el repositorio contiene paquetes binarios, si colocamos en su lugar db-src indica que contiene las fuentes o códigos.

uri: indica la dirección del repositorio, este puede ser del tipo file (en el PC), cdrom, http, ftp, copy (igual que file pero los archivos son guardados en el cache de apt), rsh o ssh.

distribucion: indica el nombre código de la distribución o su nombre genérico: stable, testing, unstable.

componentes: indica las secciones del repositorio que se incluiran: main, contrib, non-free

 

Comandos Básicos


TERMINAL
  1. aptitude update

Actualiza la lista de paquetes disponibles desde los repositorios

TERMINAL
  1. aptitude safe-upgrade

Actualiza los paquetes instalados bajo un criterio conservador

TERMINAL
  1. aptitude full-upgrade

Actualiza los paquetes instalados

TERMINAL
  1. aptitude search patron_busqueda

Busca el patrón de búsqueda en los repositorios

TERMINAL
  1. aptitude install paquete

Instala el paquete

TERMINAL
  1. aptitude download paquete

Descarga el paquete .deb al directorio actual

TERMINAL
  1. aptitude remove paquete

Elimina el paquete

TERMINAL
  1. aptitude purge paquete

Elimina el paquete y sus archivos de datos y configuración

TERMINAL
  1. aptitude show paquete

Proporciona información detallada del paquete

 

Notas

  • Si en lugar de lenny colocamos stable, el repositorio apuntara automáticamente a la distribución estable del momento.
  • El listado de los repositorios oficiales de Debian se encuentra en http://www.debian.org/mirror/list