Información
Actualidad
Aquí encontraras noticias de actualidad sobre Gnu Linux y Open Source.

Además de información sobre la comunidad LiGNUx.
Distribuciones y entornos
Información ordenada sobre los diferenes sistema operativos Gnu Linux y las diferentes opciones de entornos gráficos.
Tutoriales y guías
Todos los pasos e informaciones que puedes desear para tu día a día.
Tutoriales
Tutoriales
Programación
Programación
About Us
Get to know the people behind the code and the mission behind the work
how we handle data
Privacy
Security
Legal

Uso básico de la terminal – Parte II

12 diciembre, 2013

En la entrada anterior (si no la has leído ya, recomiendo leerla para entender mejor esta) vimos como mostrar un listado de los archivos y carpetas dentro de un directorio, pero faltaron aclarar cierta información que se nos muestra al ingresar ls -lh como el grupo de usuario, el dueño del archivo y los permisos del usuario.

Antes de continuar hay que dejar algo claro: En Linux, cada archivo y carpeta posee un usuario que es propietario de este y cada usuario pertenece a un grupo, a su vez, cada carpeta y archivo le pertenece a un grupo. Por ejemplo, estoy en Manjaro Linux, mi usuario “cesarer” pertenece al grupo “users”, pero a la vez pertenece al grupo “vboxusers”, ya que he instalado VirtualBox y es necesario que mi usuario pertenezca a ese grupo. A que grupos pertenece tu usuario puede variar dependiendo de la distribución, aplicaciones, y muchos otros factores.

Gestionar Permisos

Creemos una carpeta de cualquier nombre y dentro un documento cualquiera (o copiemos uno ya existente) a /home/usuario/carpeta/ (donde “usuario” es el nombre de tu usuario y carpeta es cualquier carpeta que crees, el nombre no importa). Luego abramos una terminal y nos movemos a esa carpeta usando el comando cd Hagamos un ls -lh en ese lugar y veremos algo así:

[root@manjaro cesarer]# cd carpeta/
[root@manjaro carpeta]# ls -lh
total 3.0M
-rw------- 1 cesarer cesarer 3.0M 18.10.2013 23:34 django-book-es.pdf

Vemos como nos muestra solamente un archivo, luego creemos otra carpeta con mkdir y volvemos a correr un ls -lh:

[root@manjaro carpeta]# mkdir otraCarpeta
[root@manjaro carpeta]# ls -lh
total 3.0M
drwxr-xr-x 2 root root 4.0K 09.12.2013 14:05 otraCarpeta/
-rw------- 1 cesarer cesarer 3.0M 18.10.2013 23:34 django-book-es.pdf
[root@manjaro carpeta]#

Ahora nos muestra 2 elementos un archivo y una carpeta, pero aparte del nombre ¿Cómo sabemos que es una carpeta? Observemos que al inicio de la primera línea aparece una “d” y en la siguiente línea solo aparece un guión. Esa “d” quiere decir que es un directorio. ¿Y que significan todos esos rwxr- y todo lo demás presentado?

Va en este orden:

1. Permisos.

2. Número de enlaces duros.

3. Dueño del archivos.

4. Grupo del archivos.

5. Tamaño.

6. Fecha y Hora de modificación.

7. Nombre del archivo.

Conocer los Permisos

La información se muestra en este orden:

[Tipo de Archivo][Permisos de Usuario][Permisos de Grupo][Permisos de Otros]

Lo del tipo de archivo, no voy a profundizar mucho en ello, por ahora nos basta saber si es directorio, archivo común o algo mas, los caracteres que pueden aparecer en esta parte son:

  • Fichero normal: -
  • Carpeta o Directorio: d
  • Enlace simbólico: l
  • Dispositivo de Caracteres: c
  • Dispositivo de Bloques: b
  • Pipe o Tubería: p

Veamos entonces los permisos de cada entidad, por ejemplo, Permisos de Usuario: [rwx], La “r” quiere decir que puede leer (Read), la “w” quiere decir que puede editar o escribir (Write) y la “x” que es ejecutable (eXecutable). Los mismo se aplica para permisos de grupo y permisos de “otros”, solo hay que recordar que se dividen en grupos de 3 (lectura, escritura, ejecución).

Esto se entenderá mejor con unos ejemplos:

Ejemplo 1:

-rw-rw-r-- Quiere decir que el archivo no es un directorio, tanto el dueño como los miembros del grupo pueden leer y escribir y cualquier otro que no sea ni el dueño ni pertenezca al grupo solamente puede leer, nadie puede ejecutar.

Ejemplo 2:

drw-r----- Quiere decir que es un directorio, solamente el dueño puede leer y escribir, los miembros del grupo solamente pueden leer y cualquier otro no tiene ningún permiso.

Ejemplo 3:

-rwxr-xr-- Es un archivo ejecutable únicamente por el dueño y por los miembros del grupo al que pertenece, cualquiera puede leer, solamente el dueño puede escribir o modificar.

Ejemplo 4:

-rwxrwxrwx Todo el mundo tiene todos los permisos de lectura, escritura y ejecución sobre este archivo.

Ejemplo 5:

-rwx------ Solamente el dueño puede leer, escribir y ejecutar, nadie mas puede tocar este archivo.

Ejemplo 6:

---------- Nadie puede hacer nada (salvo el usuario root, para el no hay restricciones), no se puede ni leer, ni modificar ni ejecutar, es el archivo prohibido, sagrado y legendario(?).

¡ATENCION!: Antes de continuar, si vas a practicar los comandos que voy a presentar, te recomiendo e insisto que lo hagas con archivos de prueba y no con algún archivo importante, por eso creamos una carpeta al inicio de esta entrada, recomiendo crear unos cuantos archivos más o bien copiar algunos que tengas por ahí dentro de esa carpeta para que puedas practicar con ellos (de preferencia, archivos pequeños). Recuerda que la única persona responsable de tu información y de lo que pase con tu equipo eres tu, así que hasta que no domines lo siguiente, no operes sobre archivos importantes, dicho esto, sigamos.

 

Modificar Permisos

Usando chmod (modo octal)

Para modificar los permisos de un archivo utilizando la representación en octal con chmod, se hace con esta estructura:

chmod [propietario][grupo][otros] archivo

Donde cada entidad (propietario, grupo u otros) modifica los permisos de manera similar a lo que acabamos de ver. Y estos permisos se asignan con un número, así:

  • 1: Ejecución
  • 2: Escritura
  • 4: Lectura

Si queremos entonces Lectura + Escritura, basta con sumar sus números (2 + 4 = 6) Entonces 6, resultaría ser equivalente a “lectura + escritura”. Otro ejemplo, si queremos solo lectura y ejecución, entonces sumamos el 4 de “lectura” con el 1 de “ejecución” y resultaría en 5, entonces lectura + ejecución = 5. Siguiendo esta misma lógica podemos concluir:

  • 0: Sin permisos
  • 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

Ejemplo 1:

Si queremos que un archivo tenga los siguientes permisos: -rwxrw---- (recordemos que el primer guión es el tipo de archivo) entonces debemos ejecutar:

# chmod 760 archivo

Ejemplo 2:

Si ahora queremos que un archivo tenga estos permisos: -rwxrwxrwx entonces debemos ejecutar:

# chmod 777 archivo

Ejemplo 3:

Si queremos estos permisos: -rw-r--r-x debemos escribir:

# chmod 645 archivo

Ejemplo 4:

Luego, si queremos que un archivo tenga estos permisos: -r-xr-xr-x entonces escribimos:

# chmod 555 archivo

Como pueden ver, es muy fácil, solo deben de recordar el orden: (propietario, grupo, otros), recordar que: 1 es Ejecución, 2 es Escritura y 4 es Lectura, sumar los atributos, colocarlo en el orden antes mencionado después de chmod y listo.

Usando chmod (modo caracteres)

En esta ocasión, se utilizan 3 operadores:

  • Añadir: +
  • Suprimir: -
  • Asignar: =

Ademas se utilizan los caracteres de ejecución (x), lectura (r) y escritura (w).

Ejemplo 1:

# chmod +r archivo

En este caso acabamos de asignar el permiso de lectura para todos los usuarios, es decir, si los permisos se encontraban así: -rwx-wx--- ahora estarán así: -rwxrwxr--

Ejemplo 2:

# chmod -r archivo

Ahora acabamos de suprimir el permiso de lectura a todos los usuario, es decir, si antes los permisos eran estos: -rwxrwxrwx ahora son estos: --wx-wx---

Ejemplo 3:

#chmod =r archivo

Con eso último acabamos de asignar únicamente el permiso de escritura a todos los usuarios, si antes los permisos eran estos: -rwxrwxrwx ahora serán estos: -r--r--r--

Ejemplo 4:

# chmod -w archivo

Ahora acabamos de suprimir el permiso de escritura unicamente al propietario, es decir, si antes los permisos eran estos: -rwxrwxr-- ahora son estos: -r-xrwxrw-

Ejemplo 5:

# chmod =w archivo

En este caso se acaba de asignar únicamente el permiso de escritura (suprimiendo otros permisos) al propietario, antes: -rwxrwxr-- después: --w-rwxr--

Si queremos asignar o suprimir permisos solamente al usuario propietario utilizamos chmod u+r archivo, chmod u-r archivo, chmod u+x archivo. Lo mismo para el grupo: chmod g+r archivo, chmod g-r archivo, O bien para otros: chmod o+r archivo, chmod o-r archivo.

También se pueden agregar o suprimir mas de un permiso al mismo tiempo, te animo a que pruebes algo como: chmod +rx archivo, o chmod -rx archivo.

Las combinaciones posibles son tantas que lo dejaré aquí, espero haber explicado bien la lógica del uso de chmod con caracteres (y sino, siéntanse libres de preguntar, sugerir o corregir), yo en lo personal aprendí y me acostumbre desde un principio al modo octal, prueba ambas y usa con la que mas te guste, pero nunca dejes a un lado la otra, nunca se sabe cuando puede llegar a ser útil.

Modificar Usuario del archivos

Esto es mucho más fácil que lo anterior, si tenemos 2 usuarios (usuario1 y usuario2) y tenemos un archivo que le pertenece a usuario1, y queremos que le pertenezca a usuario2 entonces hacemos lo siguiente:

# chown usuario2 archivo

O si queremos cambiar el usuario de mas de un archivo:

#chown usuario2 archivo1 archivo 2 archivo3

Esto funciona bien con archivos individuales, pero ¿Que pasa si queremos cambiar el usuario a una carpeta y a lo que esta carpeta contenga? Entonces escribimos lo siguiente:

# chown usuario2 -R carpeta

o bien:

# chown usuario2 --recursive carpeta

Modificar Grupo del archivo

Esto es muy parecido a chown, el comando para cambiar el grupo es chgrp y funciona muy similar:

Cambiar el grupo de un solo archivo:

# chgrp grupo archivo

Cambiar el grupo de mas de un archivo:

# chgrp grupo archivo1 archivo2 archivo3

Cambiar el grupo de una carpeta y su contenido:

# chgrp grupo --recursive carpeta

o bién:

# chgrp grupo --R carpeta

Extra

 Seguro habrás hecho muchas pruebas y lo seguirás haciendo, ¿Se ve un poco de desorden en la terminal, no? Si quieres limpiar la terminal:

$ clear

 ¿Como colocar un espacio en los nombres de los archivos o directorios en la terminal? Se hace con el carácter barra invertida + espacio: “\ ”, por ejemplo, queremos entrar a un directorio llamado “fotos vacaciones” con el comando cd:

$ cd fotos\ vacaciones/

También pueden auto-completar presionando la tecla Tab.

Si quieres usar chmod en todos los elementos dentro de una carpeta, puedes usar -R para aplicar los permisos de forma recursiva tal y como lo harías con chown y chgrp.

Por ejemplo:

$ chmod 777 -R fotos\ vacaciones/

Si lo deseas, puedes consultar documentación extra a la que te estoy proporcionando con el comando man prueba a escribir alguno de estos:

$ man chown
$ man chmod
$ man chgrp

Y eso es todo por ahora, recordaré lo mismo de la entrada anterior:  Si quieren más información de estos comandos, busquen en Google, ejecuten el comando "man" o consulten en alguna wiki, lo que presento aquí es lo más básico y fundamental y lo que uso la mayoría de las veces, es decir, esto es solamente el primer empujón para que puedas valerte por ti mismo en la terminal 😉 Por cierto, espera la siguiente parte. Saludos.

Escrito por César Iglesias

Hola, mi nombre es César, estudiante de Ingeniería en Computación, soy alguien muy curioso que le gusta aprender cosas nuevas en especial si es del mundo GNU/Linux, espero poder compartir lo poco que se con los demas.

Suscribirse
Notificarme las
guest
6 Comentarios
Los más recientes
Los más antiguos Más votados
Feedbacks en línea
Ver todos los comentarios
LiGNUx trabaja sobre una licencia de Creative Commons Reconocimiento 4.0 Internacional.
cloudflagpaperclipprinterfile-emptyfilm-playcamera-videopicturelaptop-phonebriefcasecrossmenu
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram