USUARIOS Y GRUPOS
Linux es un sistema operativo multiusuario y multitarea, esto es, que más de un usuario puede trabajar en el sistema de forma simultánea con otros, ejecutando una o más tareas a la vez.
Cuando se ingresa al sistema, es necesario que se identifique con un login y una contraseña, el login es un nombre que identifica de forma única al usuario. La contraseña debe ser una combinación de letras, números y caracteres especiales.
El sistema de contraseñas en Linux es de tipo unidireccional. Esto quiere decir que nuestra contraseña no es almacenada como texto, sino que es cifrada y guardada tal como es. Cuando entramos en el sistema y escribimos nuestra contraseña, ésta es cifrada y comparada con la que está almacenada. Si coinciden, la identificación es positiva, si no coinciden, no hay identificación.
Actualmente, en los sistemas GNU/Linux se puede escoger dos tipos de cifrado posibles para las contraseñas de usuario: 3DES que se viene usando desde los inicios de UNIX, tiene el inconveniente que sólo permite contraseñas de 8 caracteres, si se escriben mas se ignoran, el otro tipo es MD5 con el que podemos usar contraseñas de la longitud que deseamos, por seguridad se recomienda utilizar el tipo MD5.
Los grupos son siempre expresiones lógicas de organización, reuniendo usuarios para un propósito común. Los usuarios dentro de un mismo grupo pueden leer, escribir o ejecutar archivos que pertenecen al grupo.
Los usuarios en GNU/Linux
Existe 3 tipos de usuarios:
1. Usuario Normal, es un individuo particular que puede entrar en el sistema, con más o menos privilegios que harán uso de los recursos del sistema. Como indicador en el prompt utiliza el símbolo $ (dólar). Ejemplo: raul, sergio, mrodriguez, etc. También se les conoce como usuarios de login.
2. Usuarios de Sistema, son usuarios propios del sistema vinculados a las tareas que debe realizar el sistema operativo, este tipo de usuario no puede ingresar al sistema con un login normal. Ejemplo: mail, ftp, bin, sys, proxy, etc. También se le conoce como usuarios sin login.
3. root (superusuario), todo sistema operativo GNU/Linux cuenta con un superusuario, que tiene los máximos privilegios que le permitirán efectuar cualquier operación sobre el sistema, su existencia es imprescindible ya que se encarga de gestionar los servidores, grupos, etc.
Archivos relacionados
Toda la información de los usuarios y grupos se guarda en los siguientes archivos:
* /etc/passwd: guarda información de los usuarios del sistema como: nombres, directorio home, shell.
* /etc/group: almacena la información sobre los grupos existentes en el sistema.
* /etc/shadow: contiene las contraseñas cifradas de los usuarios además de otros datos para su validación.
Archivo /etc/passwd
El archivo passwd almacena los usuarios creados en el sistema y tiene el siguiente formato:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
clases:x:1000:1000:LinuxCentro:/home/clases:/bin/bash
Cada línea esta separada en campos, el separador de campo son los dos puntos (:), y cada campo representa lo siguiente:
* Login: el nombre del usuario. No puede haber dos nombres iguales.
* Contraseña cifrada: si no se utiliza el fichero de shadow, las contraseñas cifradas se almacenan en este campo. Si utilizamos el fichero de shadow, todos los usuarios existentes en este fichero deben existir también en el de shadow y en este campo se pone el carácter “x”.
* User ID: número de identificación del usuario. Es el número con el cual el sistema identifica al usuario. El 0 es el único que está reservado para el root.
* Group ID: el número de grupo al cual pertenece el usuario. Como un usuario puede pertenecer a más de un grupo, este GID es del grupo primario.
* Comentarios: campo reservado para introducir los comentarios que queramos sobre el usuario. Se suele utilizar para poner el nombre completo o algún tipo de identificación personal.
* Directorio home: el directorio home del usuario es donde éste podrá guardar todos sus ficheros, generalmente se encuentran dentro del directorio /home y el nombre de cada directorio es similar al de cada usuario.
* Intérprete de comandos: un intérprete de comandos (shell ) es un programa que se encarga de leer todo lo que escribimos en el teclado y ejecutar los programas o comandos que le indiquemos. Hay decenas de ellos, aunque el más utilizado es, sin duda, el bash (GNU Bourne-Again SHell). Si en este campo está: /bin/false ó /bin/nologin el usuario no podrá tener acceso a su shell y no podrá ejecutar comandos.
Archivo /etc/group
El archivo group almacena la información de los grupos del sistema, y tiene el siguiente formato:
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
clases:x:502:
Al igual que el archivo anterior cada línea esta separada en campos el separador de campo son los dos puntos (:), y cada campo representa lo siguiente:
* Nombre del grupo. Por defecto con los comandos habituales se crea un grupo con el mismo nombre que el usuario creado, aunque pueden existir otros grupos con nombres específicos.
* Contraseña cifrada: la contraseña de un grupo se utiliza para permitir que los usuarios de un determinado grupo se puedan cambiar a otro o para ejecutar algunos programas con permisos de otro grupo, siempre que se disponga de la contraseña.
* Group ID: número de identificación del grupo. Es el número con el cual el sistema identifica internamente a los grupos. El 0 es el único que está reservado para el grupo del root (los administradores).
* Lista de usuarios: los nombres de los usuarios que pertenecen al grupo, separados por comas. Aunque todos los usuarios deben pertenecer a un determinado grupo (especificado en el cuarto campo del fichero de passwd), este campo se puede utilizar para que usuarios de otros grupos también dispongan de los mismos permisos que tiene el que se está referenciando.
Archivo /etc/shadow
El archivo shadow se encarga de almacenar las contraseñas cifradas del usuario, y tienen el siguiente formato:
root:$1$qvZCDFha$8CsNHHB/QDYlx3wDnZWzp/:12829:0:99999:7:::
bin:*:12829:0:99999:7:::
daemon:*:12829:0:99999:7:::
clases:$1$8Ne4Ij4r$th9obKXkR7iTZGj26jGUc/:12831:0:99999:7:::
Igual que los archivos anteriores cada línea esta separada en campos el separador de campo son los dos puntos (:), y cada campo representa lo siguiente:
* Login: debe ser el mismo nombre que se utiliza en el fichero de passwd.
* Contraseña cifrada.
* Días que han pasado, desde el 1 de enero de 1970, hasta que la contraseña ha sido cambiada por última vez.
* Días que deben pasar hasta que la contraseña pueda ser cambiada.
* Días que han de pasar hasta que la contraseña deba ser cambiada.
* Días antes de caducar la contraseña en el que se avisará al usuario de que debe cambiarla.
* Días que pueden pasar después de que la contraseña caduque, antes de deshabilitar la cuenta del usuario (si no se cambia la contraseña).
* Días, desde el 1 de enero de 1970, desde que la cuenta está deshabilitada.
* Campo reservado.
En sistemas UNIX es muy común representar las fechas a partir del número de segundos transcurridos desde el 1 de enero de 1970.
En sistemas donde hay muchos usuarios y se desea restringir el espacio de disco que utilizan se puede utilizar quotas.
COMANDOS PARA GESTIONAR USUARIOS
* Comando useradd : permite añadir nuevos usuarios al sistema, también permite establecer la información por defecto de los nuevos usuarios. Se encuentra enlazado simbólicamente por el nombre adduser, ambos nombres se pueden emplear indistintamente para las mismas acciones.
Algunas opciones:
-u : permite especificar el UID.
-c : añade los valores a la sección de comentarios.
-d : permite especificar el directorio de trabajo, creará automáticamente el directorio señalado.
-s : permite establecer el shell.
Ejemplos:
# useradd raul
# crea el usuario raul con las propiedades por defecto
# useradd -u 500 carlos
# crea el usuario carlos con su UID 500
# useradd –c ‘Juan Perez’ juan
#crea el usuario juan rellenando el comentario con “Juan Perez”
# useradd –d /home/soft msantos
# crea el usuario msantos con su directorio de trabajo “soft”
# useradd –s /bin/false operador1
# crea el usuario operador1 desactivando la posibilidad de ejecutar un shell
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
# muestra las propiedades por defecto de los nuevos usuarios que se añadan
# grupo primario (no se emplea)
# directorio base de todos los usuarios
# número de días entre que el password expire y la cuenta se deshabilite
# fecha (YYYY-MM-DD) en que la cuenta expira
# shell que empleará el usuario para interactuar con el sistema
# directorio cuyo contenido se copiará en el directorio de cada usuario
# useradd -D -b /users
# cambia el directorio base por defecto de los nuevos usuarios a /users. El directorio /users debe existir previamente
Valores por defecto: son valores por defecto que serán utilizados para crear a los nuevos usuarios:
En RedHat o derivados, los valores por defecto están en el archivo /etc/default/useradd.
En Debian y derivados, los valores por defecto para añadir nuevos usuarios estan en el archivo /etc/adduser.conf
* Comando passwd : permite establecer y/o cambiar la contraseña de un usuario. También puede bloquear, desbloquear y deshabilitar una cuenta. Si se invoca sin argumentos se asume que se está cambiando la contraseña del usuario actual.
Algunas Opciones:
-d : deshabilita la necesidad de contraseña del usuario.
-l : bloquea la cuenta de un usuario añadiendo un signo de admiración (!) delante de su contraseña en el archivo /etc/shadow.
-u : desbloquea la cuenta de un usuario bloqueado.
Ejemplos:
# passwd raul
New UNIX password:
Retype new UNIX password:
# estableciendo una contraseña para raul
passwd: all authentication tokens updated successfully
# passwd -d raul
# deshabilita la cuenta del usuario raul eliminando su password
# passwd -l raul
# bloquea la cuenta del usuario raul poniendo un signo ! delante de su password en el archivo /etc/shadow
# passwd -u raul
# desbloquea la cuenta del usuario raul
* Comando userdel : permite eliminar definitivamente un usuario del sistema.
Ejemplos:
# userdel raul
# elimina el usuario raul manteniendo su directorio de datos.
# userdel -r raul
# elimina al usuario raul y borra su directorio base.
* Comando usermod : se emplea para modificar algunas propiedades de los usuarios como: el login, el directorio base, el shell que se inicia al conectarse, los grupos a los que pertenece, la fecha de expiración de la cuenta, etc. También bloquea y desbloquea una cuenta. Como opciones utiliza las disponibles en el comando useradd.
Ejemplos:
# usermod -s /bin/csh dominic
# coloca el shell csh para el usuario dominic
# usermod -G users,disk dominic
# señala como grupos secundarios de dominic a users y disk
# usermod -e 2005-10-20 dominic
# indica que la cuenta de dominic expirará el 20 de octubre del 2005
* Comando chfn : permite cambiar la información de contacto de un usuario. Esta incluye aspectos como: el nombre completo, la oficina de trabajo y los teléfonos. Se almacena en el archivo de usuarios /etc/passwd en la sección de comentarios.
Ejemplos:
# chfn dominic
Changing finger information for dominic.
Name []: Dominic Davis
Office []: Informática
Office Phone []: 22-0909
Home Phone []: 44-3025
# Cambia información del usuario dominic
# chfn
Changing finger information for root.
Name []:
Office []:
Office Phone []:
Home Phone []:
# cambia la información de contacto del usuario actua
* Comando chsh: cambia el shell del usuario especificado.
Ejemplos:
# chsh dominic
Cambiando la shell de acceso para dominic
Introduzca el nuevo valor, o presione enter para el predeterminado
Shell de acceso [/bin/bash]:
# chsh
Cambiando la shell de acceso para root
Introduzca el nuevo valor, o presione enter para el predeterminado
Shell de acceso [/bin/bash]:
* Comando chage : permite cambiar el password y los datos del usuario.
Algunas Opciones:
-d [dias] : Cuenta el número de días (desde 01-01-1970) transcurridos desde que cambió la contraseña por última vez
-E [fecha] : Modifica la fecha en que la cuenta del usuario expirará y será bloqueada
-l [dias] : Modifica cuantos días puede permanecer una cuenta con una contraseña expirada antes de ser bloqueada
-M [dias] : Modifica el número máximo de días durante los que es válida la contraseña de usuario. Pasados los días, el usuario deberá de modificarla
-m [dias] : Modifica el número mínimo de días entre cambio de contraseña
-W [dias] : Modifica el número de días que se avisará al usuario antes de cambiar la contraseña
Ejemplos:
# chage -E 2005-06-15 dominic
# la cuenta del usuario dominic expirará el 15.Junio.2005
# chage -l 7 dominic
# la cuenta del usuario dominic tendrá 7 días de comunicaciones antes de ser bloqueada
# chage -M 7 dominic
# se da 7 dias al usuario dominic para que pueda modificarla su contraseña, luego del cual deberá modificarla en forma obligatoria
COMANDOS PARA GESTIONAR GRUPOS
* Comando groupadd : permite añadir un grupo al sistema.
Ejemplos:
# groupadd admin
# groupadd –g 601 supervisor
# añade un grupo supervisor con GID 601
* Comando groupdel : permite eliminar un grupo del sistema, el grupo no podrá ser eliminado si este es el grupo primario de un usuario.
Ejemplo:
# groupdel admin
* Comando groupmod : permite modificar el nombre o GID de un grupo.
Ejemplos:
# groupmod –g 701 supervisor
# cambia el GID a 601 del grupo supervisor
# groupmod -n manager supervisor
# cambia el nombre del grupo supervisor a manager
* Comando gpasswd : permite administrar los grupos. Se puede utilizar para añadir y eliminar usuarios, señalar un administrador e indicar un password para el grupo.
Ejemplos:
# gpasswd -A raul admin
# señala como administrador del grupo admin al usuario raul
# gpasswd admin
# cambia el passwd del grupo admin
# gpasswd -a juan admin
# añade el usuario juan al grupo admin
COMANDOS ADICIONALES PARA GESTIONAR USUARIOS
Comando
Descripción
# whoami
# nos muestra que usuario somos
# groups [usuario]
# nos sirve para saber a qué grupos pertenecemos
# id [usuario]
# nos mostrará nuestro uid, gid, y el id del grupo al que pertenecemos
# su [usuario]
# sirve para convertirnos en otro usuario sin tener que salir de la sesión, así como para cambiar a ser un superusuario
# newgrp [grupo]
# sirve para cambiar de grupo, se utiliza para cambiar a un grupo que no pertenecemos
# who
# nos muestra la lista de usuarios dentro del sistema
# w [usuario]
# nos muestra la lista de usuarios dentro del sistema y también lo que están haciendo
# write [usuario]
# comando que se utiliza para comunicarse entre los usuarios del sistema
# wall [mensaje]
# permite enviar un mensaje a todos los terminales de los usuarios dentro sistema
# mesg [y|n]
#permite activar o desactivar la opción de recibir mensajes
martes, 21 de septiembre de 2010
miércoles, 1 de septiembre de 2010
Recuperar la Clave de MySQL en 5 Pasos
A Cuantos les ha pasado que van a realizar algun servicio o asesoria y se encuentran con la sorpresa de que a estos no les han dejado la contraseña del ROOT en MYSQL.
Aqui con esta guia podran recuperar esa contraseña en tan solo 5 pasos.
# 1: Detener el proceso del servidor MySQL.
root@servidor-ubuntu:~# /etc/init.d/mysql stop
* Stopping MySQL database server mysqld [ OK ]
root@servidor-ubuntu:~#
# 2: Iniciar el servicio/demonio de MySQL (mysqld) con la opcion –skip-grant-tables asi no pedira contraseña.
root@servidor-ubuntu:~# mysqld_safe --skip-grant-tables &
[1] 10702
root@servidor-ubuntu:~# nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[10741]: started
# 3: Conectar al servidor MySQL como el usuario root.
root@servidor-ubuntu:~# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
Paso # 4: Configure la nueva contraseña de root.
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set password=PASSWORD("321") where User='root';
Query OK, 3 rows affected (0.03 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
Paso # 5: Salir y reiniciar el servidor MySQL
mysql> quit
Bye
root@servidor-ubuntu:~# /etc/init.d/mysql stop
* Stopping MySQL database server mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[11414]: ended
[ OK ]
[1]+ Done mysqld_safe --skip-grant-tables
Paso # 6: Reinicio de MySQL
root@servidor-ubuntu:~# /etc/init.d/mysql start
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.
root@servidor-ubuntu:~# mysql -u root -p
Aqui con esta guia podran recuperar esa contraseña en tan solo 5 pasos.
# 1: Detener el proceso del servidor MySQL.
root@servidor-ubuntu:~# /etc/init.d/mysql stop
* Stopping MySQL database server mysqld [ OK ]
root@servidor-ubuntu:~#
# 2: Iniciar el servicio/demonio de MySQL (mysqld) con la opcion –skip-grant-tables asi no pedira contraseña.
root@servidor-ubuntu:~# mysqld_safe --skip-grant-tables &
[1] 10702
root@servidor-ubuntu:~# nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[10741]: started
# 3: Conectar al servidor MySQL como el usuario root.
root@servidor-ubuntu:~# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
Paso # 4: Configure la nueva contraseña de root.
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set password=PASSWORD("321") where User='root';
Query OK, 3 rows affected (0.03 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
Paso # 5: Salir y reiniciar el servidor MySQL
mysql> quit
Bye
root@servidor-ubuntu:~# /etc/init.d/mysql stop
* Stopping MySQL database server mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[11414]: ended
[ OK ]
[1]+ Done mysqld_safe --skip-grant-tables
Paso # 6: Reinicio de MySQL
root@servidor-ubuntu:~# /etc/init.d/mysql start
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.
root@servidor-ubuntu:~# mysql -u root -p
Suscribirse a:
Entradas (Atom)