GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cuáles son las diferentes formas de establecer permisos de archivos, etc. en Gnu/linux?

En Unix, hace mucho tiempo, aprendí sobre chmod :la forma tradicional de establecer permisos, en Unix (y permitir que los programas obtengan privilegios, usando setuid, setgid).

Recientemente descubrí algunos comandos más nuevos en GNU/Linux:

  • setfacl extiende el tradicional ugo:rwx bits y el t bit de chmod .
  • setcap da más control de grano de aleta que ug:s bits de chmod .
  • chattr Permite algunos otros controles (un poco de mezcla) del archivo.

¿Hay otros?

Respuesta aceptada:

chmod :cambiar bits de modo de archivo

Uso (modo octal):

    chmod <octal-mode> files...

Uso (modo simbólico):

    chmod <references><operator><modes> files..

references es una combinación de las letras ugoa , que especifican el acceso de qué usuario a los files será modificado:

  • u el usuario que lo posee
  • g otros usuarios en el file grupo de
  • o otros usuarios que no están en el grupo del archivo
  • a todos los usuarios

    Si se omite, por defecto es para todos los usuarios, pero solo los permisos permitidos por umask se modifican.

    operator es uno de los caracteres +-= :

    • + agregue los bits de modo de archivo especificados a los bits de modo de archivo existentes de cada file
    • - elimina los bits de modo de archivo especificados a los bits de modo de archivo existentes de cada file
    • = agrega los bits especificados y elimina los bits no especificados, excepto el setuid y setgid bits establecidos para directorios, a menos que se especifique explícitamente.

    mode consiste en una combinación de las letras rwxXst , que especifican qué bit de permiso se va a modificar:

    • r leer
    • w escribir
    • x ejecutar (o buscar directorios)
    • X ejecutar/buscar solo si el archivo es un directorio o ya tiene un bit de ejecución establecido para algún usuario
    • s setuid o setgid (según las references especificadas) )
    • t bandera de eliminación restringida o sticky bit

    Alternativamente, el mode puede consistir en una de las letras ugo , en cuyo caso el modo corresponde a los permisos actualmente otorgados al propietario (u ), miembro del file grupo de (g ) o permisos de usuarios en ninguna de las categorías anteriores (o ).

Los diversos bits de chmod explicado:

  • Control de acceso (ver también setfacl )
    • rwx — permisos de lectura (r), escritura (w) y ejecución/cruce (x).
      • Leer (r) afecta si se puede leer un archivo o si se puede listar un directorio.
      • Escribir (w) afecta si se puede escribir en un archivo o si se puede editar un directorio (archivos agregados, eliminados, renombrados).
      • Ejecutar (x) afecta si se puede ejecutar un archivo, utilícelo para secuencias de comandos (consulte #! ), y otros archivos ejecutables.
      • Cruz (x) afecta si se puede recorrer un directorio.
    • s y t — sticky bit (t) y setgid (s) en directorios
      • El sticky bit solo afecta a los directorios. Evitará que cualquier persona, excepto el propietario del archivo y la raíz, elimine archivos en el directorio.
      • el bit setgid en los directorios hará que los nuevos archivos y directorios tengan el grupo establecido en el mismo grupo, y los nuevos directorios tendrán el bit setgid establecido (consulte también los valores predeterminados en setfacl).
    • s — setuid, setgid, en archivos ejecutables.
      • Esto puede afectar negativamente a la seguridad si no sabe lo que está haciendo.
      • Cuando se ejecuta un ejecutable, si se establece uno de estos bits, el usuario/grupo efectivo del ejecutable se convertirá en el del archivo. Por lo tanto, el programa se ejecuta como ese usuario. ver setcap para una forma más moderna de hacer esto.

chown chgrp :

chattr :cambiar los atributos del archivo

Uso:

    chattr <operator><attribute> files...

operator es uno de los caracteres +-= :
* + agrega los atributos seleccionados a los attributes existentes de los files * - elimina los attributes seleccionados * = sobrescribe el conjunto actual de atributos que tienen los archivos con los attributes especificados .

attribute es una combinación de las letras acdeijstuADST , que corresponden a los atributos:

  • a agregar solo
  • c comprimido
  • d sin volcado
  • e formato de extensión
  • i inmutable
  • j diario de datos
  • s borrado seguro
  • t sin fusión de cola
  • u imborrable
  • A sin atime actualizaciones
  • D actualizaciones de directorio síncronas
  • S actualizaciones sincronizadas
  • T parte superior de la jerarquía de directorios
Relacionado:Ssh:¿por qué falla el intento de reenvío X11 con "conectar /tmp/.X11-unix/X0:no existe tal archivo o directorio"?

setfattr :cambiar los atributos del archivo extendido

Uso (establecer atributo):

    setfattr -n <name> -v <value> files...

Uso (eliminar):

    setfattr -x <name> files...

name es el nombre del atributo extendido para establecer o eliminar

value es el nuevo valor del atributo extendido

setfacl :cambiar las listas de control de acceso a archivos

Uso:

    setfacl <option> [default:][<target>:][<param>][:<perms>] files...

option debe incluir uno de los siguientes:

  • --set establecer la ACL de un archivo o directorio, reemplazando la ACL anterior
  • -m |--modify modificar la ACL de un archivo o directorio
  • -x |--remove eliminar entradas de ACL de un archivo o directorio

    target es una de las letras ugmo (o la forma más larga que se muestra a continuación):

  • u , users permiso de un usuario identificado por param , por defecto es el propietario del archivo uid si se omite

  • g , group permiso de un grupo con nombre identificado por param , predeterminado para el grupo propietario uid si se omite
  • m , mask máscara de derechos efectivos
  • o , other permisos de otros

    perms es una combinación de las letras rwxX , que corresponden a los permisos:

  • r leer

  • w escribir
  • x ejecutar
  • X ejecutar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario

    Alternativamente, perms puede ser un dígito octal (7 ) indicando el conjunto de permisos.

setcap :cambiar las capacidades del archivo

Uso:

    setcap <capability-clause> file 

Una capability-clause consta de una lista separada por comas de nombres de capacidades seguida de una lista de pares de banderas de operador.

Los operadores disponibles son = , + y - . Las banderas disponibles son e , i y p que corresponden a la Efectiva , heredable y Permitido conjuntos de capacidades.

El = El operador aumentará los conjuntos de capacidades especificados y restablecerá los demás. Si no se dan banderas junto con = operador todos los conjuntos de capacidades se restablecerán. El + y - los operadores aumentarán o disminuirán uno o más conjuntos de capacidades especificados respectivamente.

chcon :cambiar el contexto de seguridad de SELinux del archivo

Uso:

    chcon [-u <user>] [-r <role>] [-t <type>] files...

usuario es el usuario de SELinux, como user_u , system_u o root .

rol es el rol de SELinux (siempre object_r para archivos)

tipo es el tipo de sujeto de SELinux

chsmack :cambiar los atributos extendidos de SMACK

Uso:

    chsmack -a <value> file

value es la etiqueta SMACK que se establecerá para el SMACK64 atributo de archivo extendido

setrichacl:cambiar la lista de control de acceso enriquecido.

richacls es una función que agregará ACL más avanzadas.

Actualmente es un trabajo en progreso, por lo que no puedo contarles mucho sobre ellos. No los he usado.


Linux
  1. Una introducción al archivo Linux /etc/fstab

  2. Linux:¿qué sistemas de archivos en Linux almacenan el tiempo de creación?

  3. ¿Cuáles son las principales diferencias entre Bsd y Gnu/linux Userland?

  4. Linux:¿cómo se inspecciona la información de la estructura del directorio de un archivo Unix/linux?

  5. Linux:¿los diferentes kernels de Linux/unix son intercambiables?

Las 6 mejores formas de ver archivos en Linux

¿Qué es Fstab en Linux? Una introducción al archivo Linux /etc/fstab

¿Qué son los inodos en Linux?

¿Qué es el archivo /etc/passwd en Linux?

Comprender el archivo /etc/fstab en Linux

¿Cuáles son las diferentes formas de establecer permisos de archivo, etc. en gnu/linux?