Como ejecutar un script en Linux Ubuntu

Si,ya se que ejecutar un script en Linux es un comando bastante trivial, pero yo lo uso muy muy de vez en cuando y casi siempre lo tengo que buscar en internet, así que me voy a preparar esta chuleta para buscarlo directamente la próxima vez.

Es tan simple como ejecutar el comando “sh

En mi Ubuntu Server ejecuto lo siguiente:  sudo sh miscript

En mi última búsqueda vi en los comentarios lo siguiente que creo que también puede ser de utilidad:

Tabien puedes ejecutar shell scripts poninendo la shell que quieres que lo ejecute como primera linea del script (por ejemplo: #/bin/bash), dandole permisos de ejecución (chmod +x “nombre-del-archivo”) i llamandolo desde consola (./”nombre-del-archivo”).

Cambiar permisos sólo a los directorios o a los ficheros

Logo de linux con el pinguino

En Linux cambiar permisos a los ficheros y a los directorios es algo muy común. Esto se realiza con el comando chmod, como podemos ver en el siguiente ejemplo:

– Cambiar permisos para el directorio /home/pruebas -> chmod 775 /home/pruebas
– Cambiar permisos para el fichero texto.txt -> chmod 664 texto.txt

chmod tiene una opción que hace que se ejecute de forma recursiva, es decir, que se aplique a todos los ficheros y directorios que estén por debajo. Esta opción es la opción -R

El problema de esto es que no discrimina entre directorios y ficheros, por lo que si queremos cambiar los permisos sólo a los ficheros o sólo a los directorios tendremos que aplicar chmod de otra forma. Lo haremos con find.

Cambiar los permisos sólo a los directorios o sólo a los ficheros:

– Sólo a los directorios:
find /home/pruebas -type d -exec chmod -R 775 {} \; Esto cambiaría los permisos de los directorios que estuvieran por debajo de /home/pruebas.
– Sólo a los ficheros:
find . -type f -exec chmod -R 664 {} \; Esto cambiaría los permisos de los archivos que estuvieran por debajo de nuestro directorio actual (simbolizado por el . )

Chuleta de comandos de Linux

Logo de linux con el pinguino

Muchos comandos que casi no uso, al final los tengo que volver a mirar en internet, alguna opción, etc.
En este post voy a ir poniendo esos comandos que casi no uso y que tengo que remirar.

Comandos de Usuarios:

Borrar usuario: Con la opción -r borramos tambien su home y su mail.

userdel -r usuario

Cambiar el propietario de una carpeta y los elementos que la contienen: Con la opcion -R hacemos que sea recursiva y que afecte también a los subdirectorios.

chown usuario -R carpeta

Cambiar el grupo propietario de una carpeta y los elementos que la contienen: Con la opcion -R hacemos que sea recursiva y que afecte también a los subdirectorios.

chgrp grupo -R carpeta

Cambiar los permisos sólo a los directorios o sólo a los ficheros: Con la opcion -R hacemos que sea recursiva y que afecte también a los subdirectorios.

– Sólo a los directorios:

find . -type d -exec chmod -R 664 {} \;

– Sólo a los ficheros:

find . -type d -exec chmod -R 775 {} \;

Como hacer copias de seguridad en Linux (Ubuntu server) con crontab

Logotipo de ayuda de ubuntu server

Si estas administrando un servidor Linux, en mi caso Ubuntu Server, lo normal es que necesites automatizar tareas como por ejemplo las copias de seguridad. Para la automatización de comandos podemos usar Cron que viene instalado en la mayoría de distribuciones Linux.

Para la configuración usaremos el programa crontab que viene con el paquete cron y que nos va a ayudar a programar nuestras tareas de un manera sencilla.

Vamos a hacer un ejemplo para crear copias de seguridad diarias de las carpetas de usuarios -> /home

1.- Editamos crontab desde terminal ejecutando -> sudo crontab -e

nos saldrá una pantalla parcida a la de la imagen en donde incluiremos nuestras líneas de código.

Crontab automatizacion de copias automaticas linux

2.- Introduciremos los comandos indicando cuando queremos que se ejecuten. Para ello crontab tiene un sistema muy sencillo de usar:

Cada linea de este archivo esta formada por 7 columnas

  1. Minutos (de 0 a 59)
  2. Horas (de 0 a 23)
  3. Dia (de 1 a 31)
  4. Mes (de 1 a 12)
  5. Dia de la semana (de 0 a 7, donde 7 suele indicar domingo dependiendo de la configuración del sistema)
  6. usuario (opcional)
  7. orden a ejecutar

En las cinco primeras columnas si indicamos el valor asterísco ‘*’, estaremos diciendo que lo haga en todo el rango de esos valores. Por ejemplo si ponemos esto: 0 4 * * 7 estaríamos diciendo que la tarea se ejecutara a las 4:00, todos los días, todos los messes, los días que sean domingo.

3.- Introducimos nuestro comando: -> 0 2 * * * tar -jcvf /tmp/copiaSeguridadHome.tar.bz2 /home

Con la línea introducida anteriormente tendríamos copias de seguridad todos los días del año a las 2:00 am, del directorio /home y sus subdirectorios en el archivo copiaSeguridadHome.tar.bz2 en el directorio tmp.

4.– Reiniciamos cron para que cargue la nueva configuracion: -> sudo /etc/init.d/cron restart

 

De esta forma ya tendríamos nuestras copias de seguridad automatizadas, pero se puede programar todo lo que nos imagináramos.

550 CHMOD 755 www: Operación no permitida

Logotipo de ayuda de ubuntu server

Este error me apareció tras instalar un servidor ftp (proftpd) en Linux Ubuntu Server 10.10. La idea era crear usuarios que accedieran a traves de ftp a sus directorios home.

Con la instalación por defecto esto funcionó correctamente, pero me apareció el problema550 CHMOD 755 www: Operación no permitida” cuando intenté cambiar los permisos de un directorio.

Para solucionar este problema hay que hacer 2 cosas:

1.- editar el archivo de configuración de proftpd que se encuentra en /etc/proftpd/proftpd.conf y añadir lo siguiente.

 <Limit SITE_CHMOD>
    AllowUser usuarioQueSeVaAConectar
    DenyAll
 </Limit>

ó

<Limit SITE_CHMOD>
AllowAll
</Limit>

2.- Nos aseguraremos de que el directorio donde nos estamos conectando con el usuario es de su propiedad y para ello usaremos:

sudo chown -R usuario directorio

Como montar un servidor de archivos samba

Esto es un manual que he encontrado por internet y que me ha sido tremendménte útil. Simplemente lo publico no para aprovecharme de un compañero, sino más bien a modo de chuleta y si ya de paso le sirve a alguién más pues mejor.

 

No se si alguno de vosotros se a liado alguna vez a montar un servidor SAMBA para compartir una unidad o un directorio con otros ordenadores conectados a la red. Seguro que mas de uno ha estado rompiéndose la cabeza con el fichero de configuración smb.conf pero a continuación voy a explicaros uno de los porque instalamos en el anterior articulo un entorno gráfico que nos servirá para mas cosas que para navegar en caso de emergencia.

Si recordamos la instalación de Linux Ubuntu Server que hicimos al principio de este manual veremos que marcamos la opción ( Samba File Server ) …

Linux-Ubuntu-Server-Sistema-14

Al marcar esta opción se instalaron automáticamente todas las aplicaciones necesarias para poder compartir archivos entre maquinas Windows y Linux. Imaginaos lo cómodo que es tener un acceso directo en el escritorio hacia la carpeta compartida en cada uno de los ordenadores que tengamos, tengan el sistema operativo que tengan.

Eso es bonito pero …. ¿ Como lo configuramos ?

La manera tradicional de hacerlo es configurando el fichero llamado smb.conf ubicado en la ruta /etc/samba y hacerlo todo a mano. La otra manera de hacerlo es gráficamente con un interface que nos facilite esta labor que en un momento dado a todos nos a dado algún dolor de cabeza que otro. Este es uno de los motivos por el cual instalamos un entorno gráfico a nuestro servidor en Linux Ubuntu Server.

Para empezar vamos a identificarnos en el sistema con nuestro usuario e iniciaremos el entorno grafico FluxBox con el siguiente comando …

startx

A continuación accedemos a una Terminal pulsando el botón derecho del ratón y siguiendo el menú Aplicaciones -> Consolas -> Bash

Antes de tocar nada vamos a instalar la aplicación system-config-samba y un par de dependencias que necesita para poder funcionar con …

sudo apt-get install system-config-samba python-gtk2 python-glade2

Seguidamente arrancaremos el interface gráfico que nos acaba de instalar con …

sudo system-config-samba

Veremos un entorno como este …

samba1

A continuación vamos a compartir carpetas de la forma mas fácil que pueda existir sin pedir passwords ni usuarios a nuestros clientes. Se supone que este servidor lo tenemos en nuestro cuarto de casa y lo usamos yo y mi mujer para poder guardar toda la información que podamos necesitar por lo que no van a conectarse extraños que no puedan ver algo o necesiten permisos para grabar o borrar nuestros archivos.

Para hacer esto lo primero que necesitamos hacer es configurar el servidor SAMBA para que sea del mismo grupo de red que los demás equipos conectados a el con Windows. Para esto vamos a pulsar el botón ( Preferencias ) y a continuación ( Configuración del Servidor … ) …

samba2

En la primera casilla ( Grupo de trabajo ) debemos incluir el nombre que tenemos como grupo de trabajo en Windows. Para saber que nombre tiene nuestra red en Windows arrancamos nuestro ordenador cliente con Windows XP ( Que es el que he instalado expresamente para esto ) y seguimos los menús Inicio -> Panel de control

samba14

Redimiendo y mantenimiento …

samba15

Sistema …

samba16

Y vamos hacia la pestaña Nombre de equipo donde podemos dar una breve descripción del equipo y cambiar el nombre del grupo de trabajo con el botón ( Cambiar ).

Una vez sabido esto continuamos con la segunda casilla ( Descripción ) es algo simbólico y que no afecta a la configuración por lo tanto puedes dejarlo por defecto o modificarlo a tu gusto.

Una vez configurado esto continuamos con el botón ( Seguridad ) y dejaremos todas las casillas tal cual podéis ver en la imagen …

samba3

Continuamos con el botón ( OK ) y ya estamos listos para compartir carpetas y archivos tanto en Windows como en Linux Ubuntu en este caso. Para compartir algún directorio aremos lo siguiente …

Primero pulsamos el botón ( Añadir Recurso Compartido ) y veremos la siguiente ventana …

samba4

Ahora pulsaremos el botón ( Examinar ) …

samba5

Ahora vamos a crear una carpeta que compartiremos con todos los ordenadores de nuestra red con el botón ( Create Folder ) e introducimos el nombre que deseemos para ese directorio ( En mi caso almacen )…

samba6

Una vez creado el directorio pulsamos el botón ( OK ) y como podemos ver ya se ha agregado ese nombre a la casilla ( Directorio ) y a la casilla ( Nombre de recurso compartido ).

En la casilla ( Descriptión ) podemos incluir una descripción de la carpeta que vamos a compartir. Esto es opcional ya que no interviene en nada al funcionamiento del servidor, así que tu mismo.

Marcamos las casillas ( Permiso de Escritura ) y ( Visible ) quedándonos así …

samba7

A continuación pulsamos sobre la pestaña ( Acceso ) y marcamos la casilla ( Permitir acceso a todos ) quedándonos así …

samba8

Para finalizar cerramos esta ventana con el botón ( OK ).

Esta es la configuración menos segura ya que puede conectarse cualquiera a nuestro recurso compartido siempre y cuando pueda conectarse físicamente a nuestra red de área local conectando un cable de red a nuestro swicht o router. ( Cosa que dudo bastante que alguien haga en mi casa )

Se pueden agregar usuarios e incluso tener que identificarse en el servidor cuando queramos acceder al recurso compartido pero he pensado que esta es la solución mas sencilla con la que podríamos configurar este servicio sin el mayor problema.

La única medida de seguridad que necesitamos para que nadie pueda acceder al recurso compartido desde Internet es asegurarnos de no tener abierto el puerto para Netbios 139 en nuestro Router ADSL así cuando alguien haga desde fuera una petición al puerto 139 nuestro Router no sabrá a que maquina redireccionarla y no le devolverá respuesta alguna.

Para finalizar la configuración de la carpeta que acabamos de crear necesitamos darle permisos para que se pueda escribir, borrar y leer en ella. Para esto vamos a abrir una Terminal pulsando con el botón derecho del ratón y siguiendo el menú Aplicaciones -> Consolas -> Bash

En mi caso cree una carpeta llamada ( almacen ) en la ruta /home/www y voy a darle permisos totales para que todos puedan leer y escribir en el directorio con …

sudo chmod 777 /home/www/almacen

En mi caso dispongo de un Windows XP y Linux Ubuntu como clientes de este servidor así que voy a explicar los pasos para conectarnos desde ellos sin problemas, veréis que fácil.

Para conectarnos desde un ordenador con Windows XP

Pinchamos sobre el botón Inicio -> Mis sitios de Red y allí nos encontramos con nuestra carpeta compartida como por arte de magia. ;)

samba17 Para conectarnos desde un ordenador con Linux Ubuntu

Seguimos los menús Lugares -> Red

samba9

Pinchamos sobre el icono ( Red de Windows ) …

samba10

Y aquí veremos nuestro grupo de trabajo. ( En mi caso REDES ) ….

samba11

Si pinchamos sobre el veremos nuestro servidor ( En mi caso HSNET ) …

samba12

Y si pinchamos sobre el veremos la carpeta que compartimos anteriormente ( En mi caso almacen ) …

samba13

Para crear un acceso directo de está carpeta a nuestro escritorio y así tenerla siempre a mano basta con arrastrarla hacia el escritorio y la podremos usar siempre que la necesitemos.

Si os dais cuenta con este manual hemos conseguido algo muy interesante y es que ya no necesitamos tener discos duros grandes en todos los ordenadores que tengamos por casa ya sean equipos portátiles o de sobremesa ya que podemos agregarle un disco duro o varios a nuestro servidor en Linux Ubuntu Server y compartirlos siempre que queramos o necesitemos mas espacio.

 

Fuente: http://www.forat.info

Como conectarse a MySql desde otra maquina

Logotipo de la base de datos MySql (logo)

El otro día me tocó configurar dos servidores donde 1 de ellos tenía un Linux Server y el otro Windows Server 2008. En el servidor Linux estaba el servidor web Apache donde se alojaban varias páginas que accedían a MySql que estaba alojado en el Windows 2008.

El problema era que no se podía conectar a la base de datos desde las webs. Esto tenía una muy fácil solucion. Lo único que hay que hacer es crear un nuevo usuario para la base de datos que queremos acceder y en servidor poner la dirección ip del servidor donde tenemos alojada nuestra web.

Conexion desde otro servidor a mysql

También podrían funcionar poniendo en este campo “cualquier servidor” pero en temas de seguridad es peor.

Como recuperar la contraseña en MySQL 5.0

Logotipo de la base de datos MySql (logo)

A veces por no entrar muy amenudo es posible que se nos olvide la contraseña de nuestro motor de base de datos MySQL. Si quieres recuperar la contraseña olvidada lee este manual.

La respuesta la puedes encontrar en la propia página de MySQL -> http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html, está en inglés, pero lo hemos traducido al castellano.

Este procedimiento es para Windows si necesitas el procedimiento para Unix – Linux mira -> AQUI.

WINDOWS

1.- Entra como Administrador en Windows:

2.- Para el servicio de MySQL. Ejecuta desde Inicio-> Ejecutar -> services.msc -> Ahora busca el servicio MySQL y detenlo.

3.- Crea un fichero de texto, con el bloc de notas, con el siguiente texto:

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;

Update y Flush deben de ir en lineas diferentes tal y como está arriba. Donde pone ‘MyNewPass‘ pondremos la nueva contraseña que queremos poner al root.

4.- Guarda el fichero de texto en c:\mysql-init.txt

5.- Abre una consola de comandos. Inicio -> Ejecutar -> cmd

6.- Ahora iniciaremos MySql con el siguiente commando OJO si hemos instalado MySql con el Asistente de instalación haremos el paso 6 bis:

C:\> C:\mysql\bin\mysqld-nt --init-file=C:\\mysql-init.txt

6 bis.- Para instalaciones que han sido hechas desde el asistente:

C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"
         --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini"
         --init-file=C:\\mysql-init.txt

7.- Una vez se ha iniciado correctamente el servicio de MySQL puedes borrar el archivo C:\mysql-init.txt