viernes, 26 de junio de 2009

Conexiones remotas con SSH

SSH (Secure SHell) es un programa, Bueno en realidad es un protocolo ya que programas hay varios para acceder o montar un servidor (cliente/servidor).
En muchas(la mayoria creo yo) de las distribuciones linux viene el cliente por defecto ya instalado,
El servidor es tan fácil como ejecutar el siguiente comando:
apt-get install ssh
ssh podría decirse que es como telnet, Pero la diferencia mas importante es que ssh encripta los datos, Por lo que es mucho mas seguro conectarse remotamente a una maquina por ssh que por telnet.
La sintaxis es la siguiente:

ssh usuario@nombre_de_maquina_o_ip

Ejemplos:
ssh pepe@debian.org
ssh pepe@150.223.50.189

Después de esto nos pedirá la contraseña como muestro en la imagen de abajo.


Y con eso ya estaríamos conectados a la maquina remotamente, pero...Ya esta? Solo eso permite ssh? Pues no, ssh aunque se puede usar de esa manera tan simple tiene mas funciones.
Imaginemos que solo queremos ver la ocupación de otro equipo, Solo queremos ver como están los discos pero no necesitamos entrar a el ejecutariamos:

ssh usuario@maquina comando
Ejemplo:

ssh pruebas@127.0.0.1 df -h
Te pediría la contraseña y sacaría esto:

Esa ip es tu propia maquina (localhost) siempre pero con cualquier ip funcionaria igual (y que exista el usuario y sepas la password claro)
Esto funcionaria con cualquier comando.

Otra cosa muy util es scp que permite copiar archivos o directorios de un equipo a otro con el protocolo ssh, Osea que los archivos viajan encriptados y seguros, vamos a ver la sintaxis:

scp [-r] origen destino
El -r es opcional significa recursive, Osea que copia el directorio y todos los directorios que estén dentro de el, Si solo queremos un archivo no nos hace falta el -r.
Ejemplo:
Si queremos copiar de nuestra maquina a otra remota seria
scp hhhh pruebas@127.0.0.1:/home/pruebas


Si lo que queremos es copiar un archivo de la otra maquina a nuestro equipo seria así:
scp pruebas@127.0.0.1:/home/pruebas/gggg /home/


Tambien tenemos el comando sftp que es un ftp seguro, Por que no olvidemos que ftp no encripta los datos

Asta aqui algunas cosas del cliente ssh, En otra ocasión nos meteremos a configurar el servidor ssh.

miércoles, 17 de junio de 2009

INIT Y LOS NIVELES DE EJECUCIÓN (runlevels)

1. Cierre del sistema (Apagado)

2. Modo de usuario único (Monousuario) No configura la interfaz de red o los demonios de inicio, ni permite que ingresen otro usuarios que no sean el usuario root, sin contraseña. Este nivel de ejecución permite reparar problemas, o hacer pruebas en el sistema.

3. Multiusuario Multiusuario sin soporte de red.

4. Multiusuario con soporte de red. Inicia el sistema normalmente.

5. No se usa.

6. Multiusuario gráfico (X11) Similar al nivel de ejecución 3 + display manager.

7. Reinicio. Se reinicia el sistema.

Suelen ser un standard y generalmente el sistema arranca en el runlevel 3, aunque debian lo hace por defecto en el 2.
Para cambiar el nivel de ejecucion (runlevel) basta con ejecutar init (runlevel)

Ejemplos:

init 0

Apagaria el sistema

init 6

reiniciaria el sistema

init 1

pondría el sistema en modo monousuario, solo podra estar conectado 1 usuario y solo podra ser root, suele ser usado para tareas de administración donde no puede haber mas usuarios en el sistema tocando cosas.

Podemos ver el runleven en el que nos encontramos ejecutando runlevel y nos sacara un nomero que sera el del runlevel actual, si hemos cambiado de runlevel saldran 2 numeros, el 1º es el anterior runlevel t el 2º en el que nos encontramos actualmente.

Puse arriba suelen ser un standard por que ubuntu decidio dejar de usarlo y en su lugar puso upstart del que puede que hable en otra ocasión (o puede que no).

/etc/rcX.d

En los directorios /etc/rcX.d (donde la X un numero del 0 al 6, como los runleves posibles)

En el directorio /etc/rc2.d (o el 3,4,5) se encuentran todos los servicios que queramos que se ejecuten en ese runlevel (el numero identifica a que runlevel se refiere).

En el interior del directorio habra archivos que empiezan por S o K

los que empiezan por S son los servicios que se van a ejecutar en el arranque de ese runlevel y los que empiezan por K serán los que NO se ejecutaran, les sigue un numero que indica la preferencia, en el orden que van a arrancar, Cuanto menor sea el numero, mayor sera la prioridad.

A cualquiera de ellos les cambiamos la S por una K y cambiamos de runlevel y veremos como ese servicio se para.




SERVICIOS

se deben de ejecutar los servicios con el script que tiene cada servicio en el directorio init.d ( /etc/init.d) y no llamando al servicio directamente ni matarlo con kill, cada servicio tiene un star/stop/resestart y muchos de ellos un status

el init.d no se encuentra metido en el path por lo que hay que ejecutar el script con su ruta completa

ejemplo:

/etc/init.d/ssh start

miércoles, 10 de junio de 2009

PERMISOS Y PERMISOS ESPECIALES

PERMISOS ESTANDARD


hay 3 tipos de permisos estandard que son:

r Read-lectura

w Write-escritura

x eXecute-ejecucio

cada archivo (y directorio) tiene 3 grupos de donde an de estar esos permisos dados y en caso de no estarlo se representaria con un guion ( - )


ejemplos:

debian:~$ ls -l

-rw-r--r-- 1 david david 0 2009-05-20 07:42 archivo-prueba

u g o

en este archivo el usuario propierario (david) tendria permisos de de lectura y escritura pero no ejecucion, el grupo (tambien david) tendria permisos de lectura solamente y otros (cualquier otro usuario que no sea ni el prietario ni pertenezca al gurpo) tendria permisos de lectura.

debian:~$ ls -al

drwxr-x--x 2 david david 4096 2009-05-20 08:09 carpeta-prueba

en este directorio (la d marca que es un directorio)el usuario propietario tiene todos los permisos (rwx) el grupo solo de lectura y escritura (rw) y otros solo ejecucion (x) que en el caso de ser un directorio solo tendria permiso para acceder a la carpeta pero no modificar el contenido de la carpeta


debian:~$ ls -al

debian:~$ cd arpeta-prueba

drwxrwxrwx 2 david david 4096 2009-05-20 08:09 carpeta-prueba

debian:~$ ls -l

-rwxr-x--- 2 david david 4096 2009-05-20 08:09 archivo-prueba

en este caso vemos que otros no tienen permiso de escritura sobre el archivo, pero al tener permiso de escritura sobre la carpeta podra eliminar o renombrar el archivo ya que eliminar o renombrar un archivo no se considera trabajar sobre el archivo si no sobre la carpeta, lo que no podra es modificar el contenido del archivo



PERMISOS ESPECIALES


+s -suid (switch user id): Ficheros que se ejecutan como el propietario.

Tenemos ejemplos como su o ping. Generalmente el grupo propietario es root asi que si ejectamos un ping como un usuario normal relmente se esta ejecutando como root.

Si esta en el grupo y es un directorio hace que todos los archivos y directorios perteneceran al mismo grupo.

-rwsr-xr-x 1 root root 27108 2008-11-22 17:01 su

-rwsr-xr-x 1 root root 30788 2007-12-10 05:03 ping


+t - Sticky bit. (Bit pegajoso): Limita las operaciones de directorio sobre ficheros al propietario del directorio. Ej.: que un usuario no borre lo de otro dentro de /tmp

drwxrwxrwt 17 root root 4096 2009-06-10 04:02 tmp

viernes, 5 de junio de 2009

CONFIGURAR SUDO CON VISUDO

sudo es un comando que permite a un usuario normal poder ejecutar comandos de root.
Hay que añadir al usuario en un archivo, el archivo en cuestion es sudoers y se encuentra en /etc/sudoers.
Se edita con visudo, Y visudo no permite cerrar el archivo con errores.
Visudo te abrira tu editor de textos por defecto, si quieres cambiarlo por otro como vi por ejemplo que lo vas a encontrar en todas las distribuciones tendrias que ejecutar:

update-alternatives --config editor


En esta imagen se ve que tengo seleccionado el editor de textos nano.


En la imagen de abajo vemos como se le a otorgado al usuario david ejecutar como root el comando id y solo tendria permiso para ejecutar ese comando.
con whereis comando vemos la ruta del comando, en este caso whereis id nos dio /usr/bin/id


y si se le pone un comando con parametros solo podria ejecutar ese comando con los parametros marcados, con NOPASSWD hacemos que no nos pida la contraseña del usuario.



En este ejemplo de arriba solo podra ejecutar el apt-get update, pero no podra ejecurar el apt-get upgrade o el apt-get install, es util si queremos que solo pueda actualizar pero no instalar nada, si solo estaria " david ALL = /usr/bin/apt-get " el usuario david podria ejecutar cualquier opcion del comando como install, upgrade, o remove.

Se pueden añadir tantos comandos y usuarios como queramos.

Hay que tener mucho cuidado con que comandos se permiten usar, Por que aveces un comando inofensivo tiene otras opciomes que permiten tomar el control de la maquina, Y no es eso lo que queremos.

Vamos con un ejemplo.

Vi en principio es un editor de textos, no parece tener gran riesgo para la seguridad, no? Pues si añadimos vi a un usuario normal en el archivo sudoers este usuario podra tomar el control total de la maquina, ya que vi aparte de editar textos tambien permite introducir comandos, Y con introducir sh un usuario normal tendra una consola de root, vamos a verlo.

Con esto el usuario david tiene permisos para ejecutar el editor de textos vi como root.


Ahora ejecutamos vi

sudo vi

Se nos abre una ventana de edicion de texto de vi y con este simple comando (:! /bin/sh) ejecutariamos una consola como root.




Como vemos en la imagen de abajo, tenemos el prompt de root, el udi de root, el gid de root...vamos que somos root.



Con esto intento decir que hay que tener mucho cuidado con que comandos permitir a los usuarios.No se debe dejar mas de lo necesario y es mas conveniente añadir solo los parametros que el usuario va a necesitar,
Si queremos que un usuario pueda copiar un directorio a una particion de raiz en la que se hace backup para que no pierda archivos importantes no debemosdarle en el archivo sudoers permiso para ejecutar cp si no para ejecutar cp de determinado directorio a otro, Este seria un ejemplo a poner en el archivo sudoers:

david ALL = /bin/cp /home/usuario /backup

Con eso solo podra copiar de su directorio de usuario a un directorio que se llama backup que esta en el raiz.

miércoles, 3 de junio de 2009

/proc/meminfo

«free», «buffer», «swap», «dirty». ¿Qué significan? Si has contestado «un campamento hippy», necesitas un cursillo sobre meminfo.

El contenido de /proc/meminfo ayuda a explicar qué se cuece con el uso de tu memoria, si sabes cómo leerlo.

$ free
root: total: used: free: shared: buffers: cached:
Mem: 1055760384 1041887232 13873152 0 100417536 711233536
Swap: 1077501952 8540160 1068961792


$ cat /proc/meminfo
MemTotal: 1031016 kB
MemFree: 13548 kB
MemShared: 0 kB
Buffers: 98064 kB
Cached: 692320 kB
SwapCached: 2244 kB
Active: 563112 kB
Inact_dirty: 309584 kB
Inact_clean: 79508 kB
Inact_target: 190440 kB
HighTotal: 130992 kB
HighFree: 1876 kB
LowTotal: 900024 kB
LowFree: 11672 kB
SwapTotal: 1052248 kB
SwapFree: 1043908 kB
Committed_AS: 332340 kB


Se aporta la información tanto a alto nivel como en forma de estadísticas de bajo nivel. En la parte superior ves un resumen rápido de los valores más comunes a los que deberías prestar atención. Debajo están los valores individuales que vamos a explicar. Vayamos primero con las estadísticas a alto nivel.

Estadísticas a alto nivel

* MemTotal: La RAM total utilizable, es decir, la RAM física menos cierto espacio reservado y el tamaño del binario del kernel
* MemFree: La suma de LowFree y HighFree
* MemShared: Siempre 0 por motivos de compatibilidad
* Buffers: La memoria del buffer cache, hoy en día un dato poco útil
* Cached: La memoria en el caché de disco menos SwapCache
* SwapCache: La memoria que, una vez enviada al swap fue recuperada pero permanece en el fichero temporal, de forma que si es necesario volver a enviarla al swap ya está allí, ahorrandose E/S

Estadísticas detalladas

Estadísticas VM —máquina virtual—

La VM divide las páginas de caché en memoria activa e inactiva. La idea es que si necesitas memoria y hay que sacrificar caché para obtenerla, la tomas de la región inactiva, dado que es aquella cuyo contenido no se espera que sea necesario. La VM comprueba continuamente lo que se está utilizando y mueve de un lado para otro.

Cuando usas memoria, la CPU activa un big en la tabla de páginas. La VM comprueba ese bit ocasionalmente y basándose en ello devuelve páginas a la región activa. Hay una especie de orden «hace mucho que no se usa» —en realidad por supuesto es más complejo—. Las marcadas así pueden ser movidas a la región inactiva. Dicha región se divide en dos en el kernel utilizado. A veces en tres.

* Active: Memoria que ha sido utilizada recientemente y que no va a ser reclamada a no ser que sea absolutamente necesario
* Inact_dirty: Sucio significa «podría necesitar pasar a swap en disco— Es más difícil de liberar. Por ejemplo, ficheros que aún no han sido volcados a disco. No se escriben en memoria demasiado pronto para ahorrar E/S. De nuevo un ejemplo, los ficheros de log no deben ser volcados a disco demasiado pronto, hasta que se tenga la traza completa.
* Inact_clean: Se asume que es fácilmente liberable, el kernel deja por aquí material limpio para asegurarse algo de espacio
* Inact_target: Una medida que utiliza el kernel para asegurarse de que hay las suficientes páginas inactivas disponibles. Al pasarse, el kernel no va a hacer trabajo alguno para mover páginas de activas a inactivas. Hay otras formas en las que una página llega a ser inactiva. Por ejemplo, si practicas una E/S secuencial larga el kernel presume que no vas a usar esa memoria y la marca como inactiva preventivamente. De esta forma siempre hay más páginas inactivas de las necesarias dado que el kernel las marca como «probablemente no se usarán nunca—. Es una forma de hacer trampa en el mecanismo explicado de las «últimas utilizadas».

Estadísticas de memoria

* HighTotal: La cantidad total de memoria en la región alta. Es toda la memoria sobre aprox. 860 MB de RAM física. El kernel utiliza trucos indirectos para acceder a esta región de memoria. Es donde se almacena la caché de datos.
* LowTotal: La cantidad total de memoria fuera de la región alta
* LowFree: La cantidad de memoria libre fuera de la región alta. Se trata de la memoria a la que el kernel puede acceder directamente. Todas sus estructuras de datos van aquí, fuera de la región alta.The amount of free memory of the low memory region. This is the memory the kernel can address directly. All kernel datastructures need to go into low memory.
* SwapTotal: Cantidad total de memoria física en la región de swap.
* SwapFree: Candidad de memoria libre en la región de swap.
* Committed_AS: Una estimación de cuánta RAM necesitarías para tener la garantía al 99,9% de que nunca te quedarás sin memoria para la carga de trabajo actual. Normalmente el kernel comprometerá memoria de más. Esto significa que si haces p.ej. un malloc de 1 GB, no ocurre en realidad nada. Sólo cuando empiezas a usar esa memoria se demandará para ti memoria real, y tanta como uses. Es como contratar una hipoteca y esperar que el banco no quiebre. Otros ejemplos son hacer mmap con un fichero compartido sólo cuando escribes en el y obtienes así una copia privada de los datos. Es memoria normalmente compartida entre procesos. La cifra Committed_AS es una estimación de cuanta RAM y swap necesitas en el peor de los casos.

Fuente: Linux AV

lunes, 1 de junio de 2009

GESTION DE USUARIOS Y GRUPOS

Bueno aquí voy a intentar explicar la gestión de los usuarios y de grupos, cosa muy importante en linux/unix.
aquí es todo mucho mas sencillo que en windows,no hay grupos locales ni globales ni nada de eso, hay usuarios y grupos, nada mas.


  • agregar usuarios


useradd


parametros mas usuales


-u Le indicas el uid que es el numero con el que la maquina le reconocera (la maquina no ve el nombre solo el uid ) , si no pones esta opcion le dara el 1º libre que encuentre


-g Le indicas el gid que es el grupo al que va a pertenecer, si no ponnes la opcion pertenecera a un grupo que se creara igual que su nombre


-G Le indicas al ( 1 o varios) grupo secundario que va a pertenecer, si no pones esta opcion solo pertenecera a su grupo principal


-m Le indicas que te cree el directorio del usuario (/home/usuario) , en algunas distribuciones no es necesario por que ya crea directamente el home pero en otras es necesrio indicarselo si no tendras que crearlo luego tu a mano y para curarte en salud mejor acostumbrarse a usar esta opcioon.


-p Le indicas la password, no es imprescindible o pude que no sepas ( o no quieras saber) la contraseña que el usuario quiera ponerle a su usuario, si no pones esta opcion por defecto no tendra contraseña y luego tendras que ejecutar desde root el comando " passwd usuario " y nos pedira la contraseña que queremos ponerle.


Ejemplos:


# useradd pepe

nos creara el usuario pepe con todo por defecto, es la forma mas simple de hacerlo.


# useradd -m -u 9999 -G colegas,rrhh pepe

aqui nos creara el usuario pepe con uid 9999 que pertenecera a los grupos colegas y rrhh y que tendra su home (en /home/pepe)



  • agregar grupos


groupadd


a este comado solo se le sule añadir -g para indicarle el gid del grupo asi que no tiene mucha complicacion o se le pone -g o se ejecuta el comando solo

ejemplos:

# groupadd -g 2000 rrhh

con el 1º ejemplo el grupo tendra el gid 2000 y con el 2º el que le toque

# groupadd rrhh




  • modificar grupos


gpasswd


es un comando para añadir a un usuario grupos seundarios


opciones:

-a añade a un usuario grupos seundarios

-d borra a un usuario del grupo

-A hace administrador del grupo, osea que ese usuario podra añadir y/o borrar a usuarios a ese grupo ( es util para delegar un poco de trabajo en otros y quitar un poco de curro al administrador y que no te esten llamando por que juan que a venido nuevo, Pertenece al grupo de rrhh y es temporal para 3 meses y tegas que añadirle tu al grupo y luego borrarle, haces administrador del grupo a alguien y listo)


Es un proceso muy sencillo, cada comando tiene posiblemente 7 o 8 opcione mas, no son tan usadas asi que si lo quereis ver por curiosidad mirar el man del comando.

tambien existe adduser pero creo que no esta en todas las distribuciones asi que mejor acostumbrarse a algo que te lo pudes encontrar en cualquier sistema al que vayas.