Monthly Archives: July 2011

Cambiar la contraseña de un usuario en MySQL.

Para cambiar la contraseña de root, podemos hacer:

# mysqladmin -u root -p’contraseñaantigua’ password ‘nuevacontraseña’

También podemos cambiar con una sentencia SQL:

$ mysql -u root -p

mysql> use mysql;

mysql>UPDATE user SET password=PASSWORD(“nuevacontraseña” ) WHERE user=’adrian’;

flush privileges;

Utilizamos la base de datos mysql, y actualizamos el usuario que queramos. Después el comando flush privileges sirve para recargar los privilegios.

Cómo crear un usuario en MySQL.

Cuando trabajamos con bases de datos para algún cliente, o incluso trabajando desde PHP, necesitamos crear un usuario para la base de datos que vayamos a utilizar.

Primero tenemos que loguearnos como root:

$ mysql -u root -p

Creamos una base de datos nueva (si no la tenemos ya)

mysql> CREATE DATABASE prueba;

Ahora creamos el usuario, y le asignamos todos los permisos sólo a la base de datos que hemos creado, no podrá acceder a ninguna otra

mysql> GRANT ALL ON prueba.* TO usuarioprueba@localhost IDENTIFIED BY ‘supassword’;

Con eso indicamos que el usuario ‘usuarioprueba’ podrá acceder con la contraseña ‘supassword’ únicamente a la base de datos llamada prueba.

Creación de un usuario en MySQL. Click para aumentar

Cambiar el sistema operativo por defecto en GRUB2

Por defecto arranca siempre el sistema operativo numero 0, es decir el primero.

Si queremos cambiar esto, tenemos que editar el fichero /etc/default/grub. En este archivo encontraremos una línea que pondrá:

GRUB_DEFAULT=0

Pues simplemente cambiamos ese número por la entrada que queramos, teniendo en cuenta que el orden empieza en 0. Por ejemplo para poner que arranque el tercer sistema, haríamos lo siguiente:

$ sudo /etc/default/grub

GRUB_DEFAULT=2

Tras eso, hay que actualizar el grub, con el comando:

$ sudo update-grub

Reiniciamos si queremos para ver los cambios.

Mover /home a su propia partición.

Crear una partición para /home desde la instalación es bastante sencillo, pero ¿Y si queremos hacerlo cuando ya tenemos instalado todo el sistema en una sola partición?

El siguiente método sirve tanto para /home como para cualquier otra partición que queramos hacer (con sus respectivos cambios, por supuesto). Es algo más largo de hacer, pero sigue siendo muy sencillo:

Parto de la base de que ya tenéis vuestra partición en ext4 con el tamaño que queráis. (Si no, éste paso podéis realizarlo con GParted)

Lo primero que tenemos que hacer es montar la partición nueva:

$ sudo /mnt/home

$ sudo mount -t ext4 /dev/sdXY/ /mnt/home

(Sustituimos XY por nuestros datos, por ejemplo /dev/sda6)

A continuación copiaremos los archivos, pero no con un simple cp:

$ cd /home

$ find . -depth -print0 | cpio –null –sparse –pvd /mnt/home

Una vez haya terminado, revisamos que todo esté correctamente copiado y acto seguido, podemos desmontar la partición nueva:

$ sudo umount /dev/sdXY

Cambiamos el nombre de /home a otro:

$ sudo mv /home /home_orig

Como no existe, /home, tenemos que volver a crear la carpeta, y montamos la nueva partición:

$ sudo mkdir /home

$ sudo mount /dev/sdXY /home

Y ya está hecho, ahora queda, indicar que se monte automáticamente en cada inicio del sistema, para ello tenemos que editar el archivo /etc/fstab, pero antes debemos saber cual es UUID  de nuestro disco, para ello escribimos lo siguiente:

$ sudo blkid

Y buscar cual es nuestro UUID, después editamos el fichero:

$ sudo /etc/fstab

Copiamos la siguiente línea:

UUID=uuid-de-nuestro-disco /home ext4 defaults,user_xattr 0 2

Una vez hecho todo esto, estará todo listo. Podemos reiniciar y comprobar que efectivamente, todo está correcto.

Nuevo script para realizar backups

Ayer estuve escribiendo un nuevo script para realizar los backups en mi sistema, ya que mis necesidades han cambiado.

El script está adaptado a mi sistema y como digo, mis necesidades, pero quizás os pueda servir a vosotros.

#!/bin/bash
#    Backup for my system.
#    Copyright (C) <2011>  <Adrian 'aesptux' Espinosa>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

#    Check if the folder with the ID name exists
#    Mount the device
#    Backup our files
#    Unmount the device
NOW=$(date +%Y-%m-%d)
LOGPATH="/root/backup/"
LOGFILE="$NOW.backup.log"
ERRORMSG="zenity --error --title Error --text "
INFOMSG="zenity --info --title Information --text "
RSYNC="rsync -avuz --progress --delete "
# Device info
DEV1="/dev/sda2/"
LABEL1="Multimedia"
ID1="A61052121051EA37"
PATH1="Backup/actual"

clear
if [ $UID -ne 0 ]; then
	$ERRORMSG "Sorry you have to run this script as root"
	exit 1
else
	if [ ! -d /media/$ID1 ]; then
		mkdir /media/$ID1
		if [ $? -eq 0 ]; then
			echo "Folder created" | tee -a $LOGPATH$LOGFILE
		else
			$ERRORMSG "Error creating folder. Exiting"
			echo "Error creating folder. Exiting" | tee -a $LOGPATH$LOGFILE
			exit 2
		fi
	fi
	mount $DEV1 /media/$ID1
	if [ $? -eq 0 ]; then
		echo "Disk mounted." | tee -a $LOGPATH$LOGFILE
		$INFOMSG "Backup started"
		$RSYNC /etc /media/$ID1/$PATH1 2>> $LOGPATH$LOGFILE
		$RSYNC /var /media/$ID1/$PATH1 --exclude "/var/cache/*" 2>> $LOGPATH$LOGFILE
		$RSYNC /home /media/$ID1/$PATH1 --exclude "/home/mortuus/Downloads/*" --exclude "/home/mortuus/Videos/*" --exclude "/home/mortuus/.VirtualBox/HardDisks/*" --exclude "/home/mortuus/.local/share/Trash/*" --exclude "/home/mortuus/.cache/*" --exclude "/home/mortuus/.thumbnails/*" --exclude "/home/mortuus/Dropbox" 2>> $LOGPATH$LOGFILE
		###### MYSQL DATABASES DUMP
		mysqldump --all-databases -u root -p123456789a > /media/$ID1/$PATH1/$NOW.mysqldump.sql 2>> $LOGPATH$LOGFILE
		umount $DEV1
		$INFOMSG "Backup finished"
	else
		$ERRORMSG "Disk failed to mount. Exiting" 
		echo "Disk failed to mount. Exiting" | tee -a $LOGPATH$LOGFILE
		exit 3
	fi
fi

También podéis encontrarlo en mi Github

Encontrar fallos e inconsistencias en los ficheros passwd y shadow

Con el comando pwck podremos verificar que la información existente en /etc/passwd y en /etc/shadow  es correcta. Para poder ejecutarlo debemos ser root.

Este comando verifica la integridad de los usuarios y la información de autenticación. Comprueba que todas las entradas en /etc/passwd y /etc/shadow tengan el formato apropiado y los datos sean válidos. Se preguntará al usuario si desea borrar las entradas que tienen un formato incorrecto o las que tengan errores incorregibles.

Comprueba que cada entrada tenga:

    • El número correcto de campos
    • Un nombre de usuario válido y único
    • Identificador de grupo único y válido
    • Un grupo primario único
    • Un directorio home válido
    • Una shell válida

Con respecto a /etc/shadow las comprobaciones son las siguientes:

    • Cada entrada en /etc/passwd tiene su correspondiente en /etc/shadow, y viceversa
    • Las contraseñas están especificadas en el archivo
    • Tienen el número correcto de campos
    • Son únicas
Tiene los siguientes parámetros:
    • -q: Reportar sólo errores. No se mostrarán los warning.
    • -s: Ordenar por UID.

Nos dirigimos a la terminal y ejecutamos el comando:

# pwck

La salida en mi caso es esta:

user 'lp': directory '/var/spool/lpd' does not exist
user 'news': directory '/var/spool/news' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'list': directory '/var/list' does not exist
user 'irc': directory '/var/run/ircd' does not exist
user 'gnats': directory '/var/lib/gnats' does not exist
user 'nobody': directory '/nonexistent' does not exist
user 'syslog': directory '/home/syslog' does not exist
user 'usbmux': directory '/home/usbmux' does not exist
user 'speech-dispatcher': directory '/var/run/speech-dispatcher' does not exist
user 'pulse': directory '/var/run/pulse' does not exist
user 'hplip': directory '/var/run/hplip' does not exist
user 'saned': directory '/home/saned' does not exist
user 'haldaemon': directory '/var/run/hald' does not exist
user 'mysql': directory '/nonexistent' does not exist
pwck: no changes

Via | rm-rf.es