web-development-kb-es.site

¿Cómo funcionan los permisos de archivo?

¿Puede explicar brevemente los conceptos principales y las herramientas de línea de comandos utilizados para administrar los permisos de archivos?

36
guillermooo

Cada archivo tiene derechos para tres categorías diferentes:

  • el dueño del archivo,
  • el grupo asociado con el archivo, y
  • todos los demás.

Los derechos significan el derecho a leer el archivo, el derecho a escribir en el archivo o el derecho a ejecutar el archivo en caso de un script o programa.

En la CLI, puedes

  • cambiar el propietario con chown, p. chown guillermooo
  • cambiar el grupo con chgrp, p. chgrp root
  • cambiar los derechos con chmod, p. chmod u+w filename.ext (Agrega permiso de escritura para el propietario del archivo filename.ext)

Si desea obtener más información sobre cada una de estas herramientas, abra un terminal y escriba man [tool], p. man chmod.

23
ParanoiaPuppy

Advertencia: Cambiar los permisos de archivos y directorios es potencialmente dañino y puede hacer que su sistema sea inutilizable. Cuando se ejecuta de forma recursiva como root en la ruta incorrecta, podemos llegar a un punto desde el que tendremos que reinstalar Ubuntu. Por lo tanto, es una buena idea no cambiar los permisos fuera de los directorios HOME, y ejecutar los comandos de forma recursiva como root debe evitarse siempre que sea posible.

Permisos de archivo

Ubuntu ha heredado el concepto de permisos de Unix cuando para archivos o directorios hay tres tareas que podemos permitir o denegar:

  • r (leer) el archivo/directorio puede abrirse para acceso de lectura.
  • w (escribir) el archivo/directorio puede abrirse para acceso de escritura/edición.
  • x (ejecutar) el archivo puede ejecutarse como un programa/directorio puede atravesarse.

( Recorrer un directorio esencialmente significa usarlo como parte de un nombre de ruta. Ver https://unix.stackexchange.com/a/13891 o - https://unix.stackexchange.com/questions/21251 para más explicaciones)

Además, tenemos tres casos sobre a quién otorgamos un permiso:

  • u (usuario) al propietario de un archivo se le otorga cualquiera de los permisos.
  • g (grupo) al grupo al que pertenece el archivo se le otorga un permiso.
  • o (otro) todos los demás tienen permiso.

Ahora para obtener la combinación de estos ordenados, usamos un sistema binario donde cada bit define un permiso. Esto se puede mostrar mejor en la siguiente tabla

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

Ahora si queremos por ejemplo

a) el propietario de un archivo (= usuario) tiene read writo, y execute permiso,
b) el grupo del archivo concedido read y expermisos de ecute, y
c) todos los demás solo deberían tener racceso fácil.

Entonces el permiso de archivo resultante será:

 u   g   o
rwx r-x r--

Para obtener esto en los números octales, por ejemplo. para el comando chmod o cuando tenemos que entender un mensaje de error, necesitamos completar la tabla anterior como se muestra a continuación:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

Cada número de permiso debe agregarse para resumir para un usuario (4 + 2 + 1 = 7), grupo (4 + 0 + 1 = 5) y otros (4 + 0 + 0 = 4). El número resultante es:

 u   g   o
 7   5   4

Ahora tenemos dos opciones para cambiar los bits de permiso con chmod:

chmod u+rwx g+rx o+r filename

o mucho más simple con

chmod 751 filename

Ambos comandos harán lo mismo.

El permiso predeterminado de un archivo recién creado en nuestro hogar será 664 (-rw-rw-r--).

Si queremos que los archivos sean ejecutables como programas, tendremos que cambiar este permiso.

  • Tenga en cuenta que también tendremos que cambiar el permiso del directorio en el que puede estar este ejecutable. Solo si ambos, el archivo y el bit ejecutable del directorio están establecidos se nos permitirá ejecutar este archivo como un programa.

  • Al copiar un archivo en nuestro hogar, perderá sus permisos, que serán reemplazados por nuestros propios permisos predeterminados (a menos que copiemos usando opciones avanzadas, por ejemplo, una opción de archivo).

  • También tenga en cuenta que el archivo puede heredar su permiso de su punto de montaje, resp. Opciones de montaje. Esto es importante cuando se montan unidades formateadas de Windows que no admiten permisos de Unix.

Usuarios y grupos

Pronto nos damos cuenta de que esto era solo la mitad de la historia. También tenemos que ordenar las pertenencias. Para hacer esto, cada archivo o carpeta tiene un propietario definido y una membresía de grupo definida.

Cada vez que creamos un archivo, seremos el propietario de un archivo, y el grupo del archivo también seremos nosotros. Con ls -l podemos ver los permisos, la propiedad y el grupo como se ve en el siguiente resultado de ejemplo:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • Solo se nos permite cambiar los permisos, los grupos o la propiedad de un archivo que es nuestro.

Si no somos el propietario del archivo, obtendremos un error Permission denied. Solo root puede cambiar esto para todos los archivos. Es por eso que tenemos que usar Sudo al editar permisos de archivos que no son nuestros. Hay dos comandos integrados para hacerlo chown para usuarios y chgrp para grupos.

Para cambiar la propiedad de un archivo a takkat podemos emitir este comando:

Sudo chown takkat testfile

Para cambiar el grupo de un archivo a takkat, emitimos

Sudo chgrp takkat testfile

Lea las páginas de manual de los comandos para obtener más detalles y opciones. También existe esta guía más elaborada y agradable recomendada para lecturas adicionales:

También encuentre algunas preguntas relacionadas aquí:

31
Takkat