# data[].attributes.body
https://www.google.com.mx/amp/s/blog.desdelinux.net/permisos-y-derechos-en-linux/amp/

# data[].attributes.attachment_link.readable_text
Cuántos de nosotros hemos tenido la necesidad de "limitar el acceso" a los archivos contenidos en determinado directorio/carpeta o simplemente necesitamos evitar que algunas personas vean, eliminen o modifiquen el contenido de determinado archivo? Más de uno, verdad? Podremos lograrlo en nuestro amado pingüino? La respuesta es: por supuesto que sí :D.
Introducción
Muchos de los que provenimos de Windows, estábamos acostumbrados a lidiar con esta "problemática" de una manera muy diferente, para conseguir este objetivo teníamos que recurrir a "técnicas" poco ortodoxas, como, ocultar el fichero por medio de sus atributos, mover nuestra información al lugar más recóndito de nuestro equipo (dentro de 20,000 carpetas) para tratar de disuadir a nuestro "enemigo" XD, cambiando o eliminando la extensión del archivo, o la más "común" de las practicas, descargar un programa que nos permita "cerrar" nuestro directorio detrás de un lindo cuadro de dialogo que nos pida una contraseña para acceder al mismo. Teníamos otra alternativa mucho mejor? No.

Lo siento mucho por mis amigos "Windoleros" (lo digo con mucho cariño para que nadie se ofenda, ok? ;)), pero hoy me toca ensañarme un poquito con Windows :P, ya que explicare el porqué este SO no permite de manera nativa esta funcionalidad.

Cuántos de ustedes habrán notado que cuando nos sentamos detrás de un equipo "Windows" (aunque no sea el nuestro) nos convertimos automáticamente en dueños de todo aquello que contiene el ordenador (imágenes, documentos, programas, etc.)? A que me refiero? Bueno, a que simplemente al tomar el "control de Windows", podemos copiar, mover, eliminar, crear, abrir o modificar carpetas y archivos a diestra y siniestra, independientemente si nosotros somos los "dueños" de esta información o no. Esto refleja un gran fallo en la seguridad del sistema operativo, verdad? Bueno, todo esto se debe a que los sistemas operativos de Microsoft no fueron diseñados desde el inicio para ser multiusuario. Cuando se lanzaron las versiones de MS-DOS y algunas versiones de Windows, confiaban plenamente en que el usuario final sería el responsable de "custodiar" su respectivo equipo para que ningún otro usuario tuviera acceso a la información almacenada en el mismo... vaya ingenuidad ¬¬. Ahora amigos WinUsers, ya saben el porqué ha este "misterio" :D.

A contrapartida, GNU/Linux, al ser un sistema diseñado fundamentalmente para trabajo en red, la seguridad de la información que almacenemos en nuestros equipos (y no se diga en los servidores) es fundamental, ya que muchos usuarios tendrán o podrán tener acceso a parte de los recursos de software (tanto aplicaciones como información) y hardware que están gestionados en estos ordenadores.

Ahora podemos ver porque la necesidad de un sistema de permisos? Adentrémonos en el tema ;).

En GNU/Linux, los permisos o derechos que los usuarios pueden tener sobre determinados archivos contenidos en él se establecen en tres niveles claramente diferenciados. Estos tres niveles son los siguientes:

Para tener claros estos conceptos, en los sistemas en red (como lo es el pingüino) siempre existe la figura del administrador, superusuario o root. Este administrador es el encargado de crear y dar de baja a usuarios, así como también, de establecer los privilegios que cada uno de ellos tendrá en el sistema. Estos privilegios se establecen tanto para el directorio HOME de cada usuario como para los directorios y archivos a los que el administrador decida que el usuario pueda acceder.
Permisos del propietario
El propietario es aquel usuario que genera o crea un archivo/carpeta dentro de su directorio de trabajo (HOME), o en algún otro directorio sobre el que tenga derechos. Cada usuario tiene la potestad de crear, por defecto, los archivos que quiera dentro de su directorio de trabajo. En principio, él y solamente él será el que tenga acceso a la información contenida en los archivos y directorios que hay en su directorio HOME.
Permisos del grupo
Lo más normal es que cada usuario pertenezca a un grupo de trabajo. De esta forma, cuando se gestiona un grupo, se gestionan todos los usuarios que pertenecen a éste. Es decir, es más fácil integrar varios usuarios en un grupo al que se le conceden determinados privilegios en el sistema, que asignar los privilegios de forma independiente a cada usuario.
Permisos del resto de usuarios
Por último, también los privilegios de los archivos contenidos en cualquier directorio, pueden tenerlos otros usuarios que no pertenezcan al grupo de trabajo en el que está integrado el archivo en cuestión. Es decir, a los usuarios que no pertenecen al grupo de trabajo en el que está el archivo, pero que pertenecen a otros grupos de trabajo, se les denomina resto de usuarios del sistema.

Muy lindo, pero como puedo identificar todo esto? Sencillo, abre una terminal y realiza lo siguiente:

Nota: son letras "L" minúsculas 😉

Nos aparecerá algo como lo siguiente:

Como podrán observar, este comando despliega o "lista" el contenido de mi HOME, lo que nos ocupa son las líneas de color rojo y verde. El recuadro de color rojo, nos muestra quien es propietario y el recuadro de color verde indica a qué grupo pertenece cada uno de los archivos y carpetas anteriormente listadas. En este caso tanto el propietario y el grupo se llaman "perseo", pero bien pudieron haberse encontrado con un grupo distinto como pudiera ser "ventas". Por lo demás, no se preocupen por ahora, lo veremos más adelante :D.
Tipos de permisos en GNU/Linux
Antes de aprender cómo se establecen los permisos en GNU/Linux, debemos saber cómo se pueden diferenciar los diferentes tipos de archivos que el sistema puede tener.

Cada archivo en GNU/Linux queda identificado por 10 caracteres mismos a los que se les denomina máscara. De estos 10 caracteres, el primero (de izquierda a derecha) hace referencia al tipo de archivo. Los 9 siguientes, de izquierda a derecha y en bloques de 3, hacen referencia a los permisos que se le conceden, respectivamente, al propietario, al grupo y al resto u otros. Una captura para demostrar todo este rollo:

El primer carácter de los archivos puede ser el siguiente:

Los siguientes nueve caracteres son los permisos que se les concede a los usuarios del sistema. Cada tres caracteres, se referencian los permisos de propietario, grupo y resto de usuarios.

Los caracteres que definen estos permisos son los siguientes:
Permisos para archivos Permisos para directorios
Nota: Si no se dispone del permiso de ejecución, no podremos acceder a dicho directorio (aunque utilicemos el comando "cd"), ya que esta acción será denegada. También permite delimitar el uso de un directorio como parte de una ruta (como cuando pasamos la ruta de un archivo que se encuentra en dicho directorio como referencia. Supongamos que queremos copiar el archivo "X.ogg" el cual se encuentra en la carpeta "/home/perseo/Z" -para lo cual la carpeta "Z" no tiene permiso de ejecución-, haríamos lo siguiente:
$ cp /home/perseo/Z/X.ogg /home/perseo/Y/
obteniendo con esto un mensaje de error diciéndonos que no tenemos los permisos suficientes para acceder al archivo :D). Si el permiso de ejecución de un directorio está desactivado, se podrá ver su contenido (si se cuenta con permiso de lectura), pero no se podrá acceder a ninguno de los objetos contenidos en él, pues para ello este directorio es parte del camino necesario para resolver la ubicación de sus objetos.
Gestión de permisos en GNU/Linux
Hasta ahora, hemos visto para que nos sirven los permisos en GNU/Linux, a continuación veremos cómo asignar o restar permisos o derechos.

Antes de comenzar, debemos de tener en cuenta que cuando damos de alta o creamos un usuario en el sistema, le concedemos de forma automática unos privilegios. Estos privilegios, por supuesto, no serán totales, es decir, los usuarios no dispondrán, normalmente, de los mismos permisos y derechos del superusuario. Cuando el usuario se crea, el sistema genera por defecto los privilegios del usuario para manejo de archivos y para manejo de directorios. Evidentemente, éstos pueden ser modificados por el administrador, pero el sistema genera unos privilegios más o menos válidos para la mayoría de las operaciones que cada usuario realizará sobre su directorio, sus archivos y sobre los directorios y archivos del resto de usuarios. Por lo general, son los siguientes permisos:

Nota: no son los mismos permisos para todas las distribuciones de GNU/Linux.

Estos privilegios nos permiten crear, copiar y borrar archivos, crear nuevos directorios, etc. Veamos en la práctica todo esto :D:

Tomemos como ejemplo el archivo "CSS Avanzado.pdf". Observemos que aparece de la siguiente manera: -rw-r--r-- ... CSS Avanzado.pdf. Miremos más a fondo.

Esto significa que:

<° Tipo: Archivo
<° El usuario puede: Leer (visualizar el contenido) y escribir (modificar) el archivo.
<° El grupo al que pertenece el usuario puede: Leer (únicamente) el archivo.
<° Otros usuarios pueden: Leer (únicamente) el archivo.

Para aquellos curiosos que se están preguntando en estos momentos a que se refieren los otros campos del listado obtenido por ls -l, aquí la respuesta:

Si desean saber más acerca de los hard y soft/symbolic links, aquí la explicación y sus diferencias.

Bueno amigos, llegamos a la parte más interesante y pesada del tema en cuestión...
Asignación de permisos
El comando chmod ("change mode") permite modificar la máscara para que se puedan realizar más o menos operaciones sobre archivos o directorios, dicho de otra forma, con chmod puedes quitar o eliminar derechos a cada tipo de usuarios. Si no se especifica el tipo de usuario al que queremos quitar, poner o asignar privilegios, lo que sucederá al realizar la operación es afectar a todos los usuarios simultáneamente.

Lo básico que hay que recordar es que le demos dar o quitar permisos en estos niveles:

Tipos de permiso:

Dar permiso de ejecución al dueño:
$ chmod u+x komodo.sh
Quitar permiso de ejecución a todos los usuarios:
$ chmod -x komodo.sh
Dar permiso de lectura y escritura a los demás usuarios:
$ chmod o+r+w komodo.sh
Dejar solo permiso de lectura al grupo al que pertenece el archivo:
$ chmod g+r-w-x komodo.sh Permisos en formato numérico octal
Hay otra forma de utilizar el comando chmod que, para muchos usuarios, resulta "más cómoda", aunque a priori sea algo más compleja de entender ¬¬.

La combinación de valores de cada grupo de los usuarios forma un número octal, el bit "x" es 20 es decir 1, el bit w es 21 es decir 2, el bit r es 22 es decir 4, tenemos entonces:

La combinación de bits encendidos o apagados en cada grupo da ocho posibles combinaciones de valores, es decir la suma de los bits encendidos:

Cuando se combinan los permisos del usuario, grupo y otros, se obtienen un número de tres cifras que conforman los permisos del archivo o del directorio. Ejemplos:

711

El propietario lectura, escritura y ejecución, el grupo y otros solo ejecución

400

Solo el propietario puede leer el archivo, pero ni el mismo puede modificarlo o ejecutarlo y por supuesto ni el grupo ni otros pueden hacer nada en el

640

El usuario propietario puede leer y escribir, el grupo puede leer el archivo y otros no pueden hacer nada

Permisos especiales
Aún hay otro tipo de permisos que hay que considerar. Se trata del bit de permisos SUID (Set User ID), el bit de permisos SGID (Set Group ID) y el bit de permisos de persistencia (sticky bit).
setuid
El bit setuid es asignable a ficheros ejecutables, y permite que cuando un usuario ejecute dicho fichero, el proceso adquiera los permisos del propietario del fichero ejecutado. El ejemplo más claro de fichero ejecutable y con el bit setuid es:

Podemos ver que el bit está asignado como "s" en la siguiente captura:

Para asignar este bit a un fichero seria:
$ chmod u+s /bin/su
Y para quitarlo:
$ chmod u-s /bin/su
Nota: Debemos utilizar este bit con extremo cuidado ya que puede provocar una escalada de privilegios en nuestro sistema ¬¬.
setgid
El bit setid permite adquirir los privilegios del grupo asignado al fichero, también es asignable a directorios. Esto será muy útil cuando varios usuarios de un mismo grupo necesiten trabajar con recursos dentro de un mismo directorio.

Para asignar este bit hacemos lo siguiente:
$ chmod g+s /carpeta_compartida
Y para quitarlo:
$ chmod g-s /carpeta_compartida sticky
Este bit suele asignarse en directorios a los que todos los usuarios tienen acceso, y permite evitar que un usuario pueda borrar ficheros/directorios de otro usuario dentro de ese directorio, ya que todos tienen permiso de escritura.
Podemos ver que el bit está asignado como "t" en la siguiente captura:

Para asignar este bit hacemos lo siguiente:
$ chmod o+t /tmp
Y para quitarlo:
$ chmod o-t /tmp
Bueno amigos, ahora ya saben cómo proteger de mejor manera su información, con esto espero que dejen de buscar alternativas para Folder Lock o Folder Guard que en GNU/Linux no los necesitamos para nada XD.

P.D.: Este articulo en particular me lo solicito el vecino del primo de un amigo XD, espero haberle resuelto sus dudas... 😀

# data[].attributes.attachment_link.description
Cuántos de nosotros hemos tenido la necesidad de "limitar el acceso" a los archivos contenidos en determinado directorio/carpeta o simplemente necesitamos evitar que algunas personas vean, eliminen o modifiquen el contenido de determinado archivo? Más de uno, verdad? Podremos lograrlo en nuestro amado pingüino? La respuesta es: por supuesto que sí :D.

# data[].attributes.attachment_link.readable_text
En este tutorial, aprenderás a cambiar permisos y propietarios en Linux usando los comandos chmod y chown. Al hacerlo, conseguirás una mejor gestión en los proyectos en equipo.

Aprovecha nuestro descuento de hasta 70% y obtén tu alojamiento VPS Linux en Hostinger.
Conseguir descuento

Por qué es necesario cambiar los permisos y los propietarios en Linux

Linux es un sistema operativo multiusuario, por lo que más de una persona puede trabajar en el mismo ordenador al mismo tiempo. Además, es posible acceder al sistema de forma local o remota. Por eso los desarrolladores suelen utilizar este sistema operativo para proyectos en grupo.

En un entorno tan amplio, debemos establecer los permisos y la propiedad de los archivos, de modo que sólo determinados usuarios puedan acceder a nuestros datos. De esta manera, protegeremos la información sensible y evitaremos que se produzcan cambios no deseados.

Afortunadamente, gracias a los comandos chmod y chown, es fácil cambiar los permisos y los propietarios en Linux. Pero antes de empezar a aprender a utilizarlos, asegúrate de que tienes acceso a la línea de comandos. Puedes iniciar la terminal pulsando Ctrl + Alt + T.

Cambiar permisos de archivos y carpetas

Usaremos el comando chmod para cambiar permisos de un archivo o carpeta en Linux. Pero primero, debes saber que hay tres tipos de usuarios que pueden interactuar con un archivo:

owner (propietario)
Es el usuario que creó y posee un archivo/directorio.

group (grupo)
Todos los usuarios que son miembros del mismo grupo.

others (otros)
Todos los demás usuarios del sistema que no son propietarios ni miembros del grupo.

Para ver los permisos y propietarios de un archivo específico, puedes ejecutar este comando:

ls -l [nombre del archivo]

El resultado mostraría algo así:

-rwxr-rw- 1 usuario usuario 0 Jan 19 12:59 miarchivo.txt

Desglosemos el resultado para ver qué significa cada campo:

'-rwxr-rw-' - Esta parte de la línea representa los permisos del archivo. Para entenderlo mejor, tenemos que dividirlo en cuatro grupos: (-), (rwx), (rw-) y (rw-).
- El primer grupo indica el tipo de archivo. Nuestro ejemplo muestra un guión, que representa un archivo normal. Si estamos inspeccionando un directorio, el guión será sustituido por la d.
- Los tres caracteres después del tipo de archivo representan los permisos del propietario. En este ejemplo, podemos ver que el propietario puede leer (r), escribir (w) y ejecutar (x) el archivo.
- Los siguientes tres caracteres son los permisos del grupo. Podemos concluir que el grupo puede leer (r) y escribir (w), pero no puede ejecutar el archivo. Esto se debe a que el último carácter es un guión en lugar de la letra x.
- El último grupo es el de los permisos del resto de usuarios. Basándonos en nuestro ejemplo, este tipo de usuario no puede ejecutar el archivo, pero se le permite leer y escribir.

1 - Es la cantidad de enlaces fijos (hard links). Un enlace fijo es un nombre adicional para un archivo existente.

usuario usuario - El propietario y el grupo propietario del archivo.

0 - El tamaño del archivo en bytes.

Jan 19 12:59 - La fecha de la última modificación.

miarchivo.txt - El nombre del archivo/carpeta.

Cómo usar el comando chmod

Digamos que queremos cambiar los permisos de los archivos de Linux de -rwxrw-rw- a -rwx-r-r-. Simplemente introduce esta línea:

chmod 744 [nombre del archivo]

Al ejecutar este comando, el propietario puede leer, escribir y ejecutar el archivo ( rwx). Sin embargo, el grupo y otros sólo pueden leer ( r-).

Llegados a este punto, puede que te preguntes por qué utilizamos un número de tres dígitos (744) después del comando chmod.

Este número determina los permisos del archivo. Leer, escribir y ejecutar están representados por un valor numérico:

Así que si quieres dar todos los permisos ( rwx) a un usuario, tenemos que añadir leer (4), escribir (2) y ejecutar (1). Por lo tanto, rwx es igual a 7.

Mientras tanto, como el grupo y otros sólo pueden leer el archivo, les asignamos 4.

Recuerda que los permisos del propietario siempre van primero, seguidos por los del grupo y otros. Por eso introducimos 744.

Si no quieres dar ningún permiso a un usuario, introduce 0 en el lugar correspondiente.

Aquí hay una lista de los permisos más comunes para los archivos:

Permisos comunes para directorios:

Cambiar los propietarios de archivos y carpetas

Para cambiar el propietario de un archivo y una carpeta, utilizaremos el comando chown. Esta es la sintaxis básica:

chown [propietario/grupo propietario] [nombre del archivo]

Digamos que tenemos un archivo llamado " miarchivo.txt". Si queremos que el propietario del archivo sea " hostinger ", podemos utilizar este comando:

chown hostinger miarchivo.txt

Sin embargo, si queremos cambiar el grupo propietario del archivo a " clientes ", introduciremos esta línea en su lugar:

chown :clientes miarchivo.txt

Observa que usamos dos puntos (:) antes de "clientes" para indicar que se trata de un grupo propietario.

Ahora, para cambiar el propietario y el grupo al mismo tiempo, la sintaxis sería así:

chown hostinger:clientes miarchivo.txt

La regla principal es que el propietario debe ir antes del grupo propietario, y tienen que estar separados por dos puntos.

Usar opciones con los comandos chmod y chown

Una opción es un comando adicional para modificar la respuesta de un comando.

Una de las opciones más populares que puedes combinar con chmod y chown es -R (recursivo). Esta opción te permite cambiar permisos o propietarios de todos los archivos y subdirectorios dentro de un directorio específico.

Si quieres utilizar una opción, tienes que colocarla justo después del comando chmod/chown.

Mira este ejemplo:

chown -R 755 /etc/misarchivos

Después de introducir el comando anterior, el propietario puede leer, escribir y ejecutar todos los archivos y subdirectorios dentro del directorio /etc/misarchivos. El comando también da permisos de lectura y ejecución al grupo y a otros.

Ten especial cuidado con esta opción. El uso incorrecto del comando puede causar un fallo grave, y requerirá mucho trabajo revertir los cambios.

Además de -R, las siguientes opciones se utilizan a menudo con los comandos chmod y chown:

-f o force. La línea de comandos ignorará cualquier error y aplicará los comandos chmod y chown.

La opción -v (verbose) te da un diagnóstico de todos los archivos que son procesados por el comando.

-c (changes) es imilar a -v, pero solo proporcionará información en caso de que los cambios se hayan realizado correctamente.

Conclusión

En este tutorial, has aprendido a utilizar los comandos chmod y chown para cambiar los permisos y los propietarios en Linux. También hemos proporcionado la sintaxis básica y varias opciones útiles que puedes combinar con cualquiera de estos comandos.

Para aprender más, puedes leer nuestro artículo sobre los comandos básicos de Linux.

Si tienes alguna pregunta, ¡no dudes en comentar abajo!

# data[].attributes.attachment_link.title
Cambiar Permisos y Propietarios en Linux con Comandos

# data[].attributes.attachment_link.description
En este tutorial, aprenderás a cambiar permisos y propietarios en Linux usando los comandos chmod y chown. Al hacerlo, conseguirás una mejor gestión en los proyectos en equipo. Aprovecha nuestro descuento de hasta 70% y obtén tu alojamiento VPS Linux en Hostinger.

# data[].attributes.body
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m1/permisos_de_archivos_y_carpetas.html
Permisos de archivos y carpetas

# data[].attributes.attachment_link.readable_text
Usuario propietario y grupo propietario de un archivo

Anteriormente se ha comentado que en Unix todos los archivos pertenecen obligatoriamente a un usuario y a un grupo. Cuando un usuario crea un nuevo archivo, el propietario del archivo será el usuario que lo ha creado y el grupo del archivo será el grupo principal de dicho usuario.

Ejemplo, si un usuario llamado 'pepe' cuyo grupo principal es el grupo 'profesores' crea un nuevo archivo, el propietario del archivo será 'pepe' y el grupo propietario del archivo será 'profesores', o lo que es lo mismo, el archivo pertenecerá al usuario pepe y al grupo profesores. Obligatoriamente, todos los archivos del sistema pertenecen a algún usuario y a algún grupo.

Con el comando ls añadiendo la opción -l (formato largo) podemos visualizar el usuario propietario y el grupo propietario del archivo, ejemplo:

Mostrar el propietario con el comando ls -l

Comprobamos que el usuario propietario es pepe y el grupo propietario es profesores. La misma información podemos verla desde el administrador de archivos si vamos a la carpeta /home/pepe y mostramos las columnas correspondientes:

Navegador de archivos

Tipos de permisos

En los Sistemas Unix, la gestión de los permisos que los usuarios y los grupos de usuarios tienen sobre los archivos y las carpetas, se realiza mediante un sencillo esquema de tres tipos de permisos que son:

Permiso de lectura

Permiso de escritura

Permiso de ejecución

El significado de estos permisos difiere si se tienen sobre archivos o sobre carpetas. A continuación veremos el significado para cada uno de los casos:

Permiso de lectura

Cuando un usuario tiene permiso de lectura de un archivo significa que puede leerlo o visualizarlo, bien sea con una aplicación o mediante comandos. Ejemplo, si tenemos permiso de lectura sobre el archivo examen.txt, significa que podemos ver el contenido del archivo. Si el usuario no tiene permiso de lectura, no podrá ver el contenido del archivo.

Cuando un usuario tiene permiso de lectura de una carpeta, significa que puede visualizar el contenido de la carpeta, es decir, puede ver los archivos y carpetas que contiene, bien sea con el comando 'ls' o con un explorador de archivos como Konqueror. Si el usuario no tiene permiso de lectura sobre la carpeta, no podrá ver lo que contiene.

El permiso de lectura se simboliza con la letra 'r' del inglés 'read'.

Permiso de lectura

Permiso de escritura

Cuando un usuario tiene permiso de escritura sobre un archivo significa que puede modificar su contenido, e incluso borrarlo. También le da derecho a cambiar los permisos del archivo mediante el comando chmod así como cambiar su propietario y el grupo propietario mediante el comando chown. Si el usuario no tiene permiso de escritura, no podrá modificar el contenido del archivo.

Cuando un usuario tiene permiso de escritura sobre una carpeta, significa que puede modificar el contenido de la carpeta, es decir, puede crear y eliminar archivos y otras carpetas dentro de ella. Si el usuario no tiene permiso de escritura sobre la carpeta, no podrá crear ni eliminar archivos ni carpetas dentro de ella.

El permiso de escritura se simboliza con la letra 'w' del inglés 'write'.

Permiso de escritura

Permiso de ejecución

Cuando un usuario tiene permiso de ejecución de un archivo significa que puede ejecutarlo. Si el usuario no dispone de permiso de ejecución, no podrá ejecutarlo aunque sea una aplicación.

Los únicos archivos ejecutables son las aplicaciones y los archivos de comandos (scripts). Si tratamos de ejecutar un archivo no ejecutable, dará errores.

Cuando un usuario tiene permiso de ejecución sobre una carpeta, significa que puede entrar en ella, bien sea con el comando 'cd' o con un explorador de archivos como Konqueror. Si no dispone del permiso de ejecución significa que no puede ir a dicha carpeta.

El permiso de ejecución se simboliza con la letra 'x' del inglés 'eXecute'.

Permiso de ejecución

¿A quién se puede otorgar permisos?

Los permisos solamente pueden ser otorgados a tres tipos o grupos de usuarios:

Al usuario propietario del archivo

Al grupo propietario del archivo

Al resto de usuarios del sistema (todos menos el propietario)

Se pueden dar permisos de lectura, escritura, ejecución ó combinación de ambos al usuario propietario del archivo, al grupo propietario del archivo o al resto de usuarios del sistema. En Unix no existe la posibilidad de asignar permisos a usuarios concretos ni a grupos concretos, tan solo se puede asignar permisos al usuario propietario, al grupo propietario o al resto de usuarios.

Ejemplo, si disponemos de un archivo llamado 'examen.txt' cuyo propietario es 'pepe' y cuyo grupo propietario es 'profesores', se pueden dar permisos de lectura, escritura, ejecución ó combinación de ambos al usuario 'pepe', al grupo 'profesores' y al resto de usuarios, pero no podremos dar permisos a otros usuarios distintos de pepe (juan, luis, pedro,...) ni a otros grupos (alumnos, directivos, personal,...) ya que el esquema Unix no lo permite.

Supongamos que la siguiente figura representa los permisos de examen.txt:

Permisos de archivo

El usuario propietario (pepe) podrá leer y escribir en el documento. Los pertenecientes al grupo profesores podrán leerlo y el resto no podrá hacer nada.

Si deseo que otros usuarios tengan algún permiso sobre el archivo 'examen.txt', no me quedará más remedio que incluirlos en el grupo profesores u otorgar el permiso al resto de usuarios pero si hago esto último, absolutamente todos los usuarios del sistema gozarán del permiso, por eso no se recomienda salvo que eso sea nuestra intención.

Para poder cambiar permisos sobre un archivo, es necesario poseer el permiso de escritura sobre el mismo. El usuario root puede modificar los permisos de cualquier archivo ya que tiene acceso total sin restricciones a la administración del sistema.

Visualizar los permisos de un archivo o carpeta

Con el comando ls -l podemos visualizar los permisos de los archivos o carpetas. Al ejecutar el comando aparecen todos los archivos, uno por línea. El bloque de 10 caracteres del principio simboliza el tipo de archivo y los permisos.

Permisos de archivo

El primer carácter indica de qué tipo de archivo se trata. Si es un guión '-' significa que se trata de un archivo normal, la letra 'd' significa que se trata de una carpeta (directory), la letra 'l' significa que se trata de un enlace (link). Otros valores son s, p, b que se refieren a sockets, tuberías (pipe) y dispositivos de bloque respectivamente.

Los 9 caracteres siguientes simbolizan los permisos del usuario propietario (3 caracteres), los permisos del grupo propietario (3 caracteres) y los permisos del resto de usuarios (3 caracteres). Vienen codificados con las letras r, w y x que se refieren a los permisos de lectura, escritura y ejecución. Si en lugar de aparecer dichas letras aparecen guiones significa que se carece de dicho permiso. Ejemplo, si los diez primeros caracteres son -rw-r----- significa que es un archivo normal, que el usuario propietario dispone de permisos de lectura y escritura pero no de ejecución, que el grupo propietario dispone tan solo de permiso de lectura y el resto de usuarios no dispone de ningún permiso. Veámoslo en la siguiente imagen:

Permisos de lectura y escritura para el propietario y lectura para el grupo

En el siguiente ejemplo vemos que pepe tiene permiso de lectura y escritura y que el resto solo tiene permiso de lectura tanto sobre el archivo 'apuntes.doc' como sobre el archivo 'examen.txt'.

// Visualización de permisos
ls -l
total 8
-rw-r--r-- 1 pepe profesores 359 2011-09-28 18:02 apuntes.doc
-rw-r--r-- 1 pepe profesores 11 2011-09-27 19:26 examen.txt

Cambio de permisos

Para cambiar los permisos de un archivo o una carpeta es necesario disponer del permiso de escritura (w) sobre dicho archivo o carpeta. Para hacerlo, se utiliza el comando chmod. La sintaxis del comando chmod es la siguiente:

chmod [opciones] permiso nombre_archivo_o_carpeta

Los permisos se pueden representar de dos formas. La primera es mediante las iniciales de a quién va dirigido el permiso (usuario=u, grupo=g, resto=o (other)), seguido de un signo + si se quiere añadir permiso o un signo - si se quiere quitar y seguido del tipo de permiso (lectura=r, escritura=w y ejecución=x). Ejemplos:

// Dar permiso de escritura al usuario propietario sobre el archivo 'examen.txt'
# chmod u+w examen.txt

// Quitar permiso de escritura al resto de usuarios sobre el archivo 'examen.txt'
# chmod o-w examen.txt

// Dar permiso de ejecución al grupo propietario sobre el archivo '/usr/bin/games/tetris'
# chmod g+x /usr/bin/games/tetris

// Dar permiso de lectura al grupo propietario sobre el archivo 'examen.txt'
# chmod g+r examen.txt

// Se pueden poner varios permisos juntos separados por comas
# chmod u+w,g-r,o-r examen.txt

// Se pueden poner varios usuarios juntos
# chmod ug+w examen.txt

La segunda forma de representar los permisos es mediante un código numérico cuya transformación al binario representaría la activación o desactivación de los permisos. El código numérico está compuesto por tres cifras entre 0 y 7. La primera de ellas representaría los permisos del usuario propietario, la segunda los del grupo propietario y la tercera los del resto de usuarios.

En binario, las combinaciones representan el tipo de permisos. El bit más a la derecha (menos significativo) se refiere al permiso de ejecución (1=activar y 0=desactivar). El bit central se refiere al permiso de escritura y el bit más a la izquierda se refiere al permiso de lectura. La siguiente tabla muestra las 8 combinaciones posibles:

Cód Binario Permisos efectivos
0 0 0 0 - - -
1 0 0 1 - - x
2 0 1 0 - w -
3 0 1 1 - w x
4 1 0 0 r - -
5 1 0 1 r - x
6 1 1 0 r w -
7 1 1 1 r w x

Si deseamos otorgar sólo permiso de lectura, el código a utilizar es el 4. Si deseamos otorgar sólo permiso de lectura y ejecución, el código es el 5. Si deseamos otorgar sólo permiso de lectura y escritura, el código es el 6. Si deseamos otorgar todos los permisos, el código es el 7. Si deseamos quitar todos los permisos, el código es el 0. Ejemplos:

// Dar todos los permisos al usuario y ninguno ni al grupo ni al resto
chmod 700 examen.txt

// Dar al usuario y al grupo permisos de lectura y ejecución y ninguno al resto
chmod 550 examen.txt

// Dar todos los permisos al usuario y lectura y ejecución al grupo y al resto
chmod 755 /usr/bin/games/tetris

// Dar todos los permisos al usuario y de lectura al resto, sobre todos los archivos
chmod 744 *

// Cambiar permisos a todos los archivos incluyendo subcarpetas
chmod -R 744 *

Existe la posibilidad de cambiar los permisos utilizando el explorador de archivos. Para ello tan solo hay que seleccionar los archivos o carpetas y haciendo clic sobre la selección con el botón derecho del ratón > Propiedades, nos aparecerá la ventana de propiedades. Haciendo clic en la pestaña Permisos podremos establecer los permisos de una forma sencilla y haciendo clic en 'Permisos avanzados' de una forma avanzada.

Estableciendo permisos desde el administrador de archivos

Bits SUID y SGID

El bit SUID es una extensión del permiso de ejecución. Se utiliza en escasas ocasiones y sirve para que cuando un usuario ejecute una aplicación, ésta se ejecute con permisos del usuario propietario en lugar de hacerlo con los del usuario que ejecuta la aplicación, es decir, es equivalente a que sea ejecutada por el propietario.

Para activar el bit SUID, se puede ejecutar el comando chmod u+s nombre_archivo o sumar 4000 al número en octal si utilizamos dicho sistema. También se puede hacer lo mismo para el grupo, es el denominado bit SGID sumando 2000 al número en octal. Activar los bits SUID ó SGID puede ocasionar problemas de seguridad sobre todo si el propietario es root.

Si aplicamos el bit SGID a una carpeta, todas las subcarpetas y archivos creados dentro de dicha carpeta tendrán como grupo propietario el grupo propietario de la carpeta en lugar del grupo primario del usuario que ha creado el archivo. Es una ventaja cuando varias personas pertenecientes a un mismo grupo, trabajan juntas con archivos almacenados en una misma carpeta. Si otorgamos permisos de lectura y escritura al grupo, los archivos podrán ser modificados por todos los miembros del grupo y cuando cualquiera de ellos cree un archivo, éste pertenecerá al grupo.

Cuando se crea un archivo, los permisos originales por defecto son 666 y cuando se crea una carpeta, los permisos por defecto son 777. Dichos permisos por defecto pueden modificarse con el comando umask.

Con umask podemos definir la máscara de permisos, cuyo valor original es 000. El permiso por defecto será el resultado de restar del permiso original, el valor de la máscara. Si deseamos que los archivos se creen con permisos 644 (lo más habitual), pondremos máscara 022 ya que 666-022=644. En el caso de las carpetas, el permiso efectivo será 755 ya que 777-022=755. Si analizamos el valor de la máscara en binario, cada bit a '1' desactiva un permiso y cada bit a '0' lo activa, es decir, si tiene un valor 022 (000 010 010) cuando creemos una carpeta, tendrá permisos rwxr-xr-x y cuando creemos un archivo tendrá permisos rw-r--r-- ya que el permiso de ejecución para archivos hay que fijarle con chmod al tener los archivos el permiso original 666.

Cada usuario tiene su máscara. Se puede fijar la máscara por defecto para todos los usuarios en el archivo /etc/profile o para cada usuario en el archivo /home/usuario/.bashrc

// Ejemplo de uso de umask
pepe@ubuntu:/tmp$ umask
0002
pepe@ubuntu:/tmp$ mkdir nueva-carpeta
pepe@ubuntu:/tmp$ ls -l
drwxrwxr-x 2 pepe profes 1024 Feb 12 19:46 nueva-carpeta
pepe@ubuntu:/tmp$ umask 022
pepe@ubuntu:/tmp$ mkdir otra-carpeta
pepe@ubuntu:/tmp$ ls -l
drwxrwxr-x 2 pepe profes 1024 Feb 12 19:46 nueva-carpeta
drwxr-xr-x 2 pepe profes 1024 Feb 12 19:46 otra-carpeta
pepe@ubuntu:/tmp$

La modificación con umask de la mascara por defecto no afecta a los archivos y carpetas existentes sino solo a los nuevos que cree ese usuario a partir de ese momento.

Grupos privados de usuario

Para hacer más flexible el esquema de permisos Unix, se recomienda utilizar grupos privados de usuario. Consiste en crear un nuevo grupo con el mismo nombre del usuario, cada vez que se crea un nuevo usuario y hacer que el grupo principal del nuevo usuario sea el nuevo grupo.

Ejemplo, si creamos un usuario pepe, crearemos también un grupo llamado pepe y haremos que el grupo primario del usuario pepe sea el grupo pepe.

En el siguiente ejemplo observamos que el UID del usuario pepe es 1002 y que su grupo principal es el 1003 que corresponde al GID del grupo pepe. También vemos que si creamos un nuevo archivo, pertenecerá al usuario pepe y al grupo pepe.

// Ejemplo: Usuario pepe y grupo pepe
pepe@ubuntu:/tmp$ more /etc/passwd |grep pepe
pepe:x:1002:1003::/home/pepe:
pepe@ubuntu:/tmp$ more /etc/group |grep pepe
pepe:x:1003:
pepe@ubuntu:/tmp$ ls > archivo.txt
pepe@ubuntu:/tmp$ ls -l
-rw-rw-r-- 1 pepe pepe 12 Feb 12 20:17 archivo.txt
pepe@ubuntu:/tmp$

Aunque parezca inservible, la creación de un grupo personal para cada usuario, permitirá crear otros grupos mediante los cuales, diferentes personas puedan trabajar de forma colaborativa sobre los archivos dentro de una carpeta concreta. Veámoslo mejor con un ejemplo:

Supongamos que creamos una carpeta llamada 'examenes' que pertenezca al grupo profesores. Si establecemos el bit SGID en dicha carpeta con el comando 'chmod g+s examenes', todos los archivos que se creen dentro de dicha carpeta tendrán como grupo propietario el grupo profesores. Si todos los usuarios utilizan máscara 002, los permisos de los archivos serán 664 con lo cual, cualquier integrante del grupo profesores podra visualizar y modificar los archivos.

El problema de usar la máscara 002 es que cualquiera que pertenezca al grupo principal de un usuario, tendría acceso de escritura sobre sus archivos, pero esto no sucederá nunca ya que cada usuario tiene su propio grupo principal y nadie más pertenece a él.

Cambiar usuario propietario y grupo propietario

Para poder cambiar el usuario propietario y el grupo propietario de un archivo o carpeta se utiliza el comando chown (change owner). Para ello hay que disponer de permisos de escritura sobre el archivo o carpeta. La sintaxis del comando es:
# chown nuevo_usuario[.nuevo_grupo] nombre_archivo
En el siguiente ejemplo vemos una secuencia de comandos en la que inicialmente comprobamos que el archivo 'examen.txt' pertenece al usuario pepe y al grupo profesores. Posteriormente hacemos que pertenezca al usuario luis y luego hacemos que pertenezca al usuario pedro y al grupo alumnos:

// Cambiar propietario y grupo propietario
root@ubuntu:/tmp# ls -l
total 4
-rw-rw-r-- 1 pepe profesores 11 2005-09-28 20:15 examen.txt
root@ubuntu:/tmp# chown luis examen.txt
root@ubuntu:/tmp# ls -l
total 4
-rw-rw-r-- 1 luis profesores 11 2005-09-28 20:15 examen.txt
root@ubuntu:/tmp# chown pedro.alumnos examen.txt
root@ubuntu:/tmp# ls -l
total 4
-rw-rw-r-- 1 pedro alumnos 11 2005-09-28 20:15 examen.txt
root@ubuntu:/tmp#

# data[].attributes.attachment_link.description
Anteriormente se ha comentado que en Unix todos los archivos pertenecen obligatoriamente a un usuario y a un grupo. Cuando un usuario crea un nuevo archivo, el propietario del archivo será el usuario que lo ha creado y el grupo del archivo será el grupo principal de dicho usuario.

# data[].attributes.attachment_link.readable_text
Gestionar usuarios y grupos en Linux nos permitirá realizar una utilización optima del sistema multiusuario, para aquellos casos donde varias personas hagan uso de los recursos del servidor. Cada uno de los usuarios es identificado a través de un nombre y debe tener asignada una contraseña, con ambos datos deberá acceder al sistema para su respectiva verificación de credenciales. Si deseas aprender sobre la gestión de usuarios y grupos, este es el articulo ideal para ti.

Gestionar usuarios y grupos en Linux

El objetivo principal de la gestión de usuarios y grupos en Linux, es permitir que múltiples usuarios hagan uso del sistema, pero de una forma ordenada y segura. De tal manera que ninguna de las tareas que se realicen por cualquier usuario, pueda poner en riesgo todo el sistema. A través de la gestión, se establecen los mecanismos y políticas de seguridad para la protección de os datos de cada usuario, así como parara asegurar y proteger el funcionamiento de todo el sistema.

Cuentas de usuario

Como les mencione anteriormente, para poder usar el sistema operativo Linux, es necesario tener una cuenta de usuario. Dicha cuenta se constituya por un nombre de usuario (login) y de una contraseña (password). Las cuentas de usuario son creadas por el administrador del sistema, que en Linux es conocido como Usuario root. Cada usuario, debe pertenecer obligatoriamente a algún grupo de usuario. Adicionalmente, al momento de ingresar al sistema, el usuario deberá identificarse con su cuenta de usuario y en caso de equivocarse, el sistema le denegara el acceso.

Posterior a identificarse satisfactoriamente, el usuario podrá hacer uso del sistema y ejecutar todas las aplicaciones que tenga permitido, así como realizar acciones (leer, modificar o borrar) sobre los archivos en los que tenga permiso.

Te recomendamos la lectura de la guía para principantes en linux.

Por otra parte, una cuenta de usuario, no solo provee un simple nombre, también es el punto de partida para establecer una ruta donde se almacenan sus documentos y perfil de usuario. En Linux, generalmente es dentro de la carpeta /home/ nombre-usuario.

Al momento de que el usuario ejecuta una aplicación, el sistema la carga en memoria y luego se ejecuta. En el ámbito informático, las aplicaciones que se encuentran en ejecución en un momento determinado, se les denomina procesos. Entonces, en un sistema multiusuarios, cada proceso pertenece a un usuario, el mismo sistema se encarga de asignarlo al usuario que haya iniciado la ejecución.

Podemos ver todos los procesos en ejecución, usando comando:

[php]ps aux[/php]

Para verlos en tiempo real, usamos el comando

[php]top[/php]

Grupos de usuarios

Para permitir una administración flexible de los permisos de los usuarios, Linux permite estructurar los usuarios a través de grupos y los permisos pueden ser asignados a un grupo. Por ejemplo, tenemos una institución educativa, el grupo de profesores tiene acceso a ciertos archivos, al momento de añadir un nuevo profesor en el sistema, solo tenemos que asignarle a su cuenta de usuario el grupo profesor.

Como les mencione anteriormente, todos los usuarios deben pertenecer a un grupo principal o primario (obligatoriamente), pero puede pertenecer a otros grupos, esos son considerados secundarios. Todos los grupos de usuarios sólo pueden contener varios usuarios, es decir, no pueden contener a otros grupos.

Cada grupo de usuarios en Linux, es identificado con un numero diferente. Esto es conocido como identificador de grupo o gid = Group IDentifier. Internamente, el sistema realiza las gestiones bajo el gid, y no con el nombre del grupo. Por lo general, al momento de crear grupos, el sistema le asigna un gid de 1000 en adelante. Los gid menores a 100 son reservados para uso del sistema y sus grupos especiales.

Por defecto, en Linux la información de los grupos de un sistema se guarda en el archivo /etc/group. Este archivo puede ser visualizado desde cualquier editor de texto. Cada una de sus líneas almacena los parámetros específicos del grupo y los usuarios asociados. El archivo solo puede ser modificado por el administrador (usuario root). Por otra parte, las contraseñas de los grupos son guardadas de forma encriptadas con un sistema de codificación irreversible, en un archivo de texto tambien: /etc/gshadow.

Comandos de gestión de usuarios y grupos en Linux

Creación de usuarios

Para añadir un usuario, indicando sus parámetros de información utilizamos en la consola el comando useradd. Su sintaxis es:

[php]useradd [opciones] nombre-usuario[/php]

Podemos resaltar entre todas sus opciones, las siguientes:

g: Grupo principal que sera asignado al usuario

d: Para asignar carpeta home del usuario. Normalmente es /home/nombre-usuario

m: Crear carpeta home en caso de no existir

s: Intérprete de comandos (shell) del usuario. Suele ser /bin/bash

Por ejemplo, queremos crear un usuario llamado "luis" y que su grupo principal sea "profesores", que demas tenga asignada como carpeta home "/home/luis" y que sus comando sean interpretados en "/bin/bash". El comando que debemos ejecutar sera el siguiente:

[php]sudo useradd -g profesores -d /home/luis -m -s /bin/bash luis[/php]

Ahora nos queda por establecer su contraseña mediante el uso del comando passwd:

[php]sudo passwd luis[/php]

El sistema nos solicitara la contraseña dos veces y listo! Sera asignada.

Un dato relevante es que podemos usar el comando useradd, para la creación de usuarios en lotes mediante el uso de shell script.

Por otro lado, una recomendación a tomar en cuenta es el hecho de crear los nombres de usuario en minúsculas y que ademas incluya números y algún signo como guion o guion bajo. También hay que recordar que para Linux, Luis es distinto de luis, ya que distingue entre mayúsculas y minúsculas.

Modificación de usuarios

Para realizar modificaciones sobre los usuarios, se emplea el comando usermod. Este te permite hacer cambios sobre el nombre, la carpeta home, su interpretador de comandos, sus grupos, entre otros.

Por ejemplo, para cambiar el nombre de usuario usamos:

[php]sudo usermod -d /home/carpeta_luis&amp;nbsp;luis[/php]

Eliminación de usuarios

La eliminación de los usuarios la realizamos mediante el uso del comando userdel y a continuación el nombre de usuario. Si a la instrucción, le añadimos la opción -r, su carpeta home también sera eliminada. Veamos el ejemplo:

[php]sudo userdel -r luis[/php]

Creación de grupos

En este caso, tenemos el comando groupadd, tan solo debemos indicar el nombre del grupo como parámetro. Por ejemplo, si quisiéramos añadir un grupo llamado "estudiantes", la sentencia seria:

[php]sudo groupadd estudiantes[/php]

Modificación de grupos

Por supuesto, los grupos también pueden ser modificados al igual que hacemos con los usuarios. Para ello, usamos el comando groupmod. En el caso de los grupos podemos editar su nombre o su gid.

La sintaxis para el comando es: sudo groupmod [-g nuevo-gid] [-n nuevo-nombre] nombre-grupo, ejemplo:

por ejemplo, cambiemos el gid del grupo "profesores":

[php]sudo groupmod -g 2000 profesores[/php]

Eliminación de grupos

Lo hacemos con el comando groupdel seguido del nombre del grupo, por ejemplo:

[php]sudo groupdel profesores[/php]

Se eliminara el grupo sólo en caso de que no tenga usuarios con el grupo asignado como primario. Si existiera algún usuario con esta condición, el grupo no se eliminara.

Añadir usuarios a un grupo

pera ello empleamos el comando adduser y a continuación el nombre del usuario y el nombre del grupo. Por ejemplo, para añadir Luis al grupo profesores usamos:

[php] sudo adduser luis profesores[/php]

Quitar usuarios de un grupo

Y finalmente, si queremos eliminar un usuario de un grupo, utilizamos el comando deluser acompañado del nombre del usuario y del grupo. Por ejemplo, si queremos quitar a "luis" del grupo "profesores":

[php]sudo deluser luis profesores[/php]

Como ves, tenemos suficientes herramientas para realizar una excelente gestión de los usuarios y grupos en Linux. Si requieres mayor información de los comandos, puedes consultar la ayuda disponible, ejecutando man seguido del nombre por ejemplo:

[php]man adduser[/php]

Adicionalmente, puedes dejarnos tus consultas o duda en nuestros comentarios y podremos ayudarte 🙂

# data[].attributes.attachment_link.description
Gestionar usuarios y grupos en Linux nos permitirá realizar una utilización optima del sistema multiusuario, para aquellos casos donde varias personas hagan uso de los recursos del servidor. Cada uno de los usuarios es identificado a través de un nombre y debe tener asignada una contraseña, con ambos datos deberá acceder al sistema para su respectiva verificación de credenciales.

# data[].attributes.attachment_link.readable_text
Linux permite a multiples usuarios tener acceso al sistema operativo a la vez. La configuración de permisos proteje a los usuarios de ellos mismos. Los usuarios pueden ser asignados a grupos para compartir privilegios, seguridad y acceso. El acceso de archivos y dispositivos puede ser restringido en base a usuarios específicos o grupos de usuarios.

Los grupos se usan con frecuencia para permitir que ciertos usuarios modifiquen un archivo o directorio.

Los dos tipos de grupos principales son grupos primarios y grupos secundarios. El grupo primario de un usuario es el grupo por defecto con el que se asocia la cuenta, generalmente comparte el mismo nombre que el usuario. Los directorios y los archivos que el usuario crea tendrán asignados este grupo. Un grupo secundario es cualquier grupo adicional del que un usuario sea parte.

Creación de grupos

Creemos dos grupos llamados "writers" y "editors". Usa el comando groupadd (es posible que necesites usar el comando sudo al inicio para tener el permiso adecuado para crear el grupo):

groupadd writers groupadd editors

Creación de usuarios

Puede que ya tengas usuarios para agregar a tu grupo. Si no, aquí está la sintaxis básica para crear un usuario con el comando useradd:
useradd [options] username
Aquí está para crear un usuario llamado "quincy". El argumento -m le dice al comando que cree el directorio principal del usuario con el mismo nombre que el usuario. El argumento con su valor -p p4ssw0rd crea la contraseña "p4ssw0rd" para el usuario.
useradd -m quincy -p password
Los usuarios serán capaces de cambiar su contraseña con el comando passwd. Para ello, tendrán que ingresar su contraseña actual en ese momento y luego definir una nueva.

Agregar un usuario a un grupo

Puedes usar el comando usermod para agregar un usuario a un grupo. Así es cómo agregaríamos el usuario "quincy" al grupo "writers". El argumento -a significa "añadir" (append) y el argumento -G agrega un grupo como un grupo secundario.
usermod -a -G writers quincy
Cuando un usuario es creado con el comando adduser, este es automáticamente asignado a un grupo primario con el mismo nombre que el usuario. En nuestro ejemplo, actualmente el usuario "quincy" es parte de un grupo primario "quincy" y de un grupo secundario "writers".

También puedes agregar un usuario a muchos grupos a la vez al separar por comas los nombres de los grupos, así -G group1,group2,group3.

El siguiente comando cambia el grupo primario del usuario "quincy" de "quincy" a "editors":
usermod -g editors quincy
Remover un usuario de un grupo secundario

Para remover un usuario de un grupo secundario necesitas sobreescribir los grupos a los que actualmente este usuario pertenece, por una nueva lista de grupos dónde no esté el grupo que se quiere remover.

Primero, usa el comando id para verificar a cuáles grupos secundarios pertenece un usuario:
id -nG quincy
Digamos que este comando nos devuelve editors writers, esto indica que el usuario "quincy" es parte de los grupos "editors" y "writers". Si quieres remover al usuario del grupo "writers", usa el comando:
usermod -G editors quincy
Ese comando establece como grupo secundario del usuario "quincy" como "editors". Ya que el argumento -a no fue usado, los grupos previos fueron sobreescritos.

Conclusión

Deberías ahora estar listo para manejar usuarios y grupos en Linux. El siguiente paso es determinar qué privilegios debería tener cada grupo.

Traducido del artículo de Beau Carnes - Linux User Groups Explained: How to add a new group, a new group member, and change groups

# data[].attributes.attachment_link.title
Explicación de los grupos de usuarios en Linux: cómo agregar un nuevo grupo, agregar un nuevo miembro, y cambiar de grupo

# data[].attributes.attachment_link.description
Linux permite a multiples usuarios tener acceso al sistema operativo a la vez. La configuración de permisos proteje a los usuarios de ellos mismos. Los usuarios pueden ser asignados a grupos para compartir privilegios, seguridad y acceso. El acceso de archivos y dispositivos puede ser restringido en base a usuarios

# data[].attributes.body
https://blog.carreralinux.com.ar/2016/07/permisos-en-linux/

permisos a usuarios

# data[].attributes.attachment_link.readable_text
En el último post (" Usuarios y grupos en Linux ") aprendimos cómo administrar grupos y usuarios. En esta ocasión veremos cómo utilizar los permisos en Linux para usuarios y grupos como primera medida de control de acceso a los recursos del sistema.

Permisos en Linux

Veamos cómo crear un directorio llamado midirectorio en /tmp y mostrar el usuario y el grupo dueños del mismo, lo cual podremos luego observar en la Fig. 1:

Si queremos cambiar el usuario dueño o el grupo propietario de /tmp/midirectorio, podemos utilizar el comando chown de la siguiente manera:

Otra opción para cambiar el grupo propietario es chgrp:

Ahora cambiemos el grupo propietario a fulano:

y veamos los resultados resaltados en la Fig. 1 (usuario dueño y grupo propietario -en ese orden- aparecen resaltados):

Una explicación detallada de los permisos en Linux

En la primer columna de la salida de ls -ld podemos ver los permisos asignados para el usuario dueño y el grupo propietario de /tmp/midirectorio, y para el resto de los usuarios del sistema:

La primer letra (d) indica que /tmp/midirectorio es un directorio. Si bien nosotros sabíamos esto por haberlo creado previamente, en ocasiones tendremos que identificar si el recurso indicado es un directorio, un archivo "común y silvestre" (indicado por un - en vez de la d), o un enlace simbólico (por la presencia de una l), entre otros.

A continuación, la primer terna de caracteres (rwx) indica que el usuario dueño posee permisos de lectura (r), escritura (w), y ejecución (x) sobre el directorio. La segunda terna (r-x) indica que los miembros del grupo propietario posee permisos de lectura y ejecución (pero no de escritura). Finalmente, la última terna muestra que todos los demás usuarios del sistema poseen los mismos permisos que en el caso anterior.

Veamos la forma en que los permisos rwx nos permiten restringir el acceso a los recursos del sistema:

El permiso de lectura [r] es requerido para poder listar el contenido del directorio.

El permiso de escritura [w] permite que se agreguen archivos al directorio, que se renombren otros ya existentes, que se borren dichos archivos, o que se modifiquen los atributos del directorio. De todas formas, hay que tener en cuenta que para poder realizar estas operaciones es necesario el permiso de ejecución sobre el mismo directorio.

El permiso de ejecución [x] es necesario para ingresar al directorio y acceder a archivos y a subdirectorios que se encuentren dentro del mismo.

Para dar permisos de escritura sobre /tmp/midirectorio a miembros del grupo fulano deberemos usar el comando chmod seguido de la opción g (grupo), del signo + y del permiso que deseemos asignar (en este caso w):

Si quisiéramos asignar (o quitar, en cuyo caso utilizaremos el signo -) más de un permiso a la vez podemos hacerlo fácilmente. Por ejemplo, veamos cómo quitar los permisos de lectura y ejecución para el resto de los usuarios del sistema (simbolizados por la opción o, de others en inglés):

En el caso de que queramos modificar los permisos de un directorio y de sus contenidos simultáneamente, podemos usar la opción -R (de recursiva) de chmod. Tomando el caso anterior como ejemplo:

Por último, para asignar o quitar permisos al usuario dueño, utilizamos la opción u (del inglés user), mientras que si queremos otorgar o remover un permiso en particular para todos usaremos la opción a (de all). De esta manera, el siguiente comando activa los permisos de ejecución sobre /tmp/midirectorio para todos los usuarios:

Adicionalmente, podemos indicar un determinado permiso en forma octal en vez de r, w, o x. La conversión entre ambas formas de asignar permisos en Linux puede consultarse aquí.

Espero que les sirva. ¡Nos leemos en breve!

# data[].attributes.attachment_link.title
Permisos en Linux y accesos para usuarios y grupos - El Camino del Sysadmin

# data[].attributes.attachment_link.description
En el último post ("Usuarios y grupos en Linux") aprendimos cómo administrar grupos y usuarios. En esta ocasión veremos cómo utilizar los permisos en Linux para usuarios y grupos como primera medida de control de acceso a los recursos del sistema. Permisos en Linux Veamos cómo crear un directorio llamado midirectorio en /tmp y mostrar [...]

# data[].attributes.body
Administrar usuarios y grupos en Linux

# data[].attributes.attachment_link.readable_text
En este tutorial aprenderemos cómo crear y gestionar usuarios y grupos en Linux.

Vamos a ver algunas de las dudas más frecuentes acerca de usuarios y grupos en Linux, como por ejemplo cómolistar usuarios en Linux por medio de la terminal (nos valdremos de varios comandos), cómo listar los grupos en Linux, cómo borrar usuarios, cómo crear usuarios en Linux, y muchas opciones más que seguro te serán útiles.

En este artículo:

Cuestiones importantes sobre usuarios y grupos Linux

-> La organización de usuarios de Linux en grupos de usuarios, permite otorgar diferentes permisos a cada grupo, y de esta forma gestionar " en bloque" qué grupos tienen permiso y para qué.

En Linux los usuarios pertenecen a un grupo primario y un grupo secundario. Podemos modificar los grupos a los que pertenece un usuario si es necesario. De hecho en algunas ocasiones, por cuestión de permisos (para modificar o acceder a ficheros/directorios) será necesario añadir un usuario a un grupo, o añadir a un usuario como miembro de un grupo secundario.

Relacionado : Usuarios y grupos Samba en Linux

Es importante conocer los términos (User ID o Identificador de Usuario) y (Group ID o Identificador de grupo).

El usuario root siempre tiene asignado el UID 0.

Los UID del 0 al 99 se reservan para usos administrativos.

Comandos y archivos importantes para crear y gestionar usuarios y grupos en Linux:

useradd : Añadir un usuario

usermod : Modificar un usuario

userdel : Eliminar un usuario

groupadd : Añadir un grupo.

groupmod : Modificar un grupo.

groupdel : Eliminar un grupo.

el archivo /etc/passwd : en este archivo podemos ver todos los usuarios creados, sus UID y sus GID.

el archivo /etc/group : En este archivo podemos ver los GID de los grupos existentes en el sistema, y los usuarios pertenecientes a cada grupo.

el archivo /etc/shadow : En este archivo se encuentran cifradas las contraseñas de los usuarios.

Al crear un usuario en Linux, este recibe unUID (Identificador de Usuario Unico)

Es un ID, un código único para el usuario. Al crear un usuario, a su vez se crea un grupo para ese usuario y un GID (Identificador Único de Grupo) para ese grupo del nuevo usuario.

-m crea automáticamente el directorio personal del usuario

-g grupo principal al que añadimos el usuario

-G grupo secundario

-d permite especificar el directorio personal del usuario, que será creado a la vez que el usuario

Crear usuarios Linux por terminal (Ejemplo de uso de useradd)

Crear usuario, asignarlo a un grupo, especificar su directorio personal y el shell a utilizar:

Después asignamos un password a esa nueva cuenta de usuario Linux:

Y después de crear el usuario y asignarlo al grupo1 con el comando anterior ( useradd -g grupo1), ejecutamos cat /etc/passwd para ver los GID de los grupos en los que se encuentra el nuevo usuario creado:

Podemos ver que el usuario1 se encuentra en el grupo que tiene asignado el GID 1004 (tanto el grupo primario como el secundario).

Y después ejecutamos cat /etc/group para ver qué grupos corresponden a los GID ´s en los que se encuentra el nuevo usuario:

Cómo ver los usuarios en Linux por consola

Para listar los usuarios en Linux, podremos hacerlo mostrando el contenido del fichero /etc/passwd, que es el archivo donde se encuentran los usuarios que pueden acceder al sistema. Podemos mostrar el contenido del fichero /etc/passwd con el comando " cat" o el comando " more ".

OTRAS FORMAS DE VER LOS USUARIOS EN LINUX

También podríamos utilizar los comandos Linux more y less que nos muestran el resultado de forma paginada, más agradable de ver:

Aunque aún podemos mejorar el resultado mostrado por pantalla, seleccionando solamente los campos deseados (en este caso el campo username o nombre de usuario), usando también una tubería ( grep) y el comando cut, así:

ver usuarios linux con el comando awk

ver usuarios linux con el comando getent

ver usuarios linux con el comando compgen

Al visualizar el contenido completo del archivo/etc/passwd, veremos varios datos que debemos conocer:

El nombre de la cuenta

El UID de la cuenta de usuario.

el GID del grupo principal del usuario.

el directorio de trabajo del usuario

el interprete de comando del usuario

Aquí vemos el resultado del comando anterior:

-> Se puede apreciar que muchos usuarios tienen al final:

esto significa que estos usuarios que tienen configurada esta ruta como shell, realmente no pueden iniciar sesión; recibirán un mensaje avisando de ello:

Esto suele ser porque son usuarios del sistema, para varios procesos Linux o software del sistema.

Cómo ver las contraseñas de usuarios en Linux

Las contraseñas de los usuarios en Linux se almacenan cifradas en el archivo

Así que no podemos averiguar las contraseñas de los usuarios, pero podemos cambiar la contraseña de un usuario si no la recordamos.

Cómo cambiar contraseñas de usuario

Podemos cambiar la contraseña de un usuario con el comando passwd y el nombre de usuario.

así:

Modificar Usuarios con el comando usermod

Podemos modificar usuarios en Linux con el comando usermod

Vamos a ver varios ejemplos de cómo modificar usuarios.

Modificar el directorio de trabajo de un usuario:

El nuevo directorio de trabajo del usuario test será /var/www

Ahora el usuario test se llamará nuevotest

Modificar el grupo primario de un usuario

Ahora el grupo primario del usuario test será el grupo apache

Modifica el grupo suplementario de un usuario existente (sustituyendo el grupo anterior)

Añadir un grupo suplementario de un usuario existente (añadiendo el grupo sin sustituir el primario en el que ya está el usuario)

Modificar la fecha de expiración de una cuenta de usuario:

Ahora la cuenta de usuario expirará el 15 de marzo de 2021

Bloquear una cuenta de usuario:

Desbloquear una cuenta de usuario

El usuario test ha sido eliminado.

CREAR GRUPOS DE USUARIOS EN LINUX

Creamos diversos grupos de usuarios con el comando groupadd:

Con el comando cat /etc/group

comprobamos el GID de los nuevos grupos de usuarios creados (visualizando el contenido del archivo /etc/group):

Podremos ver los grupos que existen dentro de un sistema linux con:

De esta forma mostramos todos los grupos que existen en el sistema.

Usando " more " el contenido del fichero se mostrará permitiendo la paginación (muestra las páginas una a una, y pasamos a la siguiente pulsando la tecla de espacio.

Ver los grupos a los que pertenecen los usuarios

Otra forma de ver los grupos a los que pertenecen los usuarios es usando el comando cut con el archivo /etc/passwd

así:

Aquí vemos la salida del comando:

Ver Usuarios de un grupo Linux

Podremos ver los usuarios que hay dentro de un grupo con el comando getent:

mostrará los usuarios dentro del grupo " ssh "

Cambiar grupo primario de un usuario en Linux

Así añadimos como grupo primario el " grupo1" para el usuario " usuario1"

Añadir un usuario a un grupo secundario en Linux

Este ejemplo añadirá al usuario " usuario1" al grupo " grupo2 ".

Eliminar grupos con groupdel

Eliminamos un grupo con " groupdel ", seguido del grupo que queremos eliminar.

Quitar usuario de un grupo con deluser

Si queremos sacar de un grupo a un usuario, usaremos el comando deluser así:

Ahora el usuario " usuario" ya no pertenece al grupo " grupo"

Otros COMANDOS para trabajar con Usuarios y grupos Linux

¿Qué hace el comando id en Linux?

id es un comando de linux que permite conocer los datos de un usuario : su identificador de usuario ( ID), su identificador de grupo ( GID), y el nombre del grupo o grupos a los que pertenece el usuario.
Para ver los datos relativos a un usuario, ejecutamos:

o directamente

y veremos los datos del usuario actual.

Ejemplo:

Podemos ver que si tecleamos:

veremos los datos del usuario1: su , el GID y el nombre del grupo al que pertenece dicho usuario, y los grupos en los que se encuentra incluido (en este caso solo se encuentra en el grupo con GID 1004, llamado grupo1)

También vemos que el usuario root posee el UID 0. Al igual que su GID es 0. A la cuenta root siempre se le asigna el UID 0.

whoami es un comando de linux que muestra el nombre de usuario que estamos utilizando.

Con toda esta info, comandos y archivos necesarios, podremos administrar correctamente nuestros usuarios y grupos en Linux.

Otros enlaces con más info sobre Usuarios y Grupos en Linux:

report this ad

# data[].attributes.attachment_link.title
Administrar usuarios y grupos en Linux - El Taller del Bit

# data[].attributes.attachment_link.description
Vamos a ver algunas de las dudas más frecuentes acerca de usuarios y grupos en Linux, como por ejemplo cómolistar usuarios en Linux por medio de la terminal (nos valdremos de varios comandos), cómo listar los grupos en Linux , cómo borrar usuarios , cómo crear usuarios en Linux , y muchas opciones más que seguro te serán útiles.

# data[].attributes.body
https://computernewage.com/2016/05/22/gestionar-usuarios-y-permisos-en-linux/

LINUX

# data[].attributes.attachment_link.readable_text
Muy buenas lector, el post de hoy quiero que te sirva de guía de referencia a la hora de administrar grupos usuarios y asignar los permisos de archivos y directorios en Linux. Básicamente se trata de una segunda parte del post que ya publique hace unos días explicando al detalle como funciona la arquitectura de permisos de Linux. Si el primero era más un artículo explicativo, este se trata de un post más práctico, al estilo de guía o HowTo.

Por tal de seguir un cierta estructura a lo largo de la guía adoptaré el mismo orden imprimido en la primera parte que te comento, por lo qué te hablaré primero de usuarios y grupos, para pasar a hablar después más en profundidad sobre la gestión de permisos. Sin entretenerme más, te dejo ya con el índice con los contenidos más relevantes.
Tabla de contenidos:

1. Como añadir, editar o eliminar usuarios

1. Añadir un nuevo usuario

2. Eliminar usuario

3. Cambiar la contraseña de una cuenta

4. Ver todos los usuarios del sistema

2. Como añadir, editar o eliminar grupos

1. Añadir un nuevo grupo

2. Eliminar un grupo

3. Añadir un usuario dentro de un grupo

4. Eliminar un usuario de un grupo

5. Ver todos los grupos del sistema

3. Cambiar el propietario de un fichero

1. Cambiar usuario propietario con Chown

2. Cambiar grupo propietario con Chgrp

4. Asignar permisos de lectura, escritura y ejecución

1. Usar Chmod en modo numérico u octal

2. Usar Chmod en modo texto

5. Esto continua en breve

Como Añadir, Editar o Eliminar Usuarios

Como comento arriba, en la primera parte te hablaré sobre los cuatro comandos básicos que puedes necesitar a la hora de añadir, editar o eliminar usuarios en Linux. Ten en cuenta que, para poder realizar la gran mayoría de acciones que verás a continuación, necesitarás adquirir permisos de root o superusuario, ya sea a través de , o, de forma temporal, mediante (caso de que utilices Ubuntu, por ejemplo)

Si bien el hecho de crear o borrar usuarios es algo que hoy en día se puede hacer de forma gráfica en la gran mayoría de distribuciones, creo que vale la pena aprenderlo a hacer desde la línea de comandos. Esto te dará una visión mucho más potente de lo que estás haciendo, y por otro lado, yo podré mantener una cierta coherencia a lo largo de esta guía.

Como pequeño recordatorio sobre algo que comenté en el primer post sobre la estructura de permisos, en Linux, aparte del usuario root y los usuarios locales, también hay una larga lista de cuentas que van asociadas servicios o componentes del sistema.

Basta con listar los procesos que están corriendo en tu sistema para darte cuenta de ello. Ahí puedes ver que aparte de root y de tu usuario local, hay algunos procesos que corren bajo sus propias cuentas de usuario.

Es importante tener esto ultimo en mente porqué cuando hablemos de crear y gestionar usuarios nos estamos refiriendo siempre a usuarios locales, dejando a un lado a las cuentas del sistema.

Añadir un Nuevo Usuarios

Para añadir una nueva cuenta de usuario en Linux puedes utilizar el comando , con un o delante, dado que la acción requiere de permisos de superusuario. Ah, algo importante a tener en cuenta, al crear un nuevo usuario, también se creará un nuevo grupo con el mismo nombre, dentro del cual se va a incluir este usuario.

A continuación tienes la sentencia básica. Verás que al hacer esto, el sistema te pedirá una serie de detalles sobre el usuario, tales como la contraseña de Unix o el nombre completo de usuario. Puedes omitir perfectamente el resto de datos, tales como el teléfono de trabajo, el teléfono de casa, etc.

sudo adduser usuario

Eliminar Usuario

Si para añadir una cuenta utilizamos , para eliminar un usuario el comando a utilizar es . Ya verás que, al eliminar el usuario, si este estaba dentro de un grupo donde solo estaba él, el grupo también se borrará.

Esto es lo que ocurre, por ejemplo, en una cuenta de usuario local, ya que, al momento de crearse, se crea también un grupo en el que solamente está él.

Aquí te dejo la sentencia básica. En este caso, es solo aplicar el comando y la cuenta se borrará automáticamente del sistema.

sudo userdel usuario

Cambiar la Contraseña de una Cuenta

Asimismo, también te puede interesar cambiar la password de una cuenta concreto. Para ello se utiliza el comando passwd. Aquí tienes la sentencia:

sudo passwd usuario

Ver todos los Usuarios del Sistema

En Linux, toda la información relativa a los usuarios es almacenada en un archivo de texto. Este archivo es . Mediante este archivo también podrás editar sus propiedades, aunque yo recomendaría utilizarlo únicamente a modo informativo (de ahí el hecho de no abrirlo con sudo), y utilizar los comandos apropiados en caso de querer modificar algo.

Si quieres listar todos lo usuarios a través de la consola, tan solo debes leer el contenido del fichero mediante el comando que te dejo a continuación. Verás que no utilizo el sudo delante, pues lo abriremos en modo lectura, así te aseguras de no modificar nada por error. Las contraseñas obviamente no se muestran en texto plano en este archivo, sino que van protegidas por hash aparte..

cat /etc/passwd

Como Añadir, Editar o Eliminar Grupos

Los grupos se utilizan básicamente para permitir o restringir el acceso a ficheros y directorios de forma fácil, y evitar el tener que parametrizar cada uno de los permisos, usuario por usuario. Si tenemos una serie de cuentas que deben compartir el mismo nivel de permisos, estos pueden pertenecer al mismo grupo.

Añadir un Grupo

Para añadir un grupo, basta con abrir nuevamente una ventana de terminal, y siguiendo con la misma lógica que en el caso de usuarios, teclear la siguiente sentencia:

sudo groupadd grupo

Eliminar un Grupo

Como te he explicado como crear un nuevo grupo, también vale la pena comentar como eliminar un grupo existente, si bien esto es algo que difícilmente vas a tener que utilizar, a menos que administres un sistema con una gran cantidad de usuarios y grupos creados.

Al igual que en el caso de los usuarios, te recomiendo NO borrar en ningún caso uno de los grupos creados por el sistema en la instalación inicial, a no ser que sepas muy bien lo que haces.

sudo groupdel grupo

Añadir un Usuario dentro de un Grupo

En el caso de que administres un equipo con varios usuarios, y hayas tenido que crear nuevos grupos para gestionar mejor sus permisos, es probable que necesitas saber como añadir un user dentro de un grupo. Esto puedes hacerlo mediante el siguiente comando:

sudo adduser usuario grupo

Un caso en el que esto puede serte de utilidad es si has creado un usuario nuevo y trabajas en una distribución, como Ubuntu, en el que el usuario Root está deshabilitado. En este caso, si quieres que el nuevo usuario pueda hacer uso "sudo", necesitarás añadirlo al grupo:

sudo adduser usuario sudo

Eliminar un Usuario de un Grupo

Del mismo modo, para eliminar un usuario dentro de un determinado grupo, puedes valerte de la siguiente sentencia:

sudo deluser usuario grupo

Ver Todos los Grupos del Sistema

El archivo de texto que almacena la información relativa a los grupos del sistema es /etc/group. Aquí me remito a lo mismo que he dicho en el caso del archivo /etc/passwd. Hay muchos grupos del sistema, por lo que yo te recomendaría utilizarlo únicamente a modo informativo y valerte de los comandos apropiados en caso de querer modificar algo.

Así pues, puedes listar todos los grupos que existen en tu sistema leyendo el contenido del fichero que acabo de indicar. Te recomiendo de nuevo no editar nada en este archivo. Te dejo el comando a utilizar a continuación (verás que no utilizo sudo delante, ya que lo abriremos solo en modo lectura):

gedit /etc/group

Cambiar el Propietario de un Fichero

A grandes rasgos, en Linux todos los archivos o directorios pertenecen a un usuario y un grupo. Teniendo esto en cuenta, se definen los diferentes tipos de permisos (lectura, escritura y ejecución) a nivel del usuario propietario de ese fichero, del grupo propietario y del resto del mundo.

En los comandos que verás a continuación, a la hora de indicar el archivo o directorio, en caso de que este no se encuentre dentro del directorio de trabajo actual, deberás especificarlo mediante su ruta absoluta dentro de la estructura de directorios del sistema. Si tienes dudas en esto, en este post tienes mas info sobre como navegar a través de los diferentes directorios desde la terminal.

Cambiar Usuario Propietario con Chown

El comando que sirve para cambiar el propietario de un determinado archivo o directorio a nivel de user es chown. Ten en cuenta que al cambiar el usuario propietario de un fichero, el grupo propietario no variará. Aunque el nuevo usuario pertenezca a otro grupo distinto, el grupo propietario del fichero seguirá siendo el de antes.

A continuación te dejo con la sintaxis básica de este comando. En este caso, el grupo no cambiará.

sudo chown usuario ruta-fichero

En caso de que se trate de un directorio, si quieres que la orden se aplique de forma recursiva para todos los ficheros contenido en él, el comando será el siguiente. Si utilizas este mismo comando sin el parámetro -R, el cambio que hayas especificado solo tendrá efecto sobre el directorio, pero no sobre su contenido.

sudo chown -R usuario ruta-directorio

Te pongo un par de ejemplos sobre este comandos:

Vamos a suponer que queremos cambiar el propietario del archivo hola.txt dentro de la carpeta Documentos del usuario tom. El actual propietario es el usuario tom, y queremos que el nuevo sea el usuario lisa.

sudo chown lisa /home/tom/Documentos/hola.txt

Otro ejemplo. Vamos a suponer que queremos cambiar el propietario del archivo hola.txt dentro de la carpeta Documentos del usuario tom. El actual propietario es el usuario tom, y queremos que el nuevo sea el usuario lisa.

sudo chown lisa /home/tom/Documentos/hola.txt

Cambiar Grupo Propietario con Chgrp

Para cambiar el grupo propietario de un fichero te puedes valer del comando , aunque más adelante verás que también lo puedes hacer con . De forma análoga a lo que ocurre al cambiar el propietario a nivel de usuario, en este caso el grupo propietario cambiaré, pero el usuario seguirá siendo el mismo de antes. A continuación te dejo con la sintaxis básica:

sudo chgrp grupo ruta-archivo

En caso de que se trate de un directorio, si quieres que la orden se aplique de forma recursiva para todos los ficheros contenido en él, el comando será el siguiente. Al igual que antes, si utilizas el comando sin el parámetro -R, la orden solamente tendrá efecto sobre el directorio especificado, pero NO sobre el contenido dentro de él.

sudo chgrp -R grupo ruta-directorio

Hay otra modalidad de funcionamiento del comando chown que sirve para cambiar el grupo propietario de un fichero. Ello consiste en especificar un grupo, pero no indicar el usuario. En este ultimo caso, la operación es la misma que realiza el comando chgrp. La sintaxis es la siguiente:

sudo chown :grupo ruta-archivo

Si quieres cambiar tanto el usuario como el grupo al que pertenece un determinado fichero, la sintaxis de uso es la siguiente:

sudo chown usuario:grupo ruta-archivo

Te pongo algún ejemplo sobre este comando:

Vamos a suponer que queremos cambiar el propietario del archivo hola.txt dentro de la carpeta Documentos del usuario tom. El grupo propietario es tom, y queremos que el nuevo sea el grupo lisa.

sudo chgrp lisa /home/tom/Documentos/hola.txt

Asignar Permisos de Lectura, Escritura y Ejecución de un Fichero

El comando es el que sirve para establecer permisos de archivos en Linux. Lo puedes utilizar de dos formas, según las dos formas de representar los permisos que puedes ver el post que te enlazo.

Usar Chmod en Modo Numérico u Octal

El modo octal es una de las formas más típicas de asignar permisos a ficheros en Linux. Esto es así porqué, una vez tienes interiorizadas en tu cabeza todas las combinaciones numéricas, te permite la asignación de privilegios de manera absoluta (sin tener en cuenta el esquema de permisos anterior) y con menos texto que en el formato texto (el otro modo de representación que te explicaré más adelante).

A continuación te dejo con la sintaxis básica que debes tener en la cabeza, a la hora de utilizar la asignación de permisos en modo octal:

sudo chmod XYZ ruta-archivo

En esta representación, X se refiere a los permisos del usuario propietario, Y a los del grupo propietario y Z a los del resto de usuarios. X, Y y Z pueden ser cualquier número entero del 0 al 7, teniendo en cuenta la siguiente regla:

0 - Ningún permiso

1 - Dar permiso de ejecución

2 - Dar permiso de escritura

4 - Dar permiso de lectura

Cualquier combinación de los diferentes tipos de permisos que podemos tener se obtiene sumando los números que lo representan. Así, nos salen las siguientes combinaciones:

0 - Ningún permiso

1 - Ejecución

2 - Escritura

3 - Escritura y ejecución

4 - Lectura

5 - Lectura y ejecución

6 - Lectura y escritura

7 - Lectura, escritura y ejecución

Como ves, la combinación 777 correspondería con el máximo nivel de privilegios que que pueden asignar a un fichero.

Para cambiar los privilegios de un directorio, la sentencia es exactamente la misma, teniendo en cuenta que, como tal, solamente aplicara al directorio en cuestión y no a su contenido. Si quieres que se aplique de forma recursiva para todo el contenido, deberemos utilizar el comando así:

sudo chmod XYZ -R ruta-directorio

Te pongo debajo algunos ejemplos sobre esto, pero recuerda que si quieres hacer pruebas en tu propio sistema a modo de aprendizaje, be carefull y piensa bien en los permisos que das o quitas y en que archivos. A modo de testeo, lo mejor es que practiques sobre algún archivo de prueba).

777 are great numbers in Vegas, but horrible numbers on your files and directories.
- Command Line Magic (@climagic) February 5, 2016

Para el primer caso, supón que quieres cambiar los privilegios del fichero hola.txt (un archivo de texto que he creado) dentro de la carpeta Documentos del usuario tom. Queremos dar permisos de lectura y escritura al usuario y grupo propietarios, y solo de lectura al resto del mundo.

sudo chmod 664 /home/tom/Documentos/hola.txt

Esta estructura de permisos (lectura y escritura para usuario y grupo, y solo lectura para el resto de usuarios) es la que suele ser habitual para todos los archivos de texto o imágenes dentro de la home de un usuario, por lo que muy probablemente ya tendrá por defecto esos permisos.

Sobre el ejemplo anterior, imagina que quieres restringir los permisos de lectura y escritura solo al usuario, y que tanto los usuarios dentro del grupo propietario como el resto del mundo solo tengan permiso de lectura.

sudo chmod 644 /home/tom/Documentos/hola.txt

En este otro caso, imagina que has creado un script en Bash o en Python dentro de la carpeta Documentos. Por defecto, lo habitual es que tenga la estructura de permisos 664. Si quieres poder ejecutar el script, pero solo desde tu usuario, puedes modificar los permisos de esta manera:

sudo chmod 764 /home/tom/Documentos/script.py

En Linux, el permiso de ejecución es en muchos casos necesarios, por ejemplo en el caso de servidores web que ejecute PHP, donde muchos de los archivo son scripts y necesitan tener permisos de ejecución.

Usar Chmod en Modo Texto

La sintaxis básica en modo texto es un poco complicada de expresar (que no de entender), más que nada porqué tiene varias variantes. Voy a intentar expresarlo lo mejor que pueda.

sudo chmod [u,g,o][=,+,-][r,w,x] ruta-archivo

En esta representación, el primer parámetro después del chmod expresa el nivel al que queremos asociar un determinado permiso

Seguidamente tenemos el modificador. Esto nos permite especificar un permiso de forma absoluta (=) o bien de forma relativa al permiso actual (+, -)

= : Asignar un permiso de forma absoluta,

+ : Añadir un permiso

- : Quitar un permiso

Por ultimo, seguido del modificador tenemos el modo o tipo de permiso que queremos asignar, o quitar, que básicamente son:

Para cambiar los permisos de un directorio, la sentencia es exactamente la misma, teniendo en cuenta que, como tal, solamente aplicara al directorio en cuestión y no a su contenido. Si quieres que se aplique de forma recursiva para todo el contenido, deberemos utilizar el comando así:

sudo chmod [u,g,o][=,+,-][r,w,x] -R ruta-directorio

Veamos algunos ejemplos, porqué como habrás podido intuir, las opciones son varias y variadas:

En primer lugar, te muestro la sintaxis equivalente en modo texto, del primero ejemplo que te he puesto para el modo octal, en el que hemos asignado permisos de lectura y escritura (6) para usuario y grupo y de solo lectura para el resto (4) de un script de ejemplo.

sudo chmod u=rw,g=rw,o=r script.py

Sobre este mismo ejemplo, pongamos por caso que quieres añadir los permisos de ejecución a nivel de usuario, pero mantener invariables los permisos a nivel de grupo y otros. En este caso, puedes optar por utilizar el operador "+" y ahorrarte el volver a hacer una asignación absoluta.

sudo chmod u+x script.py

Hecho esto, tu script de ejemplo tendrá permisos de lectura, escritura y ejecución a nivel de usuario, lo que equivaldría al bit 7 en octal. Si quieres realizar la operación inversa, es decir, quitar el permito de ejecución a nivel de usuario, es tan simple como hacer esto:

sudo chmod u-x script.py

Otro caso simple sería quitar los permisos de escritura para el grupo (de modo que solo dejaríamos los privilegios de escritura para el usuario propietario). Siguiendo la misma lógica de antes, utilizaríamos la siguiente sentencia:

sudo chmod g-w script.py

Así podríamos ir siguiendo con muchas otras combinaciones, pero creo que con esto ya conoces como modificar permisos tanto en modo numérico como en modo octal. A partir de ahí, decantarte por uno u otro ya dependerá de lo intuitivo y practico que te resulte cada uno.

Antes de Terminar

Esto es básicamente todo en cuanto a editar al detalle los diferentes permisos de archivos y directorios en Linux. Si has llegado hasta aquí, solo me queda agradecerte el interés y espero que te haya resultado realmente útil la guía.

Si te ha gustado el post, siéntete libre de compartirlo por tus redes sociales favoritas. Y si tienes cualquier duda, sugerencia o aportación, tienes la sección de comments debajo, donde trataré de responder a tus cuestiones lo más rápido que me sea posible. Hasta la próxima!

# data[].attributes.attachment_link.title
Como Gestionar Usuarios, Grupos y Permisos en Linux

# data[].attributes.attachment_link.description
Muy buenas lector, el post de hoy quiero que te sirva de guía de referencia a la hora de administrar grupos usuarios y asignar los permisos de archivos y directorios en Linux. Básicamente se trata de una segunda parte del post que ya publique hace unos días explicando al detalle como funciona la arquitectura de permisos de Linux.

# data[].attributes.body
Perla Paola Cabriales Ruiz

# data[].attributes.attachment_link.title
Usuarios, grupos, permisos y modos octales en sistemas Unix

# data[].attributes.attachment_link.description
Este artículo trata de bajar a tierra algunos del los conceptos base acerca de usuarios, grupos, permisos, archivos y directorios en sistemas operativos de la familia Unix. Ya sea como introducción a usuarios novicios, como a modo de repaso para usuarios más veteranos.

# data[].attributes.body
Concepto de usuarios, permisos y grupos en Linux #2.

# data[].attributes.attachment_link.readable_text
El control de los usuarios y grupos es un elemento clave en la administracin de sistemas de Red Hat Enterprise Linux.

Los Usuarios pueden ser gente real, es decir, cuentas ligadas a un usuario fsico en particular o cuentas que existen para ser usadas por aplicaciones especficas.

Los Grupos son expresiones lgicas de organizacin, reuniendo usuarios para un propsito comn. Los usuarios dentro de un mismo grupo pueden leer, escribir o ejecutar archivos que pertenecen a ese grupo.

Cada usuario y grupo tiene un nmero de identificacin nico llamado identificador de usuario ( UID) y un identificador de grupo ( GID) respectivamente.

Un usuario que crea un archivo se convierte en el propietario y el propietario de grupo para ese archivo. Al archivo tambin se le asignan permisos separados de lectura, escritura y ejecucin para el propietario del archivo, para el grupo y para cualquier otro usuario. Solamente el superusuario (root) puede cambiar el propietario de un archivo, y los permisos de acceso se pueden cambiar tanto por el superusuario como por el creador del archivo.

Red Hat Enterprise Linux soporta listas de control de acceso ( ACLs) para archivos y directorios lo que permite colocar permisos para usuarios especficos adems del creador. Para ms informacin sobre el uso de ACLs, consulte el captulo llamado Listas de Control de Acceso en el Manual de administracin del sistema de Red Hat Enterprise Linux.

Una de las tareas ms importantes de cualquier administrador del sistema, es la de administrar adecuadamente usuarios y grupos, as como asignar y revocar permisos. Para una vista detallada de las estrategias para la administracin de usuarios y grupos, consulte el captulo titulado Administracin de cuentas de usuarios y acceso a recursos en la gua Introduccin a la administracin de sistemas de Red Hat Enterprise Linux.

La gestin de usuarios y grupos ha sido tradicionalmente tediosa, pero Red Hat Enterprise Linux proporciona algunas herramientas y convenciones que facilitan su gestin.

La forma ms fcil de manejar usuarios y grupos es a travs de la aplicacin grfica, Administrador de usuarios ( system-config-users). Para ms informacin sobre el Administrador de usuarios, consulte el captulo llamado Configuracin de usuarios y grupos en el Manual de administracin del sistema de Red Hat Enterprise Linux.

Las siguientes herramientas de lnea de comandos tambin se pueden utilizar para manejar usuarios y grupos:

useradd, usermod y userdel - Mtodos estndar de la industria para aadir, eliminar y modificar cuentas de usuarios.

groupadd, groupmod y groupdel - Mtodos estndar de la industria para aadir, eliminar y modificar grupos de usuarios.

gpasswd - Mtodos estndar de la industria para administrar el archivo /etc/group.

pwck, grpck - Herramientas para la verificacin de contraseas, grupo y archivos shadow asociados.

pwconv, pwunconv - Herramientas para la conversin de contraseas a contraseas shadow (oscurecimiento de contraseas) y de vuelta a contraseas estndar.

Para una visin general de la administracin de usuarios y grupos, consulte Introduccin a la administracin de sistemas de Red Hat Enterprise Linux. Para una vista ms detallada a las herramientas de lnea de comandos para la administracin de usuarios y grupos, consulte el captulo llamado Configuracin de usuarios y grupos en el Manual de administracin del sistema de Red Hat Enterprise Linux.

# data[].attributes.attachment_link.description
El control de los usuarios y grupos es un elemento clave en la administracin de sistemas de Red Hat Enterprise Linux. Los Usuarios pueden ser gente real, es decir, cuentas ligadas a un usuario fsico en particular o cuentas que existen para ser usadas por aplicaciones especficas.

# data[].attributes.body
Concepto de usuarios, permisos y grupos en Linux.

# data[].attributes.attachment_link.readable_text
Usuarios

El concepto de usuario en Linux permite separar entornos de ejecución para diferentes propósitos. Dos personas pueden trabajar simultáneamente en el mismo sistema, teniendo cada uno un usuario diferente, y un directorio personal diferente.

También es muy común que muchos servicios internos del sistema tengan su propio usuario para restringir el acceso de ese servicio como mecanismo de seguridad. De este modo, si un servicio ve su seguridad comprometida por un ataque, el acceso que tenga el usuario de ese servicio servirá como contención del ataque, y no podrá acceder a ficheros pertenecientes a otro usuario (de persona o servicio).

Demonio (daemon) es el término usado en Linux para referirse al proceso de un servicio que se ejecuta en segundo plano de forma no interactiva. En general acaban por la letra d, como httpd o ftpd.

La configuración de usuarios en Linux esencialmente se maneja en los dos siguientes ficheros.

Archivo /etc/passwd

Contiene información de las cuentas de usuarios y sus características.

name:password:UID:GID:GECOS:directory:shell

Se pueden ver los campos con man passwd:

Password
El password del usuario en texto plano, o un asterisco * o una X si está encriptado.

UID
User ID. Número de identificación único de usuario. Los usuarios pueden cambiar muchos prámetros, incluso su name, pero el UID no lo deben cambiar nunca. El UID del root es 0. Las cuentas de servicios y demonios tienen los números más bajos, mientras que las de usuarios finales comienzan en el valor definido en UID_MIN en el fichero /etc/login.defs.

GID
Gruop ID. Número de identificador único de grupo. Varios usuarios pueden tener el mismo grupo, aunque al crear un usuario se crea un grupo con ese mismo nombre por defecto salvo que se indique lo contrario. Los datos del grupo aparecen en /etc/group.

GECOS
Campo de comentarios que incluye información extra sobre el usuario (nombre real, dirección...) Informalmente se le llama información finger.

directory
Home directory. Directorio de inicio del usuario. Los usuarios finales se suelen situar bajo /home.

Shell
La shell que utiliza por defecto el usuario (en muchos casos es /bin/bash). Si el usuario tiene /sbin/nologin o /usr/bin/false, significa que no tiene permiso para loguearse en el sistema, lo cual es común en daemons como medida de seguridad.

Por ejemplo:

Archivo /etc/shadow

Contiene información sobre contraseñas de los usuarios en /etc/passwd, que almacena de manera cifrada.

Password
Password encriptado. La función hash usada para encriptar el password se indica al comienzo.

Aviso
Número de días previos al Max en los que el usuario es avisado de su obligado cambio de contraseña.

Sobre el campo del password:

* se usa cuando la cuenta nunca ha tenido un password.

! significa que la cuenta ha sido deshabilitada para loguearse mediante password.

Cuando se bloquea una cuenta (lock: usermod -l user), no se borra el password del usuario, sino que se añade una exclamación ! al comienzo del hash del password para indicar que se ha bloqueado. Al desbloquear el usuario (unlock: usermod -u user) se elimina la exclamación, dejando el hash como estaba antes.

Comandos de gestión de usuarios

La Tool Suite Shadow es una colección de comandos que permiten gestionar usuarios sin necesidad de manipular los ficheros /etc/passwd y /etc/shadow directamente, lo cual no es recomendable ante la posibilidad de dejar inconsistencias en ficheros tan delicados. Algunos de los comandos:

useradd - crea un usuario.

userdel - borra un usuario.

usermod - realiza modificaciones sobre los datos de /etc/passwd. Tiene una opción para cada uno de los campos, excepto el campo GECOS. Incluye opciones para (des)bloquear un usuario (--lock y --unlock).

chfn - modifica la información finger (GECOS).

chsh - modifica la shell.

chage - change age visualiza y modifica todas las fechas de contraseña de /etc/shadow.

También existen los comandos adduser y deluser que son más user-friendly y ahorran algo de trabajo, por lo que se utilizan con más frecuencia en la práctica.

Usa el manual man o las opciones -h o --help para ver todas las opciones que ofrecen estos comandos, ya que pueden cambiar según distribuciones.

Para establecer y cambiar una contraseña:

usermod -p PASSWORD USER guarda el password indicado sin encriptar (habría que pasarle un hash del password). No conviene usar esta opción.

passwd USER es el comando que se utiliza, que permite introducir un password con seguridad.

Con el comando finger podemos obtener información del GECOS de cualquier usuario:

Grupos

Los grupos permiten conceder permisos a un conjunto de usuarios simultáneamente.

En Linux un usuario tiene los siguientes grupos:

Grupo primario: es el que consta como su GID en /etc/passwd. Sólo puede haber un grupo primario.

Grupos secundarios o suplementarios: son los gestionados en el fichero /etc/groups, donde se puede añadir un usuario a más grupos.

Además, durante la sesión de usuario se puede cambiar temporalmente el grupo al que pertenece el usuario:

Grupo real: es su grupo primario que consta en /etc/passwd. Es el grupo al que pertenece un usuario cuando inicia sesión.

Grupo efectivo: mediante el comando newgrp se puede cambiar el grupo primario al que pertenece el usuario, y la configuración es efectiva hasta que cierre la seción o vuelva a cambiar de grupo efectivo.

Archivo /etc/group

Este archivo contiene información sobre los grupos del sistema. Su estructura es similar a la de los archivos passwd y shadow, contando con los siguientes campos:

passwd
Password que permite a un usuario cambiar de grupo. Si está vacío no requiere contraseña, y una x significa que se gestiona mediante el archivo /etc/gshadow.

GID
Group ID. Identificador único (numérico) para el grupo.

De forma similar, al fichero /etc/shadow, existe el fichero /etc/gshadow, que almacena los passwords de los grupos encriptados con un hash y también trabaja con los símbolos asterisco * y exclamación !.

Comandos de gestión de grupos

La suite Shadow también incluye los comandos:

groupadd - añade un nuevo grupo

groupdel - borra un grupo

groupmod - Modifica la información de /etc/groups

gpasswd - Modifica el password del grupo, reflejado en /etc/gshadow

Modificar grupos de usuarios

Una vez tenemos un grupo creado, podemos añadírselo como primario o secundario a un usuario usando el comando usermod, con las siguientes opciones:

Por lo tanto:

Permisos sobre archivos y directorios

En Linux, cada fichero y directorio tiene permisos para:

Usuario: el sistema de ficheros guarda un usuario propietario (UID), junto a los permisos que tiene asociados.

Grupo: también se guarda un GID propietario, con permitos

Otros: también tiene permisos para usuarios que no tienen ese UID ni ese GID.

El comando ls -l lista los archivos y directorios incluyendo información sobre sus permisos, de la siguiente manera:

El primer campo indica en la primera letra si es un archivo regular (-), directorio ( d) o enlace ( l). Tras ello, aparecen los permisos, organizados de escritura, lectura y ejecución para el usuario, grupo y otros.

El permiso de ejecución x en directorios significa que se puede acceder dentro del mismo y listar sus contenidos.

Modificaciones de permisos

Los permisos de un archivo o directorio se pueden modificar con el comando:

Modo relativo. Se puede tratar uno de los campos de forma aislada sin tocar el resto de los permisos:

Ejemplos:

Modo absoluto. Se puede reemplazar la información completa de los permisos utilizando un número en base 8 (octal) de tres cifras. Los permisos coinciden con los del número en binario. Lo bueno de trabajar en octal es que cada caracter se puede trabajar de manera independiente.

Ejemplo de permiso 754:

Máscara umask

La máscara del sistema operativo define los permisos que se asignan por defecto a archivos y directorios en el momento de su creación.

El comando umask sin parámetros imprime el valor que tiene actualmente, y se puede manejar en modo simbólico y modo octal:

Si se pasa un parámetro al comando, se establece la nueva máscara.

Modo simbólico: permite establecer los permisos usando las letras u ( user), g ( group), o ( other) y a ( all). Se puede hacer en modo relativo usando los símbolos + y -, o en modo absoluto con =, y combinaciones de ambos.

Modo octal: permite establecer los permisos numéricamente, siempre en modo absoluto.

El modo octal se usa en base a los permisos máximos, que para directorios es 777 y para archivos 666 (sin ejecución). Los bits de la máscara que estén a 1 desactivarán ese permiso a los permisos máximos. Ej: umask = 023

Muchos sistemas tienen la máscara 022, que se establece con:

Cambio de propietario y de grupo

Estos dos atributos se pueden modificar con los comandos:

chown archivo nuevo_propietario: modifica el propietario (UID asociado).

chgrp archivo nuevo_grupo: modifica el grupo (GID asociado).

Con ambos se puede usar la opción -R en directorios, para que realice la operación de manera recursiva, es decir, que lo aplique a todo lo que contiene directamente o en subdirectorios, sub-subdirectorios etc.

Sudoers

En Linux se pueden ejecutar determinados comandos como si fuesen el root con sudo comando. Si el usuario intenta ejecutar algo con sudo, se comprueba si tiene permisos para ejecutar el comando, y si no los tiene, no lo ejecuta y el intento queda registrado en el sistema.

Se puede configurar los privilegios de los usuarios para ejecutar ciertos comandos con el fichero /etc/sudoers. Las modificaciones sobre este archivo no se deben realizar como si fuese un fichero normal, sino que hay que modificarlo con el comando visudo.

Este archivo está dividido en varias secciones:

Definición de alias: Existen varios tipos de alias para realizar agrupaciones. Algunos de ellos son:

Cmnd_Alias: define alias de comandos. Por ejemplo:

Cmnd_Alias CMND_RED = /sbin/ifup, /sbin/ifdown

User_Alias: agrupaciones de usuarios.

Host_Alias: alias de hosts, que pueden indicarse por su nombre, IP o IP son máscara de subred.

Reglas de acceso: En esta sección se asignan a los comandos que pueden realizar los usuarios y desde qué hosts lo puede hacer.

Tiene el formato:

Usuario: puede ser un usuario o alias de usuario. Indica a quién afecta la regla. Si comienza por %, entonces el nombre se refiere a un grupo del sistema.

Host: indica desde qué host se permiten realizar esos comandos.

Usuario_privilegiado: indica qué permisos de usuarios privilegiados se permiten al usuario. Este campo es opcional.

Comandos: indica los comandos o alias de comandos que se permiten para el usuario.

Es necesario escribir los comandos usando su ruta completa. Para consultar la ruta de un comando puedes usar which <nombre_comando>. Los comandos más comunes se suelen localizar en:

comandos esenciales del sistema ( cat, ls ...) accesibles desde una etapa muy temprana en el arranque del sistema. Son accesibles por todos los usuarios.

lo mismo, pero que requieren permisos de superusuario.

comandos no esenciales, pero de uso general instalados a nivel de sistema para todos los usuarios.

equivalente al anterior, pero que requiere permisos de superusuario.

/usr/local/bin
comandos que no forman parte de la distribución del SO.

Por ejemplo:

Si se quiere permitir acceso completo a un usuario, se puede indicar con el alias especial ALL. Por ejemplo, el usuario root se suele configurar como:

No es necesario reiniciar el sistema una vez modificado este fichero con visudo. Una vez configurado, un usuario podrá ejecutar esos comandos permitidos con sudo usando su propia contraseña.

# data[].attributes.attachment_link.description
El concepto de usuario en Linux permite separar entornos de ejecución para diferentes propósitos. Dos personas pueden trabajar simultáneamente en el mismo sistema, teniendo cada uno un usuario diferente, y un directorio personal diferente. También es muy común que muchos servicios internos del sistema tengan su propio usuario para restringir el acceso de ese servicio como mecanismo de seguridad.

# data[].attributes.body
Elizabeth Villegas Cardenas

# data[].attributes.body
Castillo Rodríguez Paola Guadalupe

# data[].attributes.attachment_link.readable_text
¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal

LINUXTOTAL.COM.MX - Información y servicios en Linux y Open Source
URL: http://www.linuxtotal.com.mx/index.php?cont=info_admon_008

Autor: Sergio González D. (sergio.gonzalez.duran@gmail.com)

Linux es un sistema multiusuario, por lo tanto, la tarea de añadir, modificar, eliminar y en general administrar usuarios se convierte en algo no solo rutinario, sino importante, además de ser un elemento de seguridad que mal administrado o tomado a la ligera, puede convertirse en un enorme hoyo de seguridad. En este manual aprenderás todo lo necesario para administrar completamente tus usuarios en GNU/Linux.

Tipos de usuarios

Los usuarios en Unix/Linux se identifican por un número único de usuario, User ID, UID. Y pertenecen a un grupo principal de usuario, identificado también por un número único de grupo, Group ID, GID. El usuario puede pertenecer a más grupos además del principal.

Aunque sujeto a cierta polémica, es posible identificar tres tipos de usuarios en Linux:

Usuario root
También llamado superusuario o administrador.

Su UID (User ID) es 0 (cero).

Es la única cuenta de usuario con privilegios sobre todo el sistema.

Acceso total a todos los archivos y directorios con independencia de propietarios y permisos.

Controla la administración de cuentas de usuarios.

Ejecuta tareas de mantenimiento del sistema.

Puede detener el sistema.

Instala software en el sistema.

Puede modificar o reconfigurar el kernel, controladores, etc.

Usuarios especiales
Ejemplos: bin, daemon, adm, lp, sync, shutdown, mail, operator, squid, apache, etc.

Se les llama también cuentas del sistema.

No tiene todos los privilegios del usuario root, pero dependiendo de la cuenta asumen distintos privilegios de root.

Lo anterior para proteger al sistema de posibles formas de vulnerar la seguridad.

No tienen contraseñas pues son cuentas que no están diseñadas para iniciar sesiones con ellas.

También se les conoce como cuentas de "no inicio de sesión" (nologin).

Se crean (generalmente) automáticamente al momento de la instalación de Linux o de la aplicación.

Generalmente se les asigna un UID entre 1 y 100 (definifo en /etc/login.defs)

Usuarios normales
Se usan para usuarios individuales.

Cada usuario dispone de un directorio de trabajo, ubicado generalmente en /home.

Cada usuario puede personalizar su entorno de trabajo.

Tienen solo privilegios completos en su directorio de trabajo o HOME.

Por seguridad, es siempre mejor trabajar como un usuario normal en vez del usuario root, y cuando se requiera hacer uso de comandos solo de root, utilizar el comando su.

En las distros actuales de Linux se les asigna generalmente un UID superior a 500.

/etc/passwd

Cualquiera que sea el tipo de usuario, todas las cuentas se encuentran definidas en el archivo de configuración ' passwd', ubicado dentro del directorio/etc. Este archivo es de texto tipo ASCII, se crea al momento de la instalación con el usuario root y las cuentas especiales, más las cuentas de usuarios normales que se hayan indicado al momento de la instalación.

El archivo /etc/passwd contiene una línea para cada usuario, similar a las siguientes:

root:x:0:0:root:/root:/bin/bash
sergio:x:501:500:Sergio González:/home/sergio:/bin/bash

La información de cada usuario está dividida en 7 campos delimitados cada uno por ':' dos puntos.

/etc/passwd

Campo 1

Es el nombre del usuario, identificador de inicio de sesión (login). Tiene que ser único.

Campo 2

La 'x' indica la contraseña encriptada del usuario, además también indica que se está haciendo uso del archivo /etc/shadow, si no se hace uso de este archivo, este campo se vería algo así como: ' ghy675gjuXCc12r5gt78uuu6R'.

Campo 3

Número de identificación del usuario (UID). Tiene que ser único. 0 para root, generalmente las cuentas o usuarios especiales se numeran del 1 al 100 y las de usuario normal del 101 en delante, en las distribuciones mas recientes esta numeración comienza a partir del 500.

Campo 4

Numeración de identificación del grupo (GID). El que aparece es el número de grupo principal del usuario, pero puede pertenecer a otros, esto se configura en /etc/groups.

Campo 5

Comentarios o el nombre completo del usuario.

Campo 6

Directorio de trabajo (Home) donde se sitúa al usuario después del inicio de sesión.

Campo 7

Shell que va a utilizar el usuario de forma predeterminada.

/etc/shadow

Anteriormente (en sistemas Unix) las contraseñas cifradas se almacenaban en el mismo /etc/passwd. El problema es que 'passwd' es un archivo que puede ser leído por cualquier usuario del sistema, aunque solo puede ser modificado por root. Con cualquier computadora potente de hoy en día, un buen programa de descifrado de contraseñas y paciencia es posible "crackear" contraseñas débiles (por eso la conveniencia de cambiar periódicamente la contraseña de root y de otras cuentas importantes). El archivo 'shadow', resuelve el problema ya que solo puede ser leido por root. Considérese a 'shadow' como una extensión de 'passwd' ya que no solo almacena la contraseña encriptada, sino que tiene otros campos de control de contraseñas.

El archivo /etc/shadow contiene una línea para cada usuario, similar a las siguientes:

root:ghy675gjuXCc12r5gt78uuu6R:10568:0:99999:7:7:-1::
sergio:rfgf886DG778sDFFDRRu78asd:10568:0:-1:9:-1:-1::

La información de cada usuario está dividida en 9 campos delimitados cada uno por ':' dos puntos.

/etc/shadow

Campo 1

Nombre de la cuenta del usuario.

Campo 2

Contraseña cifrada o encriptada, un '*' indica cuenta de 'nologin'.

Campo 3

Días transcurridos desde el 1/ene/1970 hasta la fecha en que la contraseña fue cambiada por última vez.

Campo 4

Número de días que deben transcurrir hasta que la contraseña se pueda volver a cambiar.

Campo 5

Número de días tras los cuales hay que cambiar la contraseña. (-1 significa nunca). A partir de este dato se obtiene la fecha de expiración de la contraseña.

Campo 6

Número de días antes de la expiración de la contraseña en que se le avisará al usuario al inicio de la sesión.

Campo 7

Días después de la expiración en que la contraseña se inhabilitara, si es que no se cambio.

Campo 8

Fecha de caducidad de la cuenta. Se expresa en días transcurridos desde el 1/Enero/1970 (epoch).

/etc/group

Este archivo guarda la relación de los grupos a los que pertenecen los usuarios del sistema, contiene una línea para cada usuario con tres o cuatro campos por usuario:

root:x:0:root
ana:x:501:
sergio:x:502:ventas,supervisores,produccion
cristina:x:503:ventas,sergio

El campo 1 indica el usuario.

El campo 2 'x' indica la contraseña del grupo, que no existe, si hubiera se mostraría un 'hash' encriptado.

El campo 3 es el Group ID (GID) o identificación del grupo.

El campo 4 es opcional e indica la lista de grupos a los que pertenece el usuario

Actualmente al crear al usuario con useradd se crea también automáticamente su grupo principal de trabajo GID, con el mismo nombre del usuario. Es decir, si se añade el usuario 'sergio' también se crea el /etc/group el grupo 'sergio'. Aun asi, existen comandos de administración de grupos que se explicarán más adelante.

El comportamiento por defecto de todas las distros modernas de GNU/Linux es activar la protección extendida del archivo /etc/shadow, que (se insiste) oculta efectivamente el 'hash' cifrado de la contraseña de/etc/passwd.

Pero si por alguna bizarra y extraña situación de compatibilidad se requiriera tener las contraseñas cifradas en el mismo archivo de /etc/passwd se usaría el comando pwunconv:

#> more /etc/passwd
root:x:0:0:root:/root:/bin/bash
sergio:x:501:500:Sergio González:/home/sergio:/bin/bash
...
(La 'x' en el campo 2 indica que se hace uso de /etc/shadow) #> more /etc/shadow root:ghy675gjuXCc12r5gt78uuu6R:10568:0:99999:7:7:-1:: sergio:rfgf886DG778sDFFDRRu78asd:10568:0:-1:9:-1:-1:: #> pwunconv #> more /etc/passwd root:ghy675gjuXCc12r5gt78uuu6R:0:0:root:/root:/bin/bash sergio:rfgf886DG778sDFFDRRu78asd:501:500:Sergio González:/home/sergio:/bin/bash ... #> more /etc/shadow /etc/shadow: No such file or directory(Al ejecutar pwunconv, el archivo shadow se elimina y las contraseñas cifradas 'pasaron' a passwd)

En cualquier momento es posible reactivar la protección de shadow:

#> pwconv
#> ls -l /etc/passwd /etc/shadow
-rw-r--r-- 1 root root 1106 2007-07-08 01:07 /etc/passwd
-r-------- 1 root root  699 2009-07-08 01:07 /etc/shadow

Se vuelve a crear el archivo shadow, además nótese los permisos tan restrictivos (400) que tiene este archivo, haciendo sumamente difícil (no me gusta usar imposible, ya que en informática parece ser que los imposibles 'casi' no existen) que cualquier usuario que no sea root lo lea.

/etc/login.defs

En el archivo de configuración /etc/login.defs están definidas las variables que controlan los aspectos de la creación de usuarios y de los campos de shadow usadas por defecto. Algunos de los aspectos que controlan estas variables son:

Número máximo de días que una contraseña es válida PASS_MAX_DAYS

El número mínimo de caracteres en la contraseña PASS_MIN_LEN

Valor mínimo para usuarios normales cuando se usa useradd UID_MIN

El valor umask por defecto UMASK

Si el comando useradd debe crear el directorio home por defecto CREATE_HOME

Basta con leer este archivo para conocer el resto de las variables que son autodescriptivas y ajustarlas al gusto. Recúerdese que se usaran principalmente al momento de crear o modificar usuarios con los comandos useradd y usermod que en breve se explicaran.

Añadir usuarios con useradd

useradd o adduser es el comando que permite añadir nuevos usuarios al sistema desde la línea de comandos. Sus opciones más comunes o importantes son las siguientes:

-c añade un comentario al momento de crear al usuario, campo 5 de /etc/passwd

-d directorio de trabajo o home del usuario, campo 6 de /etc/passwd

-e fecha de expiración de la cuenta, formato AAAA-MM-DD, campo 8 de /etc/shadow

-g número de grupo principal del usuario (GID), campo 4 de /etc/passwd

-G otros grupos a los que puede pertenecer el usuario, separados por comas.

-r crea una cuenta del sistema o especial, su UID será menor al definido en /etc/login.defs en la variable UID_MIN, además no se crea el directorio de inicio.

-s shell por defecto del usuario cuando ingrese al sistema. Si no se especifica, bash, es el que queda establecido.

-u UID del usuario, si no se indica esta opción, automáticamente se establece el siguiente número disponible a partir del último usuario creado.

Ahora bien, realmente no hay prácticamente necesidad de indicar ninguna opción ya que si hacemos lo siguiente:

#> useradd juan

Se creará el usuario y su grupo, asi como las entradas correspondientes en /etc/passwd, /etc/shadow y /etc/group. También se creará el directorio de inicio o de trabajo: /home/juan y los archivos de configuración que van dentro de este directorio y que más adelante se detallan.

Las fechas de expiración de contraseña, etc. Quedan lo más amplias posibles asi que no hay problema que la cuenta caduque, asi que prácticamente lo único que faltaría sería añadir la contraseña del usuario y algún comentario o identificación de la cuenta. Como añadir el password o contraseña se estudiara en un momento y viendo las opciones con '-c' es posible establecer el comentario, campo 5 de /etc/passwd:

#> useradd -c "Juan Perez Hernandez" juan

Siempre el nombre del usuario es el último parámetro del comando. Asi por ejemplo, si queremos salirnos del default, podemos establecer algo como lo siguiente:

#> useradd -d /usr/juan -s /bin/csh -u 800 -c "Juan Perez Hernandez" juan

Con lo anterior estamos cambiando su directorio de inicio, su shell por defautl sera csh y su UID será el 800 en vez de que el sistema tome el siguiente número disponible.

Modificar usuarios con usermod

Como su nombre lo indica, usermod permite modificar o actualizar un usuario o cuenta ya existente. Sus opciones más comunes o importantes son las siguientes:

-c añade o modifica el comentario, campo 5 de /etc/passwd

-d modifica el directorio de trabajo o home del usuario, campo 6 de /etc/passwd

-e cambia o establece la fecha de expiración de la cuenta, formato AAAA-MM-DD, campo 8 de /etc/shadow

-g cambia el número de grupo principal del usuario (GID), campo 4 de /etc/passwd

-G establece otros grupos a los que puede pertenecer el usuario, separados por comas.

-l cambia el login o nombre del usuario, campo 1 de /etc/passwd y de /etc/shadow

-L bloque la cuenta del usuario, no permitiendolé que ingrese al sistema. No borra ni cambia nada del usuario, solo lo deshabilita.

-s cambia el shell por defecto del usuario cuando ingrese al sistema.

-u cambia el UID del usuario.

-U desbloquea una cuenta previamente bloqueada con la opción -L.

Si quiseramos cambiar el nombre de usuario de 'sergio' a 'sego':

#> usermod -l sego sergio

Casi seguro también cambiará el nombre del directorio de inicio o HOME en /home, pero si no fuera así, entonces:

#> usermod -d /home/sego sego

Otros cambios o modificaciones en la misma cuenta:

#> usermod -c "supervisor de area" -s /bin/ksh -g 505 sego

Lo anterior modifica el comentario de la cuenta, su shell por defecto que ahora sera Korn shell y su grupo principal de usuario quedó establecido al GID 505 y todo esto se aplicó al usuario 'sego' que como se observa debe ser el último argumento del comando.

El usuario 'sego' salió de vacaciones y nos aseguramos de que nadie use su cuenta:

#> usermod -L sego

Eliminar usuarios con userdel

Como su nombre lo indica, userdel elimina una cuenta del sistema, userdel puede ser invocado de tres maneras:

#> userdel sergio

Sin opciones elimina la cuenta del usuario de /etc/passwd y de/etc/shadow, pero no elimina su directorio de trabajo ni archivos contenidos en el mismo, esta es la mejor opción, ya que elimina la cuenta pero no la información de la misma.

#> userdel -r sergio

Al igual que lo anterior elimina la cuenta totalmente, pero con la opción -r además elimina su directorio de trabajo y archivos y directorios contenidos en el mismo, asi como su buzón de correo, si es que estuvieran configuradas las opciones de correo. La cuenta no se podrá eliminar si el usuario esta logueado o en el sistema al momento de ejecutar el comando.

#> userdel -f sergio

La opción -f es igual que la opción -r, elimina todo lo del usuario, cuenta, directorios y archivos del usuario, pero además lo hace sin importar si el usuario esta actualmente en el sistema trabajando. Es una opción muy radical, además de que podría causar inestabilidad en el sistema, asi que hay que usarla solo en casos muy extremos.

Cambiar contraseñas con passwd

Crear al usuario con useradd es el primer paso, el segundo es asignarle una contraseña a ese usuario. Esto se logra con el comando passwd que permitirá ingresar la contraseña y su verificación:

#> passwd sergio
Changing password for user prueba.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
#>

El usuario root es el único que puede indicar el cambio o asignación de contraseñas de cualquier usuario. Usuarios normales pueden cambiar su contraeña en cualquier momento con tan solo invocar passwd sin argumentos, y podrá de esta manera cambiar la contraseña cuantas veces lo requiera.

passwd tiene integrado validación de contraseñas comunes, cortas, de diccionario, etc. asi que si por ejemplo intento como usuario normal cambiar mi contraseña a 'qwerty' el sistema me mostrará lo siguiente:

$> passwd
Changing password for user prueba.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
$>

Nótese que al ingresar 'qwerty' como contraseña se detectó que es una secuencia ya conocida como contraseña y me manda la advertencia: "BAD PASSWORD: it is based on a dictionary word", sin embargo me permite continuar, al ingresar la verificación. Es decir, passwd avisa de malas o débiles contraseñas pero permite establecerlas si realmente se desea.

Resumiendo entonces, se podría decir que todo este tutorial se reduce a dos líneas de comandos para crear y dejar listo para trabajar a un usuario en Linux:

#> useradd ana
#> passwd ana

Se crea el usuario 'ana', useradd hace todo el trabajo de establecer el shell, directorio de inicio, copiar archivos iniciales de configuración de la cuenta, etc. y después passwd establece la contraseña. Asi de simple.

passwd tiene varias opciones que permiten bloquear la cuenta '-l', desbloquearla '-u', y varias opciones más que controlan la vigencia de la contraseña, es decir, es otro modo de establecer los valores de la cuenta en/etc/shadow. Para más información consulta las páginas del manual:

Archivos de configuración

Los usuarios normales y root en sus directorios de inicio tienen varios archivos que comienzan con "." es decir están ocultos. Varían mucho dependiendo de la distribución de Linux que se tenga, pero seguramente se encontrarán los siguientes o similares:

#> ls -la
drwx------ 2 ana  ana  4096 jul  9 09:54 .
drwxr-xr-x 7 root root 4096 jul  9 09:54 ..
-rw-r--r-- 1 ana  ana    24 jul  9 09:54 .bash_logout
-rw-r--r-- 1 ana  ana   191 jul  9 09:54 .bash_profile
-rw-r--r-- 1 ana  ana   124 jul  9 09:54 .bashrc

.bash_profile aquí podremos indicar alias, variables, configuración del entorno, etc. que deseamos iniciar al principio de la sesión.

.bash_logout aquí podremos indicar acciones, programas, scripts, etc., que deseemos ejecutar al salirnos de la sesión.

.bashrc es igual que .bash_profile, se ejecuta al principio de la sesión, tradicionalmente en este archivo se indican los programas o scripts a ejecutar, a diferencia de .bash_profile que configura el entorno.

Lo anterior aplica para terminales de texto 100%.

Si deseamos configurar archivos de inicio o de salida de la sesión gráfica entonces, en este caso, hay que buscar en el menú del ambiente gráfico algún programa gráfico que permita manipular que programas se deben arrancar al iniciar la sesión en modo gráfico. En la mayoría de las distribuciones existe un programa llamado "sesiones" o "sessions", generalmente esta ubicado dentro del menú de preferencias. En este programa es posible establecer programas o scripts que arranquen junto con el ambiente gráfico, sería equivalente a manipular 'bashrc'.

Además Linux permite que el usuario decida que tipo de entorno Xwindow a utilizar, ya sea algún entorno de escritorio como KDE o Gnome o algún manejador de ventanas como Xfce o Twm. Dentro del Home del usuario, se creará un directorio o archivo escondido "." , por ejemplo '.gnome' o '.kde' donde vendrá la configuración personalizada del usuario para ese entorno. Dentro de este directorio suele haber varios directorios y archivos de configuración. Estos son sumamente variados dependiendo de la distribución y del entorno. No es recomendable modificar manualmente (aunque es perfectamente posible) estos archivos, es mucho mas sencillo modificar vía las interfases gráficas que permiten cambiar el fondo, protector de pantalla, estilos de ventanas, tamaños de letras, etc.

Resumen de comandos y archivos de administración de usuarios

Existen varios comandos más que se usan muy poco en la administración de usuarios, que sin embargo permiten administrar aun más a detalle a tus usuarios de Linux. Algunos de estos comandos permiten hacer lo mismo que los comandos previamente vistos, solo que de otra manera, y otros como chpasswd y newusers resultan muy útiles y prácticos cuando de dar de alta a múltiples usuarios se trata.

A continuación te presento un resumen de los comandos y archivos vistos en este tutorial más otros que un poco de investigación

Comandos de administración y control de usuarios

chage

Permite cambiar o establecer parámetros de las fechas de control de la contraseña.

chpasswd

Actualiza o establece contraseñas en modo batch, múltiples usuarios a la vez. (se usa junto con newusers)

id

Muestra la identidad del usuario (UID) y los grupos a los que pertence.

gpasswd

Administra las contraseñas de grupos (/etc/group y /etc/gshadow).

groupadd

Añade grupos al sistema (/etc/group).

groupdel

Elimina grupos del sistema.

groupmod

Modifica grupos del sistema.

groups

Muestra los grupos a los que pertence el usuario.

newusers

Actualiza o crea usuarios en modo batch, múltiples usuarios a la vez. (se usa junto chpasswd)

pwconv

Establece la protección shadow (/etc/shadow) al archivo /etc/passwd.

pwunconv

Elimina la protección shadow (/etc/shadow) al archivo /etc/passwd.

useradd

Añade usuarios al sistema (/etc/passwd).

userdel

Elimina usuarios del sistema.

usermod

Modifica usuarios.

Archivos de administración y control de usuarios

.bash_logout

Se ejecuta cuando el usuario abandona la sesión.

.bash_profile

Se ejecuta cuando el usuario inicia la sesión.

.bashrc

Se ejecuta cuando el usuario inicia la sesión.

/etc/group

Usuarios y sus grupos.

/etc/gshadow

Contraseñas encriptadas de los grupos.

/etc/login.defs

Variables que controlan los aspectos de la creación de usuarios.

/etc/passwd

Usuarios del sistema.

/etc/shadow

Contraseñas encriptadas y control de fechas de usuarios del sistema.

Ambientes gráficos y Web

Si usas Linux con Xwindow (gnome, kde, etc.) encontrarás dentro de los menús una o varias opciones gráficas de administración de usuarios, asi como programas basados en Web como webmin que entre muchas otras cosas te permiten un control total de la administración de usuarios y grupos. Estos programas de gestión de usuarios son sumamente intuitivos y en una sola pantalla a través de sus opciones puedes controlar prácticamente todas las funciones expuestas en este tutorial, en lo particular recomiendo webmin por su confiablidad y alto nivel de configuración, además que es accesible via web.

Programa de control de usuarios, disponible en Fedora a través del menú Escritorio -> Administración -> Usuarios y grupos, o desde una terminal de comandos o shell con el comando system-config-users, debes de ser root en cualquier caso.

Webmin en el módulo de añadir usuarios. Excelente herramienta de configuración y administración de múltiples aspectos de Linux.

¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal

Si encuentras útil la información que proveé LinuxTotal, considera realizar un donativo que estimule a seguir proporcionando contenido de calidad y utilidad. Gracias.

Dona a través de paypal::

O a través de bitcoins:

14TNQv5wM3xkSv65gHGQ6s6f8yTZuFTohE

Más artículos de LinuxTotal

Administración de usuarios Entendiendo lo que son los 'one liners' Asegurando SSH (haciendo ssh más seguro)
Entre los administradores de sistemas Linux es común el término 'one liners', algo asi como 'los de una línea', y se refiere a ....
Errores comunes en la administración de sistemas GNU/Linux
Linux es un sistema multiusuario, por lo tanto, la tarea de añadir, modificar, eliminar y en general administrar usuarios se conv....
Entendiendo la demanda SCO vs. IBM
SSH (Secure SHell), www.openssh.com, es la herramienta de conexión segura mas usada en el mundo Linux, no hay nada como ssh para ....
Aprende wget con ejemplos
Hay múltiples maneras de cometer errores (algunos muy graves y desastrosos) cuando se administran servidores GNU/Linux, conócelo....
Cambiar la contraseña root de MySQL
La demanda civil entablada por la empresa SCO contra la gigante IBM causó revuelo entre la comunidad Linux y Open Source cuando e....
Probar o escanear puertos abiertos
Hay decenas de apliaciones para descargar archivos, la mayoría basadas en interfaces Web y de escritorio, y para todos los sistem....
Respaldos en MySQL usando replicación
¿Olvidaste o perdiste la contraseña del usuario 'root' de MySQL?, no hay problema, solo sigue estás sencillas instrucciones y p....
Entendiendo (y usando) SSH fingerprint
Administración básica de redes. Conoce distintos métodos y herramientas para escanear, probar o buscar por puertos abiertos des....

Una de las dificultades con una base de datos MySQL grande y activa es la de realizar respaldos limpios sin tener que desconectar ....

ssh es quizás (en mi opinión) la mejor herramienta de comunicación que existe cuando se trata de establecer contacto con un ser....

# data[].attributes.attachment_link.description
¿Requieres de una instalación o configuración de Linux o sus servicios?¿Un desarrollo WEB empresarial a la medida?¿Un curso o capacitación a la medida?Revisa el sitio de SERVICIOS de LinuxTotal LINUXTOTAL.COM.MX - Información y servicios en Linux y Open Source URL: http://www.linuxtotal.com.mx/index.php?cont=info_admon_008 Autor: Sergio González D.

# data[].attributes.attachment_link.readable_text
Usuarios

El concepto de usuario en Linux permite separar entornos de ejecución para diferentes propósitos. Dos personas pueden trabajar simultáneamente en el mismo sistema, teniendo cada uno un usuario diferente, y un directorio personal diferente.

También es muy común que muchos servicios internos del sistema tengan su propio usuario para restringir el acceso de ese servicio como mecanismo de seguridad. De este modo, si un servicio ve su seguridad comprometida por un ataque, el acceso que tenga el usuario de ese servicio servirá como contención del ataque, y no podrá acceder a ficheros pertenecientes a otro usuario (de persona o servicio).

Demonio (daemon) es el término usado en Linux para referirse al proceso de un servicio que se ejecuta en segundo plano de forma no interactiva. En general acaban por la letra d, como httpd o ftpd.

La configuración de usuarios en Linux esencialmente se maneja en los dos siguientes ficheros.

Archivo /etc/passwd

Contiene información de las cuentas de usuarios y sus características.

name:password:UID:GID:GECOS:directory:shell

Se pueden ver los campos con man passwd:

Password
El password del usuario en texto plano, o un asterisco * o una X si está encriptado.

UID
User ID. Número de identificación único de usuario. Los usuarios pueden cambiar muchos prámetros, incluso su name, pero el UID no lo deben cambiar nunca. El UID del root es 0. Las cuentas de servicios y demonios tienen los números más bajos, mientras que las de usuarios finales comienzan en el valor definido en UID_MIN en el fichero /etc/login.defs.

GID
Gruop ID. Número de identificador único de grupo. Varios usuarios pueden tener el mismo grupo, aunque al crear un usuario se crea un grupo con ese mismo nombre por defecto salvo que se indique lo contrario. Los datos del grupo aparecen en /etc/group.

GECOS
Campo de comentarios que incluye información extra sobre el usuario (nombre real, dirección...) Informalmente se le llama información finger.

directory
Home directory. Directorio de inicio del usuario. Los usuarios finales se suelen situar bajo /home.

Shell
La shell que utiliza por defecto el usuario (en muchos casos es /bin/bash). Si el usuario tiene /sbin/nologin o /usr/bin/false, significa que no tiene permiso para loguearse en el sistema, lo cual es común en daemons como medida de seguridad.

Por ejemplo:

Archivo /etc/shadow

Contiene información sobre contraseñas de los usuarios en /etc/passwd, que almacena de manera cifrada.

Password
Password encriptado. La función hash usada para encriptar el password se indica al comienzo.

Aviso
Número de días previos al Max en los que el usuario es avisado de su obligado cambio de contraseña.

Sobre el campo del password:

* se usa cuando la cuenta nunca ha tenido un password.

! significa que la cuenta ha sido deshabilitada para loguearse mediante password.

Cuando se bloquea una cuenta (lock: usermod -l user), no se borra el password del usuario, sino que se añade una exclamación ! al comienzo del hash del password para indicar que se ha bloqueado. Al desbloquear el usuario (unlock: usermod -u user) se elimina la exclamación, dejando el hash como estaba antes.

Comandos de gestión de usuarios

La Tool Suite Shadow es una colección de comandos que permiten gestionar usuarios sin necesidad de manipular los ficheros /etc/passwd y /etc/shadow directamente, lo cual no es recomendable ante la posibilidad de dejar inconsistencias en ficheros tan delicados. Algunos de los comandos:

useradd - crea un usuario.

userdel - borra un usuario.

usermod - realiza modificaciones sobre los datos de /etc/passwd. Tiene una opción para cada uno de los campos, excepto el campo GECOS. Incluye opciones para (des)bloquear un usuario (--lock y --unlock).

chfn - modifica la información finger (GECOS).

chsh - modifica la shell.

chage - change age visualiza y modifica todas las fechas de contraseña de /etc/shadow.

También existen los comandos adduser y deluser que son más user-friendly y ahorran algo de trabajo, por lo que se utilizan con más frecuencia en la práctica.

Usa el manual man o las opciones -h o --help para ver todas las opciones que ofrecen estos comandos, ya que pueden cambiar según distribuciones.

Para establecer y cambiar una contraseña:

usermod -p PASSWORD USER guarda el password indicado sin encriptar (habría que pasarle un hash del password). No conviene usar esta opción.

passwd USER es el comando que se utiliza, que permite introducir un password con seguridad.

Con el comando finger podemos obtener información del GECOS de cualquier usuario:

Grupos

Los grupos permiten conceder permisos a un conjunto de usuarios simultáneamente.

En Linux un usuario tiene los siguientes grupos:

Grupo primario: es el que consta como su GID en /etc/passwd. Sólo puede haber un grupo primario.

Grupos secundarios o suplementarios: son los gestionados en el fichero /etc/groups, donde se puede añadir un usuario a más grupos.

Además, durante la sesión de usuario se puede cambiar temporalmente el grupo al que pertenece el usuario:

Grupo real: es su grupo primario que consta en /etc/passwd. Es el grupo al que pertenece un usuario cuando inicia sesión.

Grupo efectivo: mediante el comando newgrp se puede cambiar el grupo primario al que pertenece el usuario, y la configuración es efectiva hasta que cierre la seción o vuelva a cambiar de grupo efectivo.

Archivo /etc/group

Este archivo contiene información sobre los grupos del sistema. Su estructura es similar a la de los archivos passwd y shadow, contando con los siguientes campos:

passwd
Password que permite a un usuario cambiar de grupo. Si está vacío no requiere contraseña, y una x significa que se gestiona mediante el archivo /etc/gshadow.

GID
Group ID. Identificador único (numérico) para el grupo.

De forma similar, al fichero /etc/shadow, existe el fichero /etc/gshadow, que almacena los passwords de los grupos encriptados con un hash y también trabaja con los símbolos asterisco * y exclamación !.

Comandos de gestión de grupos

La suite Shadow también incluye los comandos:

groupadd - añade un nuevo grupo

groupdel - borra un grupo

groupmod - Modifica la información de /etc/groups

gpasswd - Modifica el password del grupo, reflejado en /etc/gshadow

Modificar grupos de usuarios

Una vez tenemos un grupo creado, podemos añadírselo como primario o secundario a un usuario usando el comando usermod, con las siguientes opciones:

Por lo tanto:

Permisos sobre archivos y directorios

En Linux, cada fichero y directorio tiene permisos para:

Usuario: el sistema de ficheros guarda un usuario propietario (UID), junto a los permisos que tiene asociados.

Grupo: también se guarda un GID propietario, con permitos

Otros: también tiene permisos para usuarios que no tienen ese UID ni ese GID.

El comando ls -l lista los archivos y directorios incluyendo información sobre sus permisos, de la siguiente manera:

El primer campo indica en la primera letra si es un archivo regular (-), directorio ( d) o enlace ( l). Tras ello, aparecen los permisos, organizados de escritura, lectura y ejecución para el usuario, grupo y otros.

El permiso de ejecución x en directorios significa que se puede acceder dentro del mismo y listar sus contenidos.

Modificaciones de permisos

Los permisos de un archivo o directorio se pueden modificar con el comando:

Modo relativo. Se puede tratar uno de los campos de forma aislada sin tocar el resto de los permisos:

Ejemplos:

Modo absoluto. Se puede reemplazar la información completa de los permisos utilizando un número en base 8 (octal) de tres cifras. Los permisos coinciden con los del número en binario. Lo bueno de trabajar en octal es que cada caracter se puede trabajar de manera independiente.

Ejemplo de permiso 754:

Máscara umask

La máscara del sistema operativo define los permisos que se asignan por defecto a archivos y directorios en el momento de su creación.

El comando umask sin parámetros imprime el valor que tiene actualmente, y se puede manejar en modo simbólico y modo octal:

Si se pasa un parámetro al comando, se establece la nueva máscara.

Modo simbólico: permite establecer los permisos usando las letras u ( user), g ( group), o ( other) y a ( all). Se puede hacer en modo relativo usando los símbolos + y -, o en modo absoluto con =, y combinaciones de ambos.

Modo octal: permite establecer los permisos numéricamente, siempre en modo absoluto.

El modo octal se usa en base a los permisos máximos, que para directorios es 777 y para archivos 666 (sin ejecución). Los bits de la máscara que estén a 1 desactivarán ese permiso a los permisos máximos. Ej: umask = 023

Muchos sistemas tienen la máscara 022, que se establece con:

Cambio de propietario y de grupo

Estos dos atributos se pueden modificar con los comandos:

chown archivo nuevo_propietario: modifica el propietario (UID asociado).

chgrp archivo nuevo_grupo: modifica el grupo (GID asociado).

Con ambos se puede usar la opción -R en directorios, para que realice la operación de manera recursiva, es decir, que lo aplique a todo lo que contiene directamente o en subdirectorios, sub-subdirectorios etc.

Sudoers

En Linux se pueden ejecutar determinados comandos como si fuesen el root con sudo comando. Si el usuario intenta ejecutar algo con sudo, se comprueba si tiene permisos para ejecutar el comando, y si no los tiene, no lo ejecuta y el intento queda registrado en el sistema.

Se puede configurar los privilegios de los usuarios para ejecutar ciertos comandos con el fichero /etc/sudoers. Las modificaciones sobre este archivo no se deben realizar como si fuese un fichero normal, sino que hay que modificarlo con el comando visudo.

Este archivo está dividido en varias secciones:

Definición de alias: Existen varios tipos de alias para realizar agrupaciones. Algunos de ellos son:

Cmnd_Alias: define alias de comandos. Por ejemplo:

Cmnd_Alias CMND_RED = /sbin/ifup, /sbin/ifdown

User_Alias: agrupaciones de usuarios.

Host_Alias: alias de hosts, que pueden indicarse por su nombre, IP o IP son máscara de subred.

Reglas de acceso: En esta sección se asignan a los comandos que pueden realizar los usuarios y desde qué hosts lo puede hacer.

Tiene el formato:

Usuario: puede ser un usuario o alias de usuario. Indica a quién afecta la regla. Si comienza por %, entonces el nombre se refiere a un grupo del sistema.

Host: indica desde qué host se permiten realizar esos comandos.

Usuario_privilegiado: indica qué permisos de usuarios privilegiados se permiten al usuario. Este campo es opcional.

Comandos: indica los comandos o alias de comandos que se permiten para el usuario.

Es necesario escribir los comandos usando su ruta completa. Para consultar la ruta de un comando puedes usar which <nombre_comando>. Los comandos más comunes se suelen localizar en:

comandos esenciales del sistema ( cat, ls ...) accesibles desde una etapa muy temprana en el arranque del sistema. Son accesibles por todos los usuarios.

lo mismo, pero que requieren permisos de superusuario.

comandos no esenciales, pero de uso general instalados a nivel de sistema para todos los usuarios.

equivalente al anterior, pero que requiere permisos de superusuario.

/usr/local/bin
comandos que no forman parte de la distribución del SO.

Por ejemplo:

Si se quiere permitir acceso completo a un usuario, se puede indicar con el alias especial ALL. Por ejemplo, el usuario root se suele configurar como:

No es necesario reiniciar el sistema una vez modificado este fichero con visudo. Una vez configurado, un usuario podrá ejecutar esos comandos permitidos con sudo usando su propia contraseña.

# data[].attributes.attachment_link.description
El concepto de usuario en Linux permite separar entornos de ejecución para diferentes propósitos. Dos personas pueden trabajar simultáneamente en el mismo sistema, teniendo cada uno un usuario diferente, y un directorio personal diferente. También es muy común que muchos servicios internos del sistema tengan su propio usuario para restringir el acceso de ese servicio como mecanismo de seguridad.

# data[].attributes.body
Abraham Castañon Sustaita

# data[].attributes.attachment_link.readable_text
Cuántos de nosotros hemos tenido la necesidad de "limitar el acceso" a los archivos contenidos en determinado directorio/carpeta o simplemente necesitamos evitar que algunas personas vean, eliminen o modifiquen el contenido de determinado archivo? Más de uno, verdad? Podremos lograrlo en nuestro amado pingüino? La respuesta es: por supuesto que sí :D.
Introducción
Muchos de los que provenimos de Windows, estábamos acostumbrados a lidiar con esta "problemática" de una manera muy diferente, para conseguir este objetivo teníamos que recurrir a "técnicas" poco ortodoxas, como, ocultar el fichero por medio de sus atributos, mover nuestra información al lugar más recóndito de nuestro equipo (dentro de 20,000 carpetas) para tratar de disuadir a nuestro "enemigo" XD, cambiando o eliminando la extensión del archivo, o la más "común" de las practicas, descargar un programa que nos permita "cerrar" nuestro directorio detrás de un lindo cuadro de dialogo que nos pida una contraseña para acceder al mismo. Teníamos otra alternativa mucho mejor? No.

Lo siento mucho por mis amigos "Windoleros" (lo digo con mucho cariño para que nadie se ofenda, ok? ;)), pero hoy me toca ensañarme un poquito con Windows :P, ya que explicare el porqué este SO no permite de manera nativa esta funcionalidad.

Cuántos de ustedes habrán notado que cuando nos sentamos detrás de un equipo "Windows" (aunque no sea el nuestro) nos convertimos automáticamente en dueños de todo aquello que contiene el ordenador (imágenes, documentos, programas, etc.)? A que me refiero? Bueno, a que simplemente al tomar el "control de Windows", podemos copiar, mover, eliminar, crear, abrir o modificar carpetas y archivos a diestra y siniestra, independientemente si nosotros somos los "dueños" de esta información o no. Esto refleja un gran fallo en la seguridad del sistema operativo, verdad? Bueno, todo esto se debe a que los sistemas operativos de Microsoft no fueron diseñados desde el inicio para ser multiusuario. Cuando se lanzaron las versiones de MS-DOS y algunas versiones de Windows, confiaban plenamente en que el usuario final sería el responsable de "custodiar" su respectivo equipo para que ningún otro usuario tuviera acceso a la información almacenada en el mismo... vaya ingenuidad ¬¬. Ahora amigos WinUsers, ya saben el porqué ha este "misterio" :D.

A contrapartida, GNU/Linux, al ser un sistema diseñado fundamentalmente para trabajo en red, la seguridad de la información que almacenemos en nuestros equipos (y no se diga en los servidores) es fundamental, ya que muchos usuarios tendrán o podrán tener acceso a parte de los recursos de software (tanto aplicaciones como información) y hardware que están gestionados en estos ordenadores.

Ahora podemos ver porque la necesidad de un sistema de permisos? Adentrémonos en el tema ;).

En GNU/Linux, los permisos o derechos que los usuarios pueden tener sobre determinados archivos contenidos en él se establecen en tres niveles claramente diferenciados. Estos tres niveles son los siguientes:

Para tener claros estos conceptos, en los sistemas en red (como lo es el pingüino) siempre existe la figura del administrador, superusuario o root. Este administrador es el encargado de crear y dar de baja a usuarios, así como también, de establecer los privilegios que cada uno de ellos tendrá en el sistema. Estos privilegios se establecen tanto para el directorio HOME de cada usuario como para los directorios y archivos a los que el administrador decida que el usuario pueda acceder.
Permisos del propietario
El propietario es aquel usuario que genera o crea un archivo/carpeta dentro de su directorio de trabajo (HOME), o en algún otro directorio sobre el que tenga derechos. Cada usuario tiene la potestad de crear, por defecto, los archivos que quiera dentro de su directorio de trabajo. En principio, él y solamente él será el que tenga acceso a la información contenida en los archivos y directorios que hay en su directorio HOME.
Permisos del grupo
Lo más normal es que cada usuario pertenezca a un grupo de trabajo. De esta forma, cuando se gestiona un grupo, se gestionan todos los usuarios que pertenecen a éste. Es decir, es más fácil integrar varios usuarios en un grupo al que se le conceden determinados privilegios en el sistema, que asignar los privilegios de forma independiente a cada usuario.
Permisos del resto de usuarios
Por último, también los privilegios de los archivos contenidos en cualquier directorio, pueden tenerlos otros usuarios que no pertenezcan al grupo de trabajo en el que está integrado el archivo en cuestión. Es decir, a los usuarios que no pertenecen al grupo de trabajo en el que está el archivo, pero que pertenecen a otros grupos de trabajo, se les denomina resto de usuarios del sistema.

Muy lindo, pero como puedo identificar todo esto? Sencillo, abre una terminal y realiza lo siguiente:

Nota: son letras "L" minúsculas 😉

Nos aparecerá algo como lo siguiente:

Como podrán observar, este comando despliega o "lista" el contenido de mi HOME, lo que nos ocupa son las líneas de color rojo y verde. El recuadro de color rojo, nos muestra quien es propietario y el recuadro de color verde indica a qué grupo pertenece cada uno de los archivos y carpetas anteriormente listadas. En este caso tanto el propietario y el grupo se llaman "perseo", pero bien pudieron haberse encontrado con un grupo distinto como pudiera ser "ventas". Por lo demás, no se preocupen por ahora, lo veremos más adelante :D.
Tipos de permisos en GNU/Linux
Antes de aprender cómo se establecen los permisos en GNU/Linux, debemos saber cómo se pueden diferenciar los diferentes tipos de archivos que el sistema puede tener.

Cada archivo en GNU/Linux queda identificado por 10 caracteres mismos a los que se les denomina máscara. De estos 10 caracteres, el primero (de izquierda a derecha) hace referencia al tipo de archivo. Los 9 siguientes, de izquierda a derecha y en bloques de 3, hacen referencia a los permisos que se le conceden, respectivamente, al propietario, al grupo y al resto u otros. Una captura para demostrar todo este rollo:

El primer carácter de los archivos puede ser el siguiente:

Los siguientes nueve caracteres son los permisos que se les concede a los usuarios del sistema. Cada tres caracteres, se referencian los permisos de propietario, grupo y resto de usuarios.

Los caracteres que definen estos permisos son los siguientes:
Permisos para archivos Permisos para directorios
Nota: Si no se dispone del permiso de ejecución, no podremos acceder a dicho directorio (aunque utilicemos el comando "cd"), ya que esta acción será denegada. También permite delimitar el uso de un directorio como parte de una ruta (como cuando pasamos la ruta de un archivo que se encuentra en dicho directorio como referencia. Supongamos que queremos copiar el archivo "X.ogg" el cual se encuentra en la carpeta "/home/perseo/Z" -para lo cual la carpeta "Z" no tiene permiso de ejecución-, haríamos lo siguiente:
$ cp /home/perseo/Z/X.ogg /home/perseo/Y/
obteniendo con esto un mensaje de error diciéndonos que no tenemos los permisos suficientes para acceder al archivo :D). Si el permiso de ejecución de un directorio está desactivado, se podrá ver su contenido (si se cuenta con permiso de lectura), pero no se podrá acceder a ninguno de los objetos contenidos en él, pues para ello este directorio es parte del camino necesario para resolver la ubicación de sus objetos.
Gestión de permisos en GNU/Linux
Hasta ahora, hemos visto para que nos sirven los permisos en GNU/Linux, a continuación veremos cómo asignar o restar permisos o derechos.

Antes de comenzar, debemos de tener en cuenta que cuando damos de alta o creamos un usuario en el sistema, le concedemos de forma automática unos privilegios. Estos privilegios, por supuesto, no serán totales, es decir, los usuarios no dispondrán, normalmente, de los mismos permisos y derechos del superusuario. Cuando el usuario se crea, el sistema genera por defecto los privilegios del usuario para manejo de archivos y para manejo de directorios. Evidentemente, éstos pueden ser modificados por el administrador, pero el sistema genera unos privilegios más o menos válidos para la mayoría de las operaciones que cada usuario realizará sobre su directorio, sus archivos y sobre los directorios y archivos del resto de usuarios. Por lo general, son los siguientes permisos:

Nota: no son los mismos permisos para todas las distribuciones de GNU/Linux.

Estos privilegios nos permiten crear, copiar y borrar archivos, crear nuevos directorios, etc. Veamos en la práctica todo esto :D:

Tomemos como ejemplo el archivo "CSS Avanzado.pdf". Observemos que aparece de la siguiente manera: -rw-r--r-- ... CSS Avanzado.pdf. Miremos más a fondo.

Esto significa que:

<° Tipo: Archivo
<° El usuario puede: Leer (visualizar el contenido) y escribir (modificar) el archivo.
<° El grupo al que pertenece el usuario puede: Leer (únicamente) el archivo.
<° Otros usuarios pueden: Leer (únicamente) el archivo.

Para aquellos curiosos que se están preguntando en estos momentos a que se refieren los otros campos del listado obtenido por ls -l, aquí la respuesta:

Si desean saber más acerca de los hard y soft/symbolic links, aquí la explicación y sus diferencias.

Bueno amigos, llegamos a la parte más interesante y pesada del tema en cuestión...
Asignación de permisos
El comando chmod ("change mode") permite modificar la máscara para que se puedan realizar más o menos operaciones sobre archivos o directorios, dicho de otra forma, con chmod puedes quitar o eliminar derechos a cada tipo de usuarios. Si no se especifica el tipo de usuario al que queremos quitar, poner o asignar privilegios, lo que sucederá al realizar la operación es afectar a todos los usuarios simultáneamente.

Lo básico que hay que recordar es que le demos dar o quitar permisos en estos niveles:

Tipos de permiso:

Dar permiso de ejecución al dueño:
$ chmod u+x komodo.sh
Quitar permiso de ejecución a todos los usuarios:
$ chmod -x komodo.sh
Dar permiso de lectura y escritura a los demás usuarios:
$ chmod o+r+w komodo.sh
Dejar solo permiso de lectura al grupo al que pertenece el archivo:
$ chmod g+r-w-x komodo.sh Permisos en formato numérico octal
Hay otra forma de utilizar el comando chmod que, para muchos usuarios, resulta "más cómoda", aunque a priori sea algo más compleja de entender ¬¬.

La combinación de valores de cada grupo de los usuarios forma un número octal, el bit "x" es 20 es decir 1, el bit w es 21 es decir 2, el bit r es 22 es decir 4, tenemos entonces:

La combinación de bits encendidos o apagados en cada grupo da ocho posibles combinaciones de valores, es decir la suma de los bits encendidos:

Cuando se combinan los permisos del usuario, grupo y otros, se obtienen un número de tres cifras que conforman los permisos del archivo o del directorio. Ejemplos:

711

El propietario lectura, escritura y ejecución, el grupo y otros solo ejecución

400

Solo el propietario puede leer el archivo, pero ni el mismo puede modificarlo o ejecutarlo y por supuesto ni el grupo ni otros pueden hacer nada en el

640

El usuario propietario puede leer y escribir, el grupo puede leer el archivo y otros no pueden hacer nada

Permisos especiales
Aún hay otro tipo de permisos que hay que considerar. Se trata del bit de permisos SUID (Set User ID), el bit de permisos SGID (Set Group ID) y el bit de permisos de persistencia (sticky bit).
setuid
El bit setuid es asignable a ficheros ejecutables, y permite que cuando un usuario ejecute dicho fichero, el proceso adquiera los permisos del propietario del fichero ejecutado. El ejemplo más claro de fichero ejecutable y con el bit setuid es:

Podemos ver que el bit está asignado como "s" en la siguiente captura:

Para asignar este bit a un fichero seria:
$ chmod u+s /bin/su
Y para quitarlo:
$ chmod u-s /bin/su
Nota: Debemos utilizar este bit con extremo cuidado ya que puede provocar una escalada de privilegios en nuestro sistema ¬¬.
setgid
El bit setid permite adquirir los privilegios del grupo asignado al fichero, también es asignable a directorios. Esto será muy útil cuando varios usuarios de un mismo grupo necesiten trabajar con recursos dentro de un mismo directorio.

Para asignar este bit hacemos lo siguiente:
$ chmod g+s /carpeta_compartida
Y para quitarlo:
$ chmod g-s /carpeta_compartida sticky
Este bit suele asignarse en directorios a los que todos los usuarios tienen acceso, y permite evitar que un usuario pueda borrar ficheros/directorios de otro usuario dentro de ese directorio, ya que todos tienen permiso de escritura.
Podemos ver que el bit está asignado como "t" en la siguiente captura:

Para asignar este bit hacemos lo siguiente:
$ chmod o+t /tmp
Y para quitarlo:
$ chmod o-t /tmp
Bueno amigos, ahora ya saben cómo proteger de mejor manera su información, con esto espero que dejen de buscar alternativas para Folder Lock o Folder Guard que en GNU/Linux no los necesitamos para nada XD.

P.D.: Este articulo en particular me lo solicito el vecino del primo de un amigo XD, espero haberle resuelto sus dudas... 😀

# data[].attributes.attachment_link.description
Cuántos de nosotros hemos tenido la necesidad de "limitar el acceso" a los archivos contenidos en determinado directorio/carpeta o simplemente necesitamos evitar que algunas personas vean, eliminen o modifiquen el contenido de determinado archivo? Más de uno, verdad? Podremos lograrlo en nuestro amado pingüino? La respuesta es: por supuesto que sí :D.

# data[].attributes.headline
¿Cómo administrar sus usuarios y grupos en Linux?

# data[].attributes.subject
¿Cómo administrar sus usuarios y grupos en Linux?

# data[].attributes.body
Alma Oralia Martínez Leos

# data[].attributes.attachment_link.readable_text
Administración de usuarios

Crear un nuevo usuario

Para agregar un usuario nuevo, puede ejecutar alguno de los siguientes comandos:

adduser nuevousuario useradd nuevousuario

Tenga en cuenta que por defecto, esta acción creará un grupo del mismo nombre ( nuevousuario), es decir que el identificador de usuario UID y el identificador de grupo GID serán iguales. Además se creará el directorio principal del usuario: /home/nuevousuario (por defecto).

Si quiere incluir al usuario en un grupo justo al momento de crearlo puede utilizar:

useradd nuevousuario -g grupoprincipal

El parámetro -g añade el grupo principal del nuevo usuario. ¡Recuerde que el grupo especificado debe existir! ¿Qué ocurre entonces si nuestro usuario debe estar en más de un grupo? También tiene la opción de agregar grupos secundarios usando la opción -G seguido del grupo secundario. Si requiere más de un grupo secundario, puede agregar dos o más grupos separándolos por comas. Por ejemplo:

useradd nuevousuario -g grupoprincipal -G gruposecundario1,gruposecundario2

Otra opción útil de este comando es cuando se especifica un directorio principal distinto:

useradd -d /home/otrodirectorio

Para llevar un control más claro de cada usuario, y debido a que el nombre de usuario podría no proporcionar información suficiente, puede especificar el nombre completo del usuario usando la opción -c, por ejemplo:

useradd -c "Julia Schneider" julia

Establecer contraseñas

Una vez que cree un nuevo usuario (o en cualquier momento que considere necesario), es hora de crear una contraseña asociada a dicho usuario. Siempre se recomienda usar contraseñas con un nivel de seguridad alto:

El comando utilizado para establecer contraseñas es passwd seguido por el nombre del usuario. Por ejemplo, para establecer la contraseña del usuario julia utilice:

passwd julia

Su shell le pedirá que indique la contraseña y que luego la confirme. Por seguridad Linux no muestra su contraseña ni caracteres ocultos mientras escribe, así que debe hacerlo con cuidado. A continuación un ejemplo de la salida en su terminal al usar el comando anterior:

Changing password for user julia. New password: Retype new password: passwd: all authentication tokens updated successfully.

Existen opciones que puede utilizar junto con el comando passwd para bloquear la contraseña (-l o --lock), desbloquearla ( u o --unlock) e incluso para establecer el tiempo máximo de vida de la contraseña: --maximum=DÍAS.

Por ejemplo, si desea que la contraseña del usuario julia expire en 90 días:

passwd --maximum=90 julia

Sabrá que el procedimiento fue exitoso si ve un mensaje similar al siguiente:

Adjusting aging data for user julia. passwd: Success

Otras operaciones

Comando usermod

Con el comando usermod se pueden realizar varios cambios en la configuración de los usuarios del sistema. Algunos ejemplos a continuación.

Para cambiar el nombre de inicio de sesión de un usuario:

usermod -l nombreantiguo nombrenuevo

Para cambiar el directorio /home de un usuario utilice:

usermod -d /nuevo/directorio -m nombredeusuario

Para agregar el usuario a otros grupos suplementarios:

usermod -G grupo1,grupo2,grupo3

Use el parámetro --expiredate seguido por la fecha en formato AAAA-MM-DD para establecer la fecha de expiración de la cuenta de usuario:

usermod --expiredate 2017-01-02 nombredeusuario

Para bloquear la contraseña de un usuario:

usermod --lock nombredeusuario

Para desbloquear la contraseña de un usuario:

usermod --unlock nombredeusuario

Borrar una cuenta de usuario

Para borrar una cuenta de usuario, debe utilizar el comando userdel. Recuerde que debe ser usuario root para ejecutar la acción:

userdel nombredeusuario

El comando arriba borraría únicamente la cuenta del usuario nombredeusuario, pero no elimina los archivos asociados a este usuario.

Utilice el siguiente comando con cuidado: si desea borrar la cuenta de un usuario, y además forzar la eliminación del directorio principal y de todos sus archivos (incluso si el usuario está activo o los archivos están en uso):

userdel -rf nombredeusuario

Mostrar los grupos a los cuales pertenece un usuario

Puede usar los siguientes comandos para identificar los grupos a los cuales pertenece un usuario en particular:

groups nombredeusuario id nombredeusuario

Comando chage

El comando chage ( change age) cambia el número de días entre los cuales debe cambiar la contraseña. Cuando el usuario inicie sesión, aparecerá un mensaje indicando que debe cambiar la contraseña antes de que expire.

Si su servidor no posee la utilidad chage puede instalarla usando:

apt-get install chage

Para Debian/Ubuntu.

yum install chage

Para RHEL/Fedora/CentOS.

Para ver información con respecto a la contraseña de un usuario ejecute:

chage --list nombredeusuario

A continuación un ejemplo de salida para un usuario cuya información de contraseña no ha sido editada:

Last password change : Jul 27, 2016 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7

Para establecer el número de días máximo para la expiración de la contraseña utilice la opción -M seguido del número de días. Por ejemplo: digamos que quiere que la contraseña expire cada 90 días:

chage -M 90 nombredeusuario

Esto es equivalente al comando utilizado con useradd anteriormente.

Para establecer una contraseña como vencida o expirada, utilice el siguiente comando. Este es especialmente útil cuando usted es el administrador de un sistema Linux, y desea mantener la privacidad del usuario en cuestión.

chage -d 0 username

De esta manera, la próxima vez que el usuario inicie sesión, se le pedirá que cambie su contraseña. Establecer fechas de expiración de contraseñas es una buena práctica que se recomienda aplicar a todos los usuarios del sistema.

Archivos importantes

/etc/passwd

Es la base de datos de usuarios en el sistema. Toda la información de usuarios locales se almacena en texto plano bajo este archivo. Cada línea representa un usuario y tiene siete campos separados por el signo de dos puntos (:).

Cuenta (nombre de usuario) : Contraseña : UID (ID de usuario) : GID (ID de grupo) : GECOS (campo opcional con propósitos informativos) : Directorio (directorio principal o home del usuario) : shell (ruta al shell predeterminado, campo opcional)

Para ver el contenido en este archivo puede ejecutar:

cat /etc/passwd

Se muestra una línea de ejemplo:

julia:x:504:506:Julia Schneider:/home/julia:/bin/bash

/etc/shadow

Este archivo almacena las contraseñas reales de cada usuario en formato encriptado. Además almacena cierta información relacionada con la cuenta de usuario. La explicación del contenido de este archivo se escapa del alcance de este tutorial, pero su disposición es muy similar a la del archivo passwd. Se muestra en el siguiente ejemplo una línea del archivo shadow:

julia:Z9B3Qve$f7tlKI8Shimc9ZDx.7KQGFBxFUrAX2xzMEOJVJ7YcEhePU5cR8Lo09V25aFbWe51eu3047K7kTlQJ3LG1K15y1:17043:0:90:7:::

Administración de grupos

Linux utiliza grupos para organizar los usuarios. Estos simplemente son conjuntos de cuentas de usuarios que comparten ciertos permisos. A todos los usuarios se les asigna un identificador de usuario (uid) y de grupo (gid). Administrar correctamente sus grupos es de gran importancia.

Lista de grupos disponibles

Para enumerar los grupos disponibles en su sistema, puede utilizar el archivo /etc/group. Verá una lista de los grupos disponibles en el orden en el cual fueron agregados, los primeros de la lista son los grupos básicos del sistema:

root:x:0: bin:x:1:bin,daemon daemon:x:2:bin,daemon sys:x:3:bin,adm adm:x:4:adm,daemon ...

Los grupos del sistema están identificados con los GIDs 1-499 (identificadores de grupo reservados para el sistema). El grupo más importante es root, el cual otorga administración y control total del sistema.

Crear un nuevo grupo

Para crear un grupo nuevo utilice:

groupadd nombredelgrupo

Para crear un nuevo grupo del sistema añada el parámetro -r al comando groupadd:

groupadd -r nombredelgrupo

Modificar los ajustes del grupo

El comando groupmod permite hacer algunos cambios a los grupos disponibles.

Para cambiar el nombre de un grupo utilice:

groupmod -n gruponuevo grupoantiguo

Agregar y remover usuarios a un grupo con gpasswd

Puede agregar usuarios a un grupo utilizando:

gpasswd -a nombredeusuario nombredegrupo

Para remover un usuario de un grupo al cual pertenece:

gpasswd -d nombredeusuario nombredegrupo

Borrar grupos

Para borrar un grupo simplemente ejecute:

groupdel nombredelgrupo

Permisos y propiedades de usuarios y grupos

A medida que crea usuarios y grupos, lo más probable es que desee determinar los permisos y propiedades de estos dentro del sistema de archivos. Este tema se escapa del alcance de este tutorial, pero se aborda en detalle en nuestra guía de Conceptos básicos de permisos y propiedades en Linux

Recursos adicionales

Este es un tema extenso que forma parte esencial de la administración de sistemas Linux; nuestro tutorial da un punto de partida sólido para comprender los conceptos y usos básicos. Puede consultar los siguientes recursos en busca de información adicional. Aunque este material es provisto esperando que sea útil, tenga en cuenta que no podemos certificar la actualidad o precisión de los contenidos externos.

# data[].attributes.attachment_link.title
Cómo administrar sus usuarios y grupos en Linux

# data[].attributes.attachment_link.description
Para agregar un usuario nuevo, puede ejecutar alguno de los siguientes comandos: adduser nuevousuario useradd nuevousuario Tenga en cuenta que por defecto, esta acción creará un grupo del mismo nombre ( nuevousuario), es decir que el identificador de usuario UID y el identificador de grupo GID serán iguales.

# data[].attributes.body
Comprensión del sistema de ficheros.
-Usuarios y grupos, permisos de fichero.

# data[].attributes.body
Dennis Alejandro Martinez Mendoza

# data[].attributes.attachment_link.readable_text
Usuarios

El concepto de usuario en Linux permite separar entornos de ejecución para diferentes propósitos. Dos personas pueden trabajar simultáneamente en el mismo sistema, teniendo cada uno un usuario diferente, y un directorio personal diferente.

También es muy común que muchos servicios internos del sistema tengan su propio usuario para restringir el acceso de ese servicio como mecanismo de seguridad. De este modo, si un servicio ve su seguridad comprometida por un ataque, el acceso que tenga el usuario de ese servicio servirá como contención del ataque, y no podrá acceder a ficheros pertenecientes a otro usuario (de persona o servicio).

Demonio (daemon) es el término usado en Linux para referirse al proceso de un servicio que se ejecuta en segundo plano de forma no interactiva. En general acaban por la letra d, como httpd o ftpd.

La configuración de usuarios en Linux esencialmente se maneja en los dos siguientes ficheros.

Archivo /etc/passwd

Contiene información de las cuentas de usuarios y sus características.

name:password:UID:GID:GECOS:directory:shell

Se pueden ver los campos con man passwd:

Password
El password del usuario en texto plano, o un asterisco * o una X si está encriptado.

UID
User ID. Número de identificación único de usuario. Los usuarios pueden cambiar muchos prámetros, incluso su name, pero el UID no lo deben cambiar nunca. El UID del root es 0. Las cuentas de servicios y demonios tienen los números más bajos, mientras que las de usuarios finales comienzan en el valor definido en UID_MIN en el fichero /etc/login.defs.

GID
Gruop ID. Número de identificador único de grupo. Varios usuarios pueden tener el mismo grupo, aunque al crear un usuario se crea un grupo con ese mismo nombre por defecto salvo que se indique lo contrario. Los datos del grupo aparecen en /etc/group.

GECOS
Campo de comentarios que incluye información extra sobre el usuario (nombre real, dirección...) Informalmente se le llama información finger.

directory
Home directory. Directorio de inicio del usuario. Los usuarios finales se suelen situar bajo /home.

Shell
La shell que utiliza por defecto el usuario (en muchos casos es /bin/bash). Si el usuario tiene /sbin/nologin o /usr/bin/false, significa que no tiene permiso para loguearse en el sistema, lo cual es común en daemons como medida de seguridad.

Por ejemplo:

Archivo /etc/shadow

Contiene información sobre contraseñas de los usuarios en /etc/passwd, que almacena de manera cifrada.

Password
Password encriptado. La función hash usada para encriptar el password se indica al comienzo.

Aviso
Número de días previos al Max en los que el usuario es avisado de su obligado cambio de contraseña.

Sobre el campo del password:

* se usa cuando la cuenta nunca ha tenido un password.

! significa que la cuenta ha sido deshabilitada para loguearse mediante password.

Cuando se bloquea una cuenta (lock: usermod -l user), no se borra el password del usuario, sino que se añade una exclamación ! al comienzo del hash del password para indicar que se ha bloqueado. Al desbloquear el usuario (unlock: usermod -u user) se elimina la exclamación, dejando el hash como estaba antes.

Comandos de gestión de usuarios

La Tool Suite Shadow es una colección de comandos que permiten gestionar usuarios sin necesidad de manipular los ficheros /etc/passwd y /etc/shadow directamente, lo cual no es recomendable ante la posibilidad de dejar inconsistencias en ficheros tan delicados. Algunos de los comandos:

useradd - crea un usuario.

userdel - borra un usuario.

usermod - realiza modificaciones sobre los datos de /etc/passwd. Tiene una opción para cada uno de los campos, excepto el campo GECOS. Incluye opciones para (des)bloquear un usuario (--lock y --unlock).

chfn - modifica la información finger (GECOS).

chsh - modifica la shell.

chage - change age visualiza y modifica todas las fechas de contraseña de /etc/shadow.

También existen los comandos adduser y deluser que son más user-friendly y ahorran algo de trabajo, por lo que se utilizan con más frecuencia en la práctica.

Usa el manual man o las opciones -h o --help para ver todas las opciones que ofrecen estos comandos, ya que pueden cambiar según distribuciones.

Para establecer y cambiar una contraseña:

usermod -p PASSWORD USER guarda el password indicado sin encriptar (habría que pasarle un hash del password). No conviene usar esta opción.

passwd USER es el comando que se utiliza, que permite introducir un password con seguridad.

Con el comando finger podemos obtener información del GECOS de cualquier usuario:

Grupos

Los grupos permiten conceder permisos a un conjunto de usuarios simultáneamente.

En Linux un usuario tiene los siguientes grupos:

Grupo primario: es el que consta como su GID en /etc/passwd. Sólo puede haber un grupo primario.

Grupos secundarios o suplementarios: son los gestionados en el fichero /etc/groups, donde se puede añadir un usuario a más grupos.

Además, durante la sesión de usuario se puede cambiar temporalmente el grupo al que pertenece el usuario:

Grupo real: es su grupo primario que consta en /etc/passwd. Es el grupo al que pertenece un usuario cuando inicia sesión.

Grupo efectivo: mediante el comando newgrp se puede cambiar el grupo primario al que pertenece el usuario, y la configuración es efectiva hasta que cierre la seción o vuelva a cambiar de grupo efectivo.

Archivo /etc/group

Este archivo contiene información sobre los grupos del sistema. Su estructura es similar a la de los archivos passwd y shadow, contando con los siguientes campos:

passwd
Password que permite a un usuario cambiar de grupo. Si está vacío no requiere contraseña, y una x significa que se gestiona mediante el archivo /etc/gshadow.

GID
Group ID. Identificador único (numérico) para el grupo.

De forma similar, al fichero /etc/shadow, existe el fichero /etc/gshadow, que almacena los passwords de los grupos encriptados con un hash y también trabaja con los símbolos asterisco * y exclamación !.

Comandos de gestión de grupos

La suite Shadow también incluye los comandos:

groupadd - añade un nuevo grupo

groupdel - borra un grupo

groupmod - Modifica la información de /etc/groups

gpasswd - Modifica el password del grupo, reflejado en /etc/gshadow

Modificar grupos de usuarios

Una vez tenemos un grupo creado, podemos añadírselo como primario o secundario a un usuario usando el comando usermod, con las siguientes opciones:

Por lo tanto:

Permisos sobre archivos y directorios

En Linux, cada fichero y directorio tiene permisos para:

Usuario: el sistema de ficheros guarda un usuario propietario (UID), junto a los permisos que tiene asociados.

Grupo: también se guarda un GID propietario, con permitos

Otros: también tiene permisos para usuarios que no tienen ese UID ni ese GID.

El comando ls -l lista los archivos y directorios incluyendo información sobre sus permisos, de la siguiente manera:

El primer campo indica en la primera letra si es un archivo regular (-), directorio ( d) o enlace ( l). Tras ello, aparecen los permisos, organizados de escritura, lectura y ejecución para el usuario, grupo y otros.

El permiso de ejecución x en directorios significa que se puede acceder dentro del mismo y listar sus contenidos.

Modificaciones de permisos

Los permisos de un archivo o directorio se pueden modificar con el comando:

Modo relativo. Se puede tratar uno de los campos de forma aislada sin tocar el resto de los permisos:

Ejemplos:

Modo absoluto. Se puede reemplazar la información completa de los permisos utilizando un número en base 8 (octal) de tres cifras. Los permisos coinciden con los del número en binario. Lo bueno de trabajar en octal es que cada caracter se puede trabajar de manera independiente.

Ejemplo de permiso 754:

Máscara umask

La máscara del sistema operativo define los permisos que se asignan por defecto a archivos y directorios en el momento de su creación.

El comando umask sin parámetros imprime el valor que tiene actualmente, y se puede manejar en modo simbólico y modo octal:

Si se pasa un parámetro al comando, se establece la nueva máscara.

Modo simbólico: permite establecer los permisos usando las letras u ( user), g ( group), o ( other) y a ( all). Se puede hacer en modo relativo usando los símbolos + y -, o en modo absoluto con =, y combinaciones de ambos.

Modo octal: permite establecer los permisos numéricamente, siempre en modo absoluto.

El modo octal se usa en base a los permisos máximos, que para directorios es 777 y para archivos 666 (sin ejecución). Los bits de la máscara que estén a 1 desactivarán ese permiso a los permisos máximos. Ej: umask = 023

Muchos sistemas tienen la máscara 022, que se establece con:

Cambio de propietario y de grupo

Estos dos atributos se pueden modificar con los comandos:

chown archivo nuevo_propietario: modifica el propietario (UID asociado).

chgrp archivo nuevo_grupo: modifica el grupo (GID asociado).

Con ambos se puede usar la opción -R en directorios, para que realice la operación de manera recursiva, es decir, que lo aplique a todo lo que contiene directamente o en subdirectorios, sub-subdirectorios etc.

Sudoers

En Linux se pueden ejecutar determinados comandos como si fuesen el root con sudo comando. Si el usuario intenta ejecutar algo con sudo, se comprueba si tiene permisos para ejecutar el comando, y si no los tiene, no lo ejecuta y el intento queda registrado en el sistema.

Se puede configurar los privilegios de los usuarios para ejecutar ciertos comandos con el fichero /etc/sudoers. Las modificaciones sobre este archivo no se deben realizar como si fuese un fichero normal, sino que hay que modificarlo con el comando visudo.

Este archivo está dividido en varias secciones:

Definición de alias: Existen varios tipos de alias para realizar agrupaciones. Algunos de ellos son:

Cmnd_Alias: define alias de comandos. Por ejemplo:

Cmnd_Alias CMND_RED = /sbin/ifup, /sbin/ifdown

User_Alias: agrupaciones de usuarios.

Host_Alias: alias de hosts, que pueden indicarse por su nombre, IP o IP son máscara de subred.

Reglas de acceso: En esta sección se asignan a los comandos que pueden realizar los usuarios y desde qué hosts lo puede hacer.

Tiene el formato:

Usuario: puede ser un usuario o alias de usuario. Indica a quién afecta la regla. Si comienza por %, entonces el nombre se refiere a un grupo del sistema.

Host: indica desde qué host se permiten realizar esos comandos.

Usuario_privilegiado: indica qué permisos de usuarios privilegiados se permiten al usuario. Este campo es opcional.

Comandos: indica los comandos o alias de comandos que se permiten para el usuario.

Es necesario escribir los comandos usando su ruta completa. Para consultar la ruta de un comando puedes usar which <nombre_comando>. Los comandos más comunes se suelen localizar en:

comandos esenciales del sistema ( cat, ls ...) accesibles desde una etapa muy temprana en el arranque del sistema. Son accesibles por todos los usuarios.

lo mismo, pero que requieren permisos de superusuario.

comandos no esenciales, pero de uso general instalados a nivel de sistema para todos los usuarios.

equivalente al anterior, pero que requiere permisos de superusuario.

/usr/local/bin
comandos que no forman parte de la distribución del SO.

Por ejemplo:

Si se quiere permitir acceso completo a un usuario, se puede indicar con el alias especial ALL. Por ejemplo, el usuario root se suele configurar como:

No es necesario reiniciar el sistema una vez modificado este fichero con visudo. Una vez configurado, un usuario podrá ejecutar esos comandos permitidos con sudo usando su propia contraseña.

# data[].attributes.attachment_link.description
El concepto de usuario en Linux permite separar entornos de ejecución para diferentes propósitos. Dos personas pueden trabajar simultáneamente en el mismo sistema, teniendo cada uno un usuario diferente, y un directorio personal diferente. También es muy común que muchos servicios internos del sistema tengan su propio usuario para restringir el acceso de ese servicio como mecanismo de seguridad.

# data[].attributes.body
Eduardo Lopez Rodríguez

# data[].attributes.attachment_link.readable_text
1 Este documento está bajo licencia Creative Commons Trabajo realizado por: José Ignacio Mardomingo Chacón Creación de usuarios y grupos Gestión de usuarios y grupos en Linux 1. Crear un usuario alumno01 con las opciones por defecto. Indica su grupo primario. Acceder al sistema con este usuario. -Lo primero que tenemos que hacer para crear el usuario es utilizar el comando adduser desde la terminal junto con el nombre que vamos a asignar a dicho usuario, (en nuestro caso alumno01). -Como se muestra en la imagen, con el comando id podemos comprobar el grupo primario, en nuestro caso es el gid=1006 que pertenece a alumno01. Para asegurarnos de que se ha creado correctamente dicho grupo accederemos al directorio /etc/passwd, que es donde se aloja la información de los usuarios del sistema y los grupos primarios.

2 -Podemos observar que el grupo primario del usuario alumno01 añadido a /etc/passwd coincide con el comprobado con el comando id. -Por último accedemos al sistema del usuario alumno01 tanto desde la terminal (con el comando: sudo su alumno01 y comprobando con el comando whoami), como cambiando de usuario desde la interfaz gráfica: 2. Crear el usuario alumno01a con un comando diferente al utilizado en el caso anterior. Indica su grupo primario. Acceder al sistema con este usuario. -En este caso crearemos el usuario con el comando useradd sin asignar una contraseña, e indicaremos el grupo primario (gid=1007) con el comando id como anteriormente. -Al intentar acceder a la nueva cuenta que hemos creado no podremos iniciar sesión ya que nos pedirá insertar una contraseña, esto es debido a que no hemos creado un directorio personal de dicho usuario en /home por lo tanto se nos deniega el acceso.

3 -Para crear un usuario que nos permita acceder al sistema debemos indicar y crear el directorio personal con el comando useradd (nombre usuario) d (nombre directorio personal) m (para que se cree el directorio), en la siguiente imagen se muestra como: -Creo una contraseña para el usuario con el comando passwd: -Compruebo el grupo primario con el comando id: -A continuación verifico en el directorio /etc/passwd que se haya creado el usuario y grupo primario correctamente: -Finalmente accedemos al sistema con el usuario creado y esta vez sí podremos iniciar sesión sin problema:

4 3. Crear un grupo alumnos, delegados y dirección. -Para crear los grupos utilizaremos el comando addgroup más el nombre del grupo como se muestra en la siguiente imagen: -En el directorio /etc/group se encuentra la información y miembros de los grupos, para comprobar que se hayan creado correctamente utilizaremos el comando grep que nos servirá de búsqueda de los grupos en dicho directorio. Como se puede apreciar a cada grupo se le ha asignado un identificador distinto que coincide con los que hemos creado: 4. Crear un usuario alumno02 cuyo grupo propietarios sea alumnos. -Si queremos crear un usuario con un grupo de propietarios asociado debemos añadir la opción --ingroup (más el nombre del grupo) al comando adduser. Para el alumno02 lo realizaremos de la siguiente forma: 1-Creamos el usuario y grupo con: sudo adduser --ingroup alumnos alumno02 2-Comprobamos con el comando id alumno02 que se hayan asociado correctamente usuario y grupo.

5 5. Crear un usuario alumno03 que pertenezca al grupo alumnos y delegados. -Para que el usuario alumno03 pertenezca a dos grupos realizaremos los siguientes pasos: 1. Creamos el usuario asociándolo al grupo primario alumnos con el comando adduser y la opción: - -ingroup. 2. Le asignamos el grupo secundario delegados utilizando de nuevo el comando adduser, pero esta vez sin la opción: - -ingroup 3. Con el comando id comprobamos que el usuario alumno03 pertenezca al grupoo alumnos y delegados. -Como el grupo delegados es un grupo secundario si queremos verificar que se haya creado no lo encontraremos en el directorio /etc/passwd, ya que este contiene la información de los grupos primarios, por lo tanto tendremos que verificar en el directorio /etc/group, que es donde se encuentran los grupos secundarios.

6 7. Crear los usuarios de sistema admininstrador01 y administrador02. Verifica si puede ejecutar el comando sudo con estos usuarios administradores y con el usuario04. Verifica el uid con el que se han creado los usuarios administradores. -A diferencia de los usuarios normales, para crear usuarios del sistema debemos añadir la opción - -system (más el nombre del usuario a crear), al comando adduser. Creamos los dos usuarios del sistema: (1.) y (2.). -Una vez creados los usuarios del sistema intentamos acceder a ellos ejecutando el comando sudo su (más el nombre de usuario), pero como podemos apreciar en la siguiente imagen (1.) no tendremos acceso, esto se debe a que los usuarios del sistema son utilizados por las aplicaciones del sistema y no permiten acceder como usuarios normales. -Comprobamos que utilizando sudo su con un usuario normal del sistema (alumno04) (2.), podemos acceder correctamente. -Por último comprobamos los uid de los usuarios administradores con el comando id, si nos fijamos, los uid están por debajo de 1000 (que es el valor por el que empiezan a crearse los usuarios normales), esto se debe a que los usuarios que hemos creados son usuarios del sistema y se crean siempre con valores de 1 a 1000:

7 10. Crea un archivo, (con el usuario director), haciendo que el archivo esté asociado al grupo dirección. (Comando newgrp). Utiliza el comando ls -l para verificar que es correcto. -Tras crear el usuario director como se pedía en el ejercicio 9, crearemos dos archivos (.txt), uno sin asociarlo al grupo dirección y otro con el grupo asociado mediante el comando newgrp. Comparándolos comprobaremos que se haya asociado correctamente al nuevo grupo: 1. Accedo con el usuario director y creo el archivo1.txt con el comando touch, a continuación verifico con el comando ls l. Como se puede observar, este archivo está asociado al grupo profesores. 2. Ahora asocio el grupo dirección con el comando newgrp para que el siguiente archivo que creemos tenga dicho grupo. 3. Por último creo el archivo2.txt y con el comando ls l verifico que se haya creado, ahora podemos ver que el grupo asociado ha cambiado a dirección. 11. Crear un usuario invitado01 estableciendo los siguientes parámetros: la shell por defecto a /bin/bash indicando un directorio personal distinto al de por defecto. incluyendo información complementaria. debe incluir también la opción ingroup para que al crear un usuario se incluya dentro de un grupo primario. -Para crear el usuario invitado01 con dichos parámetros vamos a utilizar el comando adduser con varias opciones a la vez: 1. La primera opción va a ser - -ingroup acompañado de un grupo primario, en nuestro caso utilizaremos el grupo alumnos creado anteriormente. 2. A continuación añadiremos un directorio personal con la opción - -home diferente al que se crearía por defecto (que sería /home/invitado01), en nuestro caso lo llamaremos /home/ejercicio11 3. La siguiente opción será para añadir por defecto la shell a /bin/bash, con - -shell /bin/bash

8 4. La última opción que utilizaremos será - -gecos Invitado01,7, , ,otro, esto hará referencia a la información complementaria que añadiremos al usuario. 5. Para finalizar introduciremos el nombre del usuario que queremos crear: invitado01. -Al crearlo nos pedirá introducir una contraseña: -Ahora comprobaremos con el comando id y con el comando more en el directorio /etc/passwd que se hayan creado y asociado correctamente todos los parámetros que le hemos asignado al usuario: -Como podemos apreciar se han asignado correctamente tanto el grupo alumnos, como el directorio personal /etc/ejercicio11 y el directorio por defecto /bin/bash, además de la información complementaria.

9 - Ahora iniciaremos sesión desde desde la interfaz gráfica y desde la terminal para comprobar que se tiene acceso correctamente: 12. Configura el sistema para que cuando se cree un usuario, aparezca en su Escritorio un documento denominado "Política de uso del aula.pdf" (Orientación: /etc/skel/escritorio/política de uso del aula.pdf) -El primer paso que debemos realizar es crear el directorio Escritorio en /etc/skel y a continuación el documento PDF en su interior, para ello utilizamos los comandos mkdir y touch respectivamente. Comprobamos con el comando ls -l. -A continuación creamos un nuevo usuario, en mi caso lo nombraré invitado04.

10 -Y por último accedemos al sistema con el nuevo usuario y comprobamos que se haya creado correctamente el documento PDF en el Escritorio con el comando ls -l: 15. Modifica las políticas de contraseñas por defecto del sistema en el fichero login.def o adduser.conf del directorio de configuración del sistema. Verifica que se han cogido estos nuevos valores por defectos con el comando chage. -Para modificar las políticas de contraseñas en nuestro caso trabajaremos con el archivo login.def, que lo encontraremos en el directorio /etc y lo abriremos con gedit: -En el interior de este archivo debemos buscar: Pasword aging controls, que es el apartado donde se encuentran las políticas de contraseña:

11 -Vamos a modificar los siguientes parámetros: PASS_MAX_DAYS: que hace referencia al número máximo de días que una contraseña puede ser usada. PASS_MIN_DAYS: es el número mínimo de días permitido entre los cambios de contraseña. PASS_WAR_AGE: que es el número de días de advertencia que se nos dará antes de que la contraseña expire. Por defecto se darán los valores que vemos en la imagen anterior: 99999, 0 y 7 respectivamente. Cambiaremos estos valores por: 90, 3 y 5 respectivamente: -Ahora creamos un nuevo usuario para verificar que se cumplan las políticas de contraseña, lo llamaremos invitado05:

12 -En el directorio /etc/shadow podemos ver las políticas de contraseña de todos los usuarios, para buscar específicamente la del usuario invitado05 utilizo el comando more y el comando grep, como se puede observar al nuevo usuario se le han asignado las políticas modificadas: -Con el comando chage también podemos comprobar y cambiar las políticas de contraseña de un usuario concreto, en nuestro caso solamente comprobaremos: 16. Verifica el uid y el guid del usuario root. -Para saber cuál es el uid y el guid del usuario root utilizaremos el comando id y lo verificaremos en el directorio de información de usuarios /etc/passwd buscándolo con el comando grep: -Como podemos observar, el usuario root utiliza el número 0 para su uid y su guid ya que es el usuario administrador del sistema (superusuario), este tiene privilegios y acceso sobre todo el sistema.

13 Modificación de usuarios 1. Modifica la política de contraseña para el usuario usuario03 (sólo para este usuario). -Primero creamos el usuario usuario03 al que vamos a modificar la política de contraseña con el comando adduser: -Ahora modificamos la política de contraseña únicamente del usuario usuario03 con el comando chage. Entre corchetes aparecen los valores que asignamos en el Ejercicio 11 de Creación de usuarios y grupos al archivo login.defs, ahora le asigno unos valores distintos: -Por último verifico con el comando grep en el directorio de política de contraseñas de todos los usuarios /etc/shadow, que se haya modificado correctamente: -Como se puede observar, los valores se han asignado correctamente al usuario03.

14 2. Modificación de usuarios. Modifica el grupo primario del jefedeestudios, para que sea direccion. Debe seguir perteneciendo al grupo profesores. -Creamos el usuario jefedeestudios con useradd: -Una vez creado el usuario modificamos los grupos con el comando usermod: 1. Con el comando id podemos comprobar que el usuario jefedeestudios pertenece al grupo primario jefedeestudios. 2. Cambio el grupo primario a dirección con el comando usermod y la opción g y compruebo con comando id. 3. Por último asigno el grupo profesores con el comando usermod y las opciones ag para que anexe dicho grupo manteniendo los que ya tenemos asignados. 3. Modifica la contraseña del usuario alumno01 utilizando dos comandos diferentes. Elimina el usuario director del grupo profesores. -Para modificar contraseñas de un usuario ya creado se utiliza el comando passwd seguido del usuario a modificar. -También podemos cambiar contraseñas de varios usuarios a la vez con el comando chpasswd.

15 1-Primero cambiamos la contraseña del usuario alumno01 con el comando passwd: 2-Ahora cambiaremos al mismo tiempo la contraseña del usuario alumno01 y del usuario alumno02 con el comando chpasswd, tras editar cada contraseña pulsaremos ctrl+d: -Para eliminar del usuario director el grupo primario profesores debemos utilizar el comando usermod con la opción g, de esta manera asignaremos un nuevo grupo primario desapareciendo el anterior, en nuestro caso le asignaremos al grupo dirección, comprobamos los cambios con el comando id: 4. Modifica la información del usuario jefedeestudios, indicando su lugar de trabajo y teléfonos. -Para modificar y comprobar la información del usuario jefedeestudios utilizo el comando chfn, entre corchetes aparece la información asignada antes y después de realizar los cambios:

16 6. Configurar el usuario02 para que no se bloquee la cuenta hasta dos días después de expirar su contraseña. -Creamos el usuario02 con el comando adduser: -Para que no se bloquee la cuenta hasta dos días después de expirar su contraseña es necesario modificar el parámetro de Aviso de caducidad de la contraseña con el comando chage: -Por último comprobamos de dos formas que se haya modificado correctamente la política de contraseña, mediante el comando chage nuevamente (se verá entre corchetes), y con el comando grep para buscar la información del usuario en el directorio /etc/shadow: 1. 2.

17 7. Bloquear el usuario alumno03.verifica los cambios producidos en /etc/shadow -Para bloquear el usuario alumno03 utilizaremos el comando passwd más la opción l (de lock, bloqueo). Comprobamos los cambios producidos antes y después de bloquear la cuenta en el directorio de información de contraseñas /etc/shadow con el comando grep: -Como se aprecia en la imagen (líneas amarillas), al bloquear la cuenta aparece un símbolo de exclamación (!) al inicio de la información de la contraseña encriptada, esto demuestra que ha sido bloqueada la cuenta. Al intentar acceder a la cuenta con nuestra contraseña nos informará de que no es válida, esto es debido al bloqueo realizado. 8. Desbloquear el usuario alumno03. -Para desbloquear la cuenta alumno03 utilizaremos de nuevo el comando passwd con la opción u (unlock, desbloqueo) y comprobamos antes y después con grep en /etc/shadow: -Como se puede apreciar, el símbolo de exclamación (!) ha desaparecido, dejando así desbloqueada la cuenta.

18 11. Crea dos usuarios con la misma contraseña y verifica si en el fichero /etc/shadow tienen los mismos valores. -Creo los usuarios usuario04 y usuario05 con la contraseña: hola. -Ahora compruebo con el comando grep las contraseñas de ambos usuarios en el fichero /etc/shadow. Como se muestra en la imagen, las contraseñas están encriptadas y son completamente distintas una de la otra aunque hayamos asignado la misma contraseña para cada usuario al crearlas. Esto es debido a que cada usuario tiene una encriptación única de contraseña por seguridad.

19 Borrado de usuarios 1. Borra el usuario01 y administrador01, (antes de borrarlos, obtén su uid). Indica qué ocurre con sus directorios personales. -Para obtener el uid de los usuarios utilizamos el comando id, (en mi caso utilizaré el usuario02 y el administrador02, ya que eliminé el usuario01 en prácticas anteriores): -A continuación eliminamos los dos usuarios con el comando deluser (más el nombre de usuario): -Al borrar los usuarios con el comando deluser sin ninguna opción asignada no se eliminarán sus directorios personales, solamente se eliminarán los usuarios, esto podemos comprobarlo ejecutando un comando ls l en el directorio /home que es donde se almacenan dichos directorios: -Como se puede observar, aparecen los directorios personales pero ya no están asignados a los usuarios eliminados.

20 2. Borra el usuario02, eliminando su directorio personal. (Para este ejercicio utilizaré el usuario03, ya que el usuario02 lo eliminé en el ejercicio anterior). -Primero comprobamos con el comando ls l en /home el directorio personal del usuario03: -A continuación borramos el usuario03 con el comando deluser acompañado de la opción --remove-home para que se elimine también el directorio personal de /home. -Verificamos nuevamente con el comando ls l que se haya eliminado el directorio personal del usuario03 del directorio /home, como se aprecia ya no está:

21 4. Borra el grupo delegados. Si no se permite, indica qué condiciones no se cumplen para poder borrar el grupo. -Para borrar el grupo delegados utilizaremos el comando delgroup: -Como podemos observar no se nos permite eliminar este grupo, esto es debido a que el usuario alumno01 tiene asociado como grupo primario a delegados. Para poder borrar este grupo habría que eliminar primero el usuario alumno01 o cambiar su grupo primario. -Vamos a cambiar de grupo al usuario alumno01 con el comando usermod e intentar de nuevo eliminar el grupo delegados: -Como vemos, ahora sí se ha podido borrar correctamente el grupo delegados. 5. Borra un usuario y a continuación crea otro usuario. Tienen el mismo uid/guid? -Para este ejercicio utilizaremos el usuario06 recién creado, lo borramos con el comando deluser --remove-home (eliminando así también su directorio personal). -El uid del usuario06 es 1012, y su gid es 1005, ahora crearemos un nuevo usuario llamado usuario07 y veremos que se han establecido los mismos valores uid/gid que teníamos en el usuario eliminado.

22 -Como podemos apreciar está asignado el mismo uid/gid, esto es debido a que cuando se eliminan usuarios recién creados también se borran sus uid/gid, de esta forma no son desperdiciados ya que serán reutilizados por los nuevos usuarios que se creen. Comando su/sudo 1. Determina la diferencia entre el comando su y sudo. -El comando su nos permite cambiar de usuario desde la terminal de comandos, sin cerrar sesión en nuestro usuario actual, además permite acceder a sus directorios personales como si hubiésemos iniciado sesión con dicho usuario. A continuación mostramos un ejemplo cambiando del usuario nacho al usuario usuario07: -Mientras que el comando sudo se utiliza para ejecutar cualquier comando con permisos de administrador del sistema (superusuario), como el usuario root. Un ejemplo sería el siguiente: 2. Estando logado con el usuario usuario03, ejecuta un comando como si fueras el usuario administrador. -Para logarse con el usuario03 utilizamos el comando su y a continuación utilizamos sudo para ejecutar el comando adduser como administrador:

23 -Como podemos observar, tras cambiar de usuario y ejecutar el comando sudo adduser usuario08 se nos pedirá la contraseña del usuario03, al introducirla se nos informará de que el usuario03 no está en el archivo sudoers, esto quiere decir que no está incluido en el grupo donde se encuentran los usuarios administradores del sistema y por lo tanto se le deniega la petición de ejecutar dicho comando. 6. Verifica si un comando ejecutado con sudo queda registrado en el fichero /var/log/sudo.log -Al verificar con el comando ls que el archivo sudo.log estuviese en el fichero /var/log hemos comprobado que no existe: -Tras buscar por internet hemos encontrado que los registros del comando sudo también se almacenan en el archivo auth.log del fichero /var/log. Para comprobar los registros hemos abierto dicho archivo con gedit: -Ahora se nos abrirá una ventana en la que se muestran todos los registros de los comandos ejecutados con sudo desde que se inició sesión en el sistema. Como se puede apreciar en la siguiente imagen, podemos ver los comandos que hemos utilizado junto a sudo para cambiar de grupo primario al usuario pablito, el comando gedit (utilizado para abrir el archivo auth.log), etc. También se nos muestra la fecha y hora de dichos registros:

24 Páginas web consultadas: Para el Ejercicio 3 de Modificación de usuarios: Para el Ejercicio 6 del apartado Comando su/sudo Trabajo realizado por: José Ignacio Mardomingo Chacón Este documento está bajo licencia Creative Commons

# data[].attributes.attachment_link.title
Gestión de usuarios y grupos en Linux - PDF Free Download

# data[].attributes.attachment_link.description
1 Este documento está bajo licencia Creative Commons Trabajo realizado por: José Ignacio Mardomingo Chacón Creación de usuarios y grupos Gestión de usuarios y grupos en Linux 1. Crear un usuario alumno01 con las opciones por defecto. Indica su grupo primario. Acceder al sistema con este usuario.

# data[].attributes.body
Eduardo Lopez Rodríguez

# data[].attributes.body
Jazmin Dominguez

# data[].attributes.body
Permisos Linux