GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿comprensión de los permisos y tipos de archivos de Unix?

Realmente nunca entendí cómo chmod trabajado hasta hoy. Seguí un tutorial que me explicó mucho.

Por ejemplo, he leído que tienes tres grupos de permisos diferentes:

  • propietario (u )
  • grupo (g )
  • todos (o )

Basado en estos tres grupos, ahora sé que:

  • Si el archivo es propiedad del usuario, los permisos del usuario determinan el acceso.
  • Si el grupo del archivo es el mismo que el grupo del usuario, el permiso del grupo determina el acceso.
  • Si el usuario no es el propietario del archivo y no está en el grupo, se utiliza el otro permiso.

También me enteré de que tienes los siguientes permisos:

  • leer (r )
  • escribir (w )
  • ejecutar (x )

Creé un directorio para probar mis conocimientos recién adquiridos:

mkdir test

Luego hice algunas pruebas:

chmod u+rwx test/
# drwx------
chmod g+rx test/
# drwxr-x---
chmod u-x test/
# drw-r-x---

Después de perder el tiempo durante un tiempo, creo que finalmente le cogí el truco a chmod y la forma en que establece el permiso usando este comando.

Pero...

Todavía tengo algunas preguntas:

  • ¿Qué significa el d en el soporte de inicio?
  • ¿Cuál es el nombre y el uso del espacio contenedor y qué otros valores puede contener?
  • ¿Cómo puedo configurarlo y desactivarlo?
  • ¿Cuál es el valor de esta d? ? (Como solo tienes 7=4+2+1 7=4+2+1 7=4+2+1)
  • ¿Por qué la gente a veces usa 0777? en lugar de 777 establecer sus permisos?

Pero como no debería hacer varias preguntas, intentaré hacerlas en una sola pregunta.

En el sistema basado en UNIX, como todas las distribuciones de Linux, con respecto a los permisos, ¿qué hace la primera parte (d ) y ¿cuál es el uso de esta parte de los permisos?

Respuesta aceptada:

Responderé a sus preguntas en tres partes:tipos de archivos, permisos y casos de uso para las diversas formas de chmod .

Tipos de archivo

El primer carácter en ls -l la salida representa el tipo de archivo; d significa que es un directorio. No se puede configurar o desactivar, depende de cómo se creó el archivo. Puede encontrar la lista completa de tipos de archivos en la documentación de ls; aquellos con los que es probable que te encuentres son

  • - :archivo "regular", creado con cualquier programa que pueda escribir un archivo
  • b :bloque de archivos especiales, normalmente discos o dispositivos de partición, se puede crear con mknod
  • c :archivo especial de caracteres, también se puede crear con mknod (ver /dev para ejemplos)
  • d :directorio, se puede crear con mkdir
  • l :enlace simbólico, se puede crear con ln -s
  • p :tubería con nombre, se puede crear con mkfifo
  • s :socket, se puede crear con nc -U
  • D :puerta, creada por algunos procesos de servidor en Solaris/openindiana.

Permisos

chmod 0777 se utiliza para establecer todos los permisos en un chmod ejecución, en lugar de combinar cambios con u+ etc. Cada uno de los cuatro dígitos es un valor octal que representa un conjunto de permisos:

  • suid , sgid y "pegajoso" (ver más abajo)
  • permisos de usuario
  • permisos de grupo
  • "otros" permisos

El valor octal se calcula como la suma de los permisos:

  • “leer” es 4
  • “escribir” es 2
  • “ejecutar” es 1

Para el primer dígito:

  • suid es 4; binarios con este conjunto de bits se ejecutan como su usuario propietario (comúnmente root )
  • sgid es 2; los archivos binarios con este conjunto de bits se ejecutan como su grupo propietario (esto se usó para juegos, por lo que se podían compartir puntajes altos, pero a menudo es un riesgo de seguridad cuando se combina con vulnerabilidades en los juegos), y los archivos creados en directorios con este conjunto de bits pertenecen al grupo propietario del directorio por defecto (esto es útil para crear carpetas compartidas)
  • “adhesivo” (o “eliminación restringida”) es 1; los archivos en directorios con este conjunto de bits solo pueden ser eliminados por su propietario, el propietario del directorio o root (ver /tmp para ver un ejemplo común de esto).
Relacionado:Linux:¿el procedimiento correcto para reemplazar MDM con LightDM en Linux Mint?

Ver el chmod página de manual para más detalles. Tenga en cuenta que en todo esto estoy ignorando otras funciones de seguridad que pueden alterar los permisos de los usuarios en los archivos (SELinux, archivos ACL...).

Los bits especiales se manejan de manera diferente según el tipo de archivo (archivo normal o directorio) y el sistema subyacente. (Esto se menciona en el chmod manpage.) En el sistema que usé para probar esto (con coreutils 8.23 en un ext4 sistema de archivos, ejecutando Linux kernel 3.16.7-ckt2), el comportamiento es el siguiente. Para un archivo, los bits especiales siempre se borran a menos que se establezcan explícitamente, por lo que chmod 0777 es equivalente a chmod 777 , y ambos comandos borran los bits especiales y otorgan a todos permisos completos en el archivo. Para un directorio, los bits especiales nunca se borran por completo usando la forma numérica de cuatro dígitos, por lo que en efecto chmod 0777 también es equivalente a chmod 777 pero es engañoso ya que algunas de las partes especiales permanecerán como están. (Una versión anterior de esta respuesta se equivocó). Para borrar bits especiales en los directorios, debe usar u-s , g-s y/o o-t explícitamente o especifique un valor numérico negativo, por lo que chmod -7000 borrará todos los bits especiales en un directorio.

En ls -l salida, suid , sgid y "sticky" aparecen en lugar de x entrada:suid es s o S en lugar de la x del usuario , sgid es s o S en lugar de la x del grupo , y "pegajoso" es t o T en lugar del x de otros . Una letra minúscula indica que tanto el bit especial como el bit ejecutable están establecidos; una letra mayúscula indica que solo está configurado el bit especial.

Las diversas formas de chmod

Debido al comportamiento descrito anteriormente, usar los cuatro dígitos completos en chmod puede ser confuso (al menos resulta que yo estaba confundido). Es útil cuando desea establecer bits especiales además de bits de permiso; de lo contrario, los bits se borran si está manipulando un archivo, se conservan si está manipulando un directorio. Entonces chmod 2750 asegura que obtendrá al menos sgid y exactamente u=rwx,g=rx,o=; pero chmod 0750 no borrará necesariamente los bits especiales.

Usar modos numéricos en lugar de comandos de texto ([ugo][=+-][rwxXst] ) es probablemente más un caso de costumbre y el objetivo de la orden. Una vez que esté acostumbrado a usar modos numéricos, a menudo es más fácil especificar el modo completo de esa manera; y es útil poder pensar en permisos usando modos numéricos, ya que muchos otros comandos pueden usarlos (install , mknod …).

Algunas variantes de texto pueden ser útiles:si simplemente quiere asegurarse de que cualquier persona pueda ejecutar un archivo, chmod a+x hará eso, independientemente de cuáles sean los otros permisos. Del mismo modo, +X agrega el permiso de ejecución solo si uno de los permisos de ejecución ya está establecido o si el archivo es un directorio; esto puede ser útil para restaurar permisos globalmente sin tener que usar archivos de casos especiales o directorios. Por lo tanto, chmod -R ug=rX,u+w,o= es equivalente a aplicar chmod -R 750 a todos los directorios y archivos ejecutables y chmod -R 640 a todos los demás archivos.


Linux
  1. Cómo copiar permisos y propiedad de archivos a otro archivo en Linux

  2. ¿Permisos de archivo y ahorro?

  3. Permisos de archivo en Linux con ejemplo

  4. UNIX/Linux:Guía para principiantes sobre permisos de archivos y directorios (umask, chmod, lectura, escritura, ejecución)

  5. Descripción general del proceso UNIX (dentro de un proceso Linux y tipos de proceso)

Comprender los permisos de archivos de Linux

Comando Chmod en Linux (Permisos de archivo)

Permisos y propiedad de archivos de Linux explicados con ejemplos

Comprender los permisos de archivos de Linux

Comando AWK en Linux/Unix

Comprender los permisos básicos de archivos y la propiedad en Linux