miércoles, 27 de febrero de 2008
Asegurarnos de que Mutt trabaja en UTF-8
/etc/environment
LC_TYPE=es_ES.UTF-8
LC_MESSAGES=es_ES.UTF-8
LC_ALL=es_ES.UTF-8
LANG="es_ES.UTF-8"
LANGUAGE="es_ES.UTF-8"
...
/etc/inputrc
set input-meta on
set output-meta on
set convert-meta off
...
Ahora lo comprobamos en Mutt escribiendo:
:set &charset ?charset
debe responder con:
charset="utf-8"
Para configurar más opciones utilizaremos el archivo /etc/Muttrc.
martes, 19 de febrero de 2008
Gestión de Grupos de Usuarios en Linux
La gestión de grupos es básica para poder organizar permisos y accesos a recursos de forma adecuada.
La organización consiste en crear un recurso, un directorio por ejemplo, asignarle un propietario y un grupo, asignar los permisos pertinentes al grupo y luego incluir en ese grupo a todos aquellos usuario que queramos que puedan trabajar con él.
Como hemos visto en la gestión de usuarios, un usuario puede pertenecer a múltiples grupos.
Las órdenes para la gestión de grupos son muy parecidas a la gestión de usuarios como veremos a continuación:
Base de datos de grupos del sistemaLa base de datos de grupos del sistema se gestionan de una forma muy parecida a como lo hacían los usuarios, un fichero /etc/group similar a /etc/passwd y un nuevo fichero /etc/gshadow similar al /etc/shadow, todos con las mismas restricciones que sus homólogos.
/etc/group
Este fichero está formado por líneas del tipo:
nombre_grupo:contraseña:GID:lista_usuarios
Los tres primeros campos tienen las mismas características que en el fichero /etc/passwd. Si el campo de contraseña aparece vacío no se usa contraseña para este grupo.
La contraseña se solicita con la orden newgrp, que se utiliza para obtener una nueva shell del sistema en la que el grupo principal del usuario es el grupo que se solicitó como argumento de esta orden.
En cuanto a la lista de usuarios, en ese campo aparecerán separados por comas todos los usuarios que pertenezcan al correspondiente grupo.
/etc/gshadow
Las características del fichero /etc/gshadow son similares a las del fichero /etc/shadow salvo unas pequeñas diferencias.
En este fichero existe una campo más, el de los administradores del grupo. Estos usuario podrán añadir, quitar usuarios del grupo, modificar la contraseña del grupo y deshabilitar el acceso mediante newgrp. Además, como en /etc/shadow, sólo tiene permisos de acceso a él el root.
Comprobar los grupos de un usuario: groups
Si un usuario quisiera comprobar a qué grupos pertenece bastaría que ejecutara la orden groups.
Por ejemplo, la usuaria julia ejecuta:
$ groups |
lo que quiere decir que su grupo principal es julia y que también pertenece a los grupos admin y usuarios.
Usuarios miembros de un grupo
Un usuario puede pertenecer a varios grupos y puede operar con los recursos que sean propiedad de ese grupo con los permisos que tenga asignados.
Pero para ciertas operaciones como creación de ficheros nuevos o al lanzar un proceso el grupo que se asigna es el grupo principal del usuario; es lógico, por ejemplo un fichero sólo pertenece a un grupo.
Si queremos que los nuevos ficheros que se creen o los procesos que se lancen pertenezcan a otro grupo deberíamos poder cambiar el grupo principal. Este cambio de grupo principal lo realiza la orden
newgrp |
Por ejemplo, la usuaria del sistema julia tiene como grupo principal predeterminado el grupo julia y también pertenece al grupo admin.
Si quisiera que su grupo principal fuera admin tendría que ejecutar:
$ newgrp admin |
y la ejecución de la orden groups quedaría como:
$ groups |
admin julia usuarios |
Usuarios no miembros de un grupo
Los usuario no miembros de un grupo también pueden acceder a un grupo al que no pertenecen utilizando la orden
newgrp |
En este caso al ejecutar la orden newgrp el sistema le solicita una contraseña para aprobar o no el acceso del usuario.
Para que un grupo admita a usuarios que no son miembros es necesario que el administrador del grupo le haya asignado una contraseña al grupo.
Más adelante veremos como podemos asignar, quitar o deshabilitar una contraseña para un grupo.
Creación de un grupo: groupadd
La orden groupadd añade un nuevo grupo al sistema.
En caso de que sea necesario le podemos incluir la opción -g para indicar un GID concreto que no exista en /etc/group.
Por ejemplo
# groupadd admin |
añadiría un nuevo grupo al sistema llamado admin y
# groupadd -g 1000 correo |
crearía un grupo llamado correo con GID 1000
Administrar un grupo: gpasswd
La orden gpasswd nos facilita la tarea de administrar un grupo de usuarios con sus diversas opciones que vamos a ver separadas según su utilidad
Añadir administradores de grupo
El root puede utilizar la opción -A para añadir usuarios administradores de grupo.
Estos usuarios tendrán permiso para poder dar de alta otros usuarios, eliminarlos, poner contraseña al grupo, quitar la contraseña o deshabilitar el acceso al grupo.
La forma de uso de la opción -A sería:
# gpasswd -A usuario grupo |
por ejemplo:
# gpasswd -A jose admin
con lo que estaríamos añadiendo al usuario antonio como administrador del grupo admin.
Un administrador del grupo no tiene por qué ser miembro de dicho grupo, aunque en cualquier momento podría agregarse a sí mismo.
Añadir miembros al grupo
Ante todo, para agregar un usuario un grupo es necesario que este usuario exista en el sistema.
Hay diversas formas de añadir un miembro al grupo.
Se podría hacer con la orden usermod, pero resulta una tanto incómoda porque tenemos que poner la lista completa de grupos a los que pertenece el usuario; esta orden está pensada para modificar los datos de los usuarios más que para modificar los grupos.
Las otras opciones implican el uso de
gpasswd |
El root puede agregar miembros a un grupo con la opción -M.
La forma de uso de esta opción sería:
# gpasswd -M usuario grupo |
por ejemplo
# gpasswd -M julia admin |
con lo cual estaríamos incluyendo al usuario julia como miembro del grupo admin.
También los administradores de grupo pueden agregar nuevos usuarios con la opción -a de la misma forma que lo hacía el root con la opción -M.
Veámoslo :
# gpasswd -M julia admin |
y tendría el msimo efecto de añadir el usuario julia al grupo admin.
Si quien quiere agregar un usuario a un grupo es un administrador de ese grupo tendría que utilizar la opción -a de
gpasswd |
Por ejemplo:
$ gpasswd -a sierra admin |
y estaría añadiendo al usuario sierra al grupo admin.
Eliminar miembros del grupoTanto el root como los administradores de grupo pueden eliminar un usuario de un grupo utilizando la opción -d de
gpasswd |
Por ejemplo el usuario jose es administrador del grupo admin y para eliminar de este grupo al usuario juan tendría que ejecutar:
$ gpasswd -d juan admin |
Asignar contraseña a un grupo
En principio sólo los miembros de un grupo pueden utilizar la orden
newgrp |
para seleccionar un grupo principal alternativo.
Si quisieramos que cualquier usuario pudiera acceder a un grupo sin ser miembro de él, tendríamos que asignarle una contraseña al grupo.
Esto lo pueden hacer el root y los administradores del grupo.
La asignación de contraseña a un grupo se hace con la orden
gpasswd |
sin opciones e indicando el nombre del grupo al que le queremos asignar contraseña.
Por ejemplo, para asignarle contraseña al grupo admin tendríamos que ejecutar:
$ gpasswd admin |
y el sistema respondería solicitando la contraseña dos veces.
Para eliminar la contraseña de un grupo utilizamos la opción -r de
gpasswd |
Por ejemplo
$ gpasswd -r admin |
eliminaría la contraseña del grupo admin.
Sólo root y los administradores del grupo pueden ejecutar gpasswd con esta opción.
El efecto de eliminar la contraseña es que sólo los miembros del grupo pueden utilizar la orden newgrp para cambiar de grupo.
Deshabilitar la contraseña de un grupo
Otra posibilidad es deshabilitar la contraseña de un grupo; consiste en poner un carácter ! en lugar de la clave y tiene el efecto de impedir la orden
newgrp |
para este grupo: ningún usuario puede usarlo como grupo principal.
Para deshabilitar la contraseña de un grupo utilizaremos la opción -R de
gpasswd |
junto con el nombre de grupo. Por ejemplo, para deshabilitar la contraseña en el grupo admin tendríamos que poner:
$ gpasswd -R admin |
Al igual que en los otros casos sólo root y los administradores del grupo pueden ejecutar
gpasswd |
con esta opción.
Modificar y eliminar gruposTambién tendremos la necesidad de modificar las características de un grupo y eliminarlos.
Estas operaciones se realizan con unas órdenes similares a las que utilizábamos para realizar las mismas tareas con los usuarios.
Eliminar grupos: groupdel
Si queremos eliminar un grupo tendremos que utilizar la orden groupdel seguida del nombre del grupo.
Sólo el root puede eliminar un grupo del sistema.
Por ejemplo para eliminar el grupo oficina ejecutaríamos
# groupdel oficina |
Para eliminar un grupo que sea el grupo principal de algún usuario es necesario eliminar antes al usuario; si un grupo es el grupo principal de algún usuario no se puede eliminar.
La orden groupmod modifica los datos de un grupo con las siguientes opciones:
-g nuevo_GID
-n nuevo_nombre
Por ejemplo:
# groupmod -g 800 -n gestion admin |
Con lo que cambiaríamos de nombre al grupo admin para llamarlo gestion que también tendría GID 800
La opción -g permite modificar el GID de un grupo y la opción -n permite modificar el nombre. Sólo root tiene los permisos necesarios para llevarlo a cabo.
La modificación del nombre se refleja automáticamente pues simplemente le asigna al mismo GID que tuviera otro nombre, pero el cambio de GID puede ocasionar que haya ficheros que se queden sin grupo conocido. Permanecerán con el mismo GID pero sin nombre, por lo que en los listados de ficheros, por ejemplo, nos parecerá el número en lugar del nombre.
Extraído de:
http://dns.bdat.net/blog/index.php?option=com_content&task=view&id=66&Itemid=15
lunes, 18 de febrero de 2008
Cómo descubrir el hardware instalado en nuestro ordenador
En linux podemos utilizar hwinfo, hardinfo, lshw o mirar en el directorio /proc.
En mi caso hwinfo me ha ofrecido la siguiente información acerca de la memoria:
01: None 00.0: 10102 Main Memory
[Created at memory.59]
Unique ID: rdCR.CxwsZFjVASF
Hardware Class: memory
Model: "Main Memory"
Memory Range: 0x00000000-0x1dfeffff (rw)
Memory Size: 480 MB
Config Status: cfg=no, avail=yes, need=no, active=unknown
Con lshw vemos lo siguiente:
*-memory
description: System Memory
physical id: 1b
slot: System board or motherboard
size: 512MiB
*-bank:0
description: DIMM SDRAM Synchronous
physical id: 0
slot: A0
size: 512MiB
width: 64 bits
*-bank:1
description: DIMM [empty]
physical id: 1
slot: A1
*-bank:2
description: DIMM [empty]
physical id: 2
slot: A2
*-bank:3
description: DIMM [empty]
physical id: 3
slot: A3
viernes, 1 de febrero de 2008
Gestión de usuarios
La base de datos de los usuarios: /etc/passwd
En Linux la base de datos de usuarios se almacena en el fichero /etc/passwd. Este fichero contiene una línea por cada usuario de la siguiente forma
pfabrega:x:500:500:Pedro Pablo:/home/pfabrega:/bin/bash
es decir siete campos distintos separados por el carácter ":" y en el siguiente orden:
- nombre de usuario
- contraseña cifrada
- UID (User IDentifier) o número de usuario
- GID (Group IDentifier) o número de grupo primario
- Nombre completo
- Directorio personal
- Shell del usuario
La principal característica del fichero /etc/passwd es que es de lectura pública y sólo el root tiene permiso de escritura. Por este motivo, el programa que escribe en él, /bin/passwd, tiene que tener asignado el bit SUID.
nombre de usuario
Es el primer campo del fichero /etc/passwd.
El nombre de usuario es poco relevante en la gestión interna del sistema, aunque es necesario identificarse con él para iniciar una sesión de trabajo; como veremos más adelante, lo que realmente asigna la identidad es el UID o número de usuario.
Si eliminamos un usuario del sistema del fichero /etc/passwd y quedan ficheros de su propiedad, al hacer un ls -la, en lugar de aparecer el nombre de usuario aparecerá el UID que tuviera ese usuario. Si volvemos a dar de alta otro usuario con ese mismo UID esos ficheros ahora serán de su propiedad; es un detalle a tener en cuenta, tanto para conocer el funcionamiento del sistema como para prevenir posibles problemas de privacidad de la información.
contraseña cifrada
El siguiente campo incluye la contraseña cifrada mediante el algoritmo DES (Data Encryption Standard), un algoritmo de cifrado de una sola vía: una vez cifrado no se puede descifrar. Para verificar que una contraseña cifrada coincide con la que suministramos, primero se cifra y después se compara.
Cada contraseña cifrada consta de 13 caracteres, los dos primeros son un valor semilla y los once restantes son la contraseña cifrada propiamente dicha.
De esta forma una misma contraseña puede tener múltiples valores cifrados.
De todas formas observamos como en el ejemplo de línea del fichero que poníamos anteriormente en este campo aparece una 'x'. Esto se debe a que no resulta aconsejable dejar las contraseñas cifradas al alcance de cualquier usuario; existen programass que probando combinaciones (lo que se conoce como ataque de fuerza bruta) consiguen descifrar algunas contraseñas, comprometiendo a los usuarios y a todo el sistema. Por este motivo, las contraseñas cifradas reales se guardan en el fichero /etc/shadow que además añade nuevas prestaciones a la gestión de usuarios de un sistema Unix.
Si un sistema no tiene activas las shadow password, cosa poco habitual, conviene hacerlo con la orden pwconv. Esta orden pertenece al paquete shadow-utils.
Los sistemas también admiten otros mecanismos de cifrado de contraseñas tales como md5.
UID
Es el número que identifica al usuario. Este número es el que se guarda en cada i-nodo de fichero para determinar quién es su propietario. El UID también se utiliza para identificar al propietario de un proceso.
Es posible tener en un mismo fichero /etc/passwd que tenga dos usuarios con el mismo UID. A todos los efectos son el mismo usuario y tienen los mismos privilegios.
El UID 0 pertenece a root y lo identifica como administrador del sistema concediéndolo todos los privilegios. Ésta es un forma de acceder a privilegios del sistema, editando el fichero y modificando el UID; por este motivo es importante que el root no deje sesiones de trabajo abiertas que permitan a un usuario en un instante modificar el fichero y acceder a privilegios que no le corresponden.
En un sistema Unix existen diversos usuarios propios del sistema y otros que el administrador da de alta. El administrador del sistema, en primer lugar deberá familiarizarse con los usuarios predeterminados del fichero /etc/passwd para evitar que alguien cree un usuario fraudulento que pase inadvertido entre otros usuarios del sistema.
Para facilitar la administración es conveniente crear rangos de usuarios según su tipo. Por ejemplo, los UID desde cero hasta 100 serán los usuarios especiales del sistema, a partir de 500 los usuarios normales, desde 1000 los usuarios del servidor HTTP, desde 5000 los usuarios sólo de correo electrónico, etc.
GID
Este es el número que identifica el grupo principal del usuario. Se utiliza para asignar una serie de propiedades a un conjunto de usuario. Muchos sistema, de forma predeterminada, crean un nuevo grupo exclusivo para cada usuario para garantizar un máximo de privacidad. Además un usuario puede pertenecer a otros grupos alternativos, lo que permite organizar los permisos de acceso a los recursos según las necesidades del sistema.
De la misma forma que el UID, el GID 0 es del grupo root, lo que permite a los miembros de este grupo realizar diversas labores de administración. De todas formas, incluir a un usuario en el grupo root debería hacerse con mucha precaución, si es estrictamente necesario, o mejor, no hacerlo.
nombre completo
Este campo es meramente informativo, y lo utilizan diversas utilidades del sistema. Este campo puede estar vacío sin más repercusiones.
directorio personal
Este campo es importante. Es donde cada usuario tiene permiso para crear sus ficheros y es el directorio activo cuando un usuario inicia una sesión en el sistema. Normalmente este directorio se crea dentro del directorio /home, pero esto no es ninguna exigencia del sistema; si las necesidades son otras también se puede crear el directorio personal en otra ubicación distinta. Por ejemplo, si queremos que un usuario sólo pueda modificar páginas web dentro del directorio /var/www/html, entonces podríamos hacer que éste fuera su directorio personal y asignarle permiso de escritura sobre él.
shell
En general en este último campo se especifica un programa que se ejecutará cuando un usuario inicia una sesión de trabajo en el sistema.
Normalmente este campo especifica una shell, aunque puede ser cualquier otro programa que queramos que se ejecute cuando se conecta un usuario.Por ejemplo, en los casos de usuarios del sistema que nunca iniciarán una sesión de trabajo tienen un /bin/false como campo de shell. Este podría ser el caso de cierto tipo de usuario del sistema, por ejemplo aquéllos que sólo sean usuarios de correo electrónico.
Este campo se puede utilizar para crear un usuario y lanzar un determinado proceso en el sistema de forma remota. Por ejemplo, para lanzar una conexión a internet por módem sólo lo puede lanzar el root o darle privilegios de root a otro usuario. Otra posibilidad sería crear un usuario con los UID y GID adecuados y ponerle en el campo correspondiente a la shell el programa que lanza la conexión. De esta forma sólo tendremos que dar la contraseña de ese usuario a quienes queramos que puedan lanzar la conexión.
Para crear un usuario, escribimos, entrando como root, "useradd" o "adduser" sin las comillas más el nombre del usuario. Ej.:
adduser carlos
Habrás creado un usuario sin clave de acceso, y escribiendo al inicio de Linux en login el nombre carlos, entrarás en TU SESIÓN.
De esta forma crearemos un usuario con las características por defecto, que suelen ser las mejores. Pero para crear un usuario a nuestra medida, también podemos escribir:
(Forma general)
[root@Wakitaki /root]# adduser -u 500 -g users carlos
[root@Wakitaki /root]# passwd carlos
(y asignamos la clave para carlos)
[root@Wakitaki /root]# adduser -u 501 -g users javier
[root@Wakitaki /root]# passwd javier
(y asignamos la clave para javier)
o también:
[root@Wakitaki /root]# adduser -u 500 -g 100 -p 123 -r carlos
Ahora ya sabemos que -u 500 -g 100 -p 123 -r son opcionales y no hace falta escribirlos para crear al usuario. Estas son algunas de las características más importantes a la hora de crear usuarios:
- adduser -u : Indica la UID del usuario, o sea, el número con el que el sistema identificará al usuario. Es conveniente que los números de usuario/cuenta (definidos en el fichero /etc/passwd) sean consecutivos dentro del mismo grupo. Por ejemplo, podemos ponerle 500 para el primer usuario, 502 para el siguiente, 502 el 3º, etc.
- -g 100. Indica el GID, esto es, el grupo al que ese usuario pertenece. Esto es importante porque en Linux un grupo de usuarios puede compartir una serie de ficheros y directorios. El número ha de ser el mismo para todos los que formen el grupo. Así, el grupo de los que formen el grupo 100 será uno, el 101 será otro, el 102 otro, etc. (TODOS los USUARIOS, deberían estar bajo el mismo grupo, "users", que suele ser el grupo 100). El fichero que identifica a los grupos es: /etc/group.
- -p 123. Se refiere a la clave del usuario para entrar en el sistema. No es obligatorio ponerla, pero sí muy recomendable.
- -r carlos. Será el nombre con el que el usuario entre en el sistema.
El usuario creado se guardará en el directorio /home, y con el directorio con el nombre del usuario creado, en este caso será: /home/carlos, con todas las configuraciones por definir, un .bashrc y un fichero .bash_profile, que tienen una mínima configuración, la cual recomendamos (ver capítulos anteriores) para una gestión adecuada.
Editar usuarios
Para editar usuarios, editamos el archivo passwd, con el joe, por ej.: Escribiremos:
cd /etc
joe passwd
joe shadow
o bien:
joe /etc/passwd
joe /etc/shadow
En este fichero la estructura es como sigue:
Cada línea de este archivo corresponde con un usuario, y cada uno de sus campos (separados por dos puntos) se refiere a un dato.
Los asteriscos (*) en el segundo campo indican las cuentas que no se pueden usar como usuarios normales. Pueden usarse también cuando queremos dar de baja temporalmente a un usuario.
Para eliminar una clave (password), podemos borrar lo que viene situado en el segundo campo de cada línea entre los dos puntos (:), o usar el comando:
para cambiarle la clave a Carlos.
Sólo root puede cambiarle la clave a otros usuarios. Como usuarios normales podemos cambiar nuestra clave escribiendo: passwd
donde se nos preguntará por la antigua contraseña, la nueva y que la verifiquemos.
Si no te acuerdas, o cualquier usuario no se acuerda de su password, root deberá encargarse de editar el fichero /etc/passwd y suprimir la línea donde aparece la clave:
javier:ClaveOlvidada:...
Para quedar:
javier::...La orden usermod dispone de las mismas opciones que la orden userdd por lo que no vamos a repetirlas por completo, podremos cambiar el directorio personal, la cuenta el UID, la shell, etc.
La opción -L bloquea una cuenta de usuario añadiéndole a la clave cifrada un carácter !
Con la opción -U se levanta el bloqueo de la cuenta.
Por ejemplo:# usermod -L antonio |
y la cuenta antonio permanecería bloqueda en el sistema.
Para desbloquearla usaríamos:
# usermod -U antonio |
Cuando se prevea que una cuenta de usuario no va a utilizarse pero no interesa borrarla por cualquier circunstancia lo mejor que podemos hacer es bloquearla para evitar que sea utilizada indebidamente y pueda comprometer otras cuentas o el sistema.
Borrar un usuario
Para eliminar usuarios tenemos la orden userdel.
Si ejecutamos:
# userdel antonio |
eliminaríamos de la base de datos la cuenta antonio pero dejaría en el sistema su directorio personal. Si también queremos eliminar el directorio personal tendríamos que utilizar la opción -r
# userdel -r antonio |
y en este caso se eliminaría el directorio personal también. El resto de ficheros propiedad de este usuario que hubiera en otros directorios, normalmente en /tmp o en ya que no debería tener permiso de escitura en otros, permanecen y tendría que borrarlos explícitamente el administrador, por ejemplo con:
# find / -uid xxx -exec rm {} \; |
donde xxx sería el UID del usuario que hemos borrado.
Antes de utilizar la orden con la opción rm sería conveniente que mostrara los ficheros que vamos a borrar para evitar llevarnos una sorpresa y borrar más de lo que realmente queríamos.
Extraído de:
http://dns.bdat.net/blog/index.php?option=com_content&task=view&id=61&Itemid=15
http://www.linux-party.com/TutorialLinux/linux_files/linux5.html