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

19

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 he descubierto algunos comandos más nuevos, en GNU / Linux:

  • setfaclextiende los ugo:rwxbits tradicionales y el tbit de chmod.
  • setcapda más control de grano de aleta que ug:spedazos de chmod.
  • chattr Permite algunos otros controles (un poco de una mezcla) del archivo.

¿Hay otros?

ctrl-alt-delor
fuente
ver también unix.stackexchange.com/q/183994/4778 para más detalles sobrechmod
ctrl-alt-delor
consulte también unix.stackexchange.com/q/246606/4778 para obtener las ACL extendidas (richACL).
ctrl-alt-delor

Respuestas:

28

chmod: cambiar bits de modo de archivo

Uso (modo octal):

    chmod <octal-mode> files...

Uso (modo simbólico):

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

referenceses una combinación de las letras ugoa, que especifican qué acceso del usuario filesse modificará:

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

    Si se omite, el valor predeterminado es todos los usuarios, pero solo umaskse modifican los permisos permitidos por .

    operatores uno de los personajes +-=:

    • + agregar 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 los bits setuidy setgidestablecidos para directorios, a menos que se especifique explícitamente.

    modeconsiste 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
    • ssetuid o setgid (según lo especificado references)
    • t bandera de eliminación restringida o bit fijo

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

Los diversos bits de chmodexplicados:

  • Control de acceso (ver también setfacl)
    • rwx - leer (r), escribir (w) y ejecutar / cruzar (x) permisos.
      • Leer (r) afecta si se puede leer un archivo o si se puede enumerar un directorio.
      • Write (w) afecta si se puede escribir en un archivo o si se puede editar un directorio (archivos agregados, eliminados, renombrados).
      • Execute (x) afecta si se puede ejecutar un archivo, usarlo para scripts (ver #!) y otros archivos ejecutables.
      • Cross (x) afecta si se puede atravesar un directorio.
    • sy t- bit (t) fijo y setgid (s) en directorios
      • El bit adhesivo solo afecta a los directorios. Evitará que cualquiera, excepto el propietario del archivo y la raíz, eliminen archivos en el directorio
      • el bit setgid en los directorios hará que los nuevos archivos y directorios tengan el grupo configurado en el mismo grupo, y que los nuevos directorios tengan allí el bit setgid establecido (vea también los valores predeterminados en setfacl).
    • s - setuid, setgid, en archivos ejecutables.
      • Esto puede afectar la seguridad de mala manera, 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. vea setcapuna forma más moderna de hacer esto.

chown chgrp:


chattr: cambiar los atributos del archivo

Uso:

    chattr <operator><attribute> files...

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

attributees 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 eliminación segura
  • t sin fusión de cola
  • u indeleble
  • Asin atimeactualizaciones
  • D actualizaciones de directorio síncrono
  • S actualizaciones sincrónicas
  • T parte superior de la jerarquía de directorios

setfattr: cambiar los atributos del archivo extendido

Uso (conjunto de atributos):

    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 un directorio, reemplazando la ACL anterior
  • -mEl | --modifymodificar la ACL de un archivo o directorio
  • -xEl | --remove eliminar entradas de ACL de un archivo o directorio

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

  • u, userspermiso de un usuario identificado identificado por param, predeterminado para el propietario del archivo uidsi se omite

  • g, grouppermiso de un grupo con nombre identificado por param, predeterminado al grupo propietario uidsi se omite
  • m, maskmáscara de derechos efectivos
  • o, otherpermisos de otros

    permses 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, permspuede ser un dígito octal ( 0- 7) que indica el conjunto de permisos.


setcap: cambiar las capacidades del archivo

Uso:

    setcap <capability-clause> file 

A capability-clauseconsiste en una lista de nombres de capacidades separados por comas seguidos de una lista de pares de operador-bandera.

Los operadores disponibles son =, +y -. Los indicadores disponibles son e, iy pque corresponden a los conjuntos de capacidades Efectivo , Heredable y Permitido .

El =operador elevará los conjuntos de capacidades especificados y reiniciará los demás. Si no se dan banderas en conjunto con el =operador, todos los conjuntos de capacidades se restablecerán. El +y -los operadores puedan aumentar o disminuir el uno o más conjuntos de capacidades especificadas 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_uo root.

role es el rol de SELinux (siempre object_rpara archivos)

tipo es el tipo de sujeto SELinux


chsmack: cambiar los atributos extendidos de SMACK

Uso:

    chsmack -a <value> file

valuees la etiqueta SMACK que se establecerá para el SMACK64atributo de archivo extendido


setrichacl : cambia la lista de control de acceso enriquecido.

Los richacl son una característica que agregará ACL más avanzadas.

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

Consulte también esta pregunta ¿Existen ACL de sistema de archivos más avanzadas además de las tradicionales 'rwx' y POSIX ACL? y página man

Thomas Nyman
fuente
55
+1 Si agrega ejemplos del uso de cada cmd, esta respuesta sería extremadamente útil, ¡como respuesta canónica podemos hacer referencia en el futuro!
slm
1
@slm Gracias por la sugerencia. Agregué una breve explicación de uso para cada comando.
Thomas Nyman
Una advertencia a cualquiera que desee llevar capacidades más allá de lo que se muestra aquí. He usado la capacidad como se describe aquí. Sin embargo, tratar de heredarlos (útilmente) sobre fork y exec parece imposible. Creo que hay un error, consulte unix.stackexchange.com/questions/196483/…
ctrl-alt-delor
El error que mencioné en el comentario anterior, fue un error de diseño y se corrigió en el kernel 4.3 con la adición de capacidades ambientales, consulte man7.org/linux/man-pages/man7/capabilities.7.html
ctrl-alt-delor
1
¡Me encantaría ver ejemplos de todo esto, esto se convertiría en una respuesta canónica!
statquant
1

desde un alto nivel:

  • permisos básicos del sistema de archivos admitidos por todos los sistemas Linux y todos los sistemas de archivos que -rwxrwxrwxmaneja chmod, junto con los identificadores de propietarios y grupos vinculados a cada archivo o carpeta en el sistema de archivos manejado por chowny chgrp; básicamente todos conocen esta pieza.
  • Atributos de archivo extendidos abreviados o conocidos por xattr . Son características del sistema de archivos que permiten a los usuarios asociar archivos de computadora con metadatos no interpretados por el sistema de archivos, mientras que los atributos regulares tienen un propósito estrictamente definido por el sistema de archivos; los atributos son nombre: pares de valores asociados permanentemente con archivos y directorios, similares a las cadenas de entorno asociadas con un proceso. Hay comandos específicos de Linux relacionados con simplemente establecer estos metadatos en varios archivos / carpetas.
  • SELINUX conocido como Linux seguro . Puede buscar en la web el historial. También sepa que hay alternativas a SELINUX como AppArmor, y probablemente haya otras. En este punto, estos son módulos de kernel que proporcionan funcionalidad y mecanismos para hacer MAC (control de acceso obligatorio) haciendo uso de xattr; selinux almacena etiquetas de seguridad de archivos en xattrs . Y hay comandos específicos relacionados con selinux.

Otros puntos clave:

  • La era y la versión de gnu / linux son importantes para xattr y selinux para lo que está disponible y lo que es funcional.
  • se informa que no todos los sistemas de archivos admiten xattr; Mejor dejarlo a la investigación individual basada en la distribución y la versión de Linux que se está utilizando (rhel / suse / debian, irix, solaris, aix, unix de la década de 1960)
  • son realmente los permisos básicos inherentes de archivos / carpetas con uid's / gid's plus xattr's lo que hace que todo sea posible; SELinux usa xattr's para almacenar etiquetas de seguridad de archivos / carpetas ... con selinux, todo el trabajo de bajo nivel está hecho / definido en xattr's para que usted lo use. Entonces, si su antiguo sistema de archivos no es compatible con xattr, no utilizará selinux.
  • puede habilitar o deshabilitar selinux (o apparmor o cualquier otro módulo del núcleo)
  • dependiendo de su versión de linux, puede habilitar o deshabilitar xattr para un sistema de archivos montado dado; Recuerdo en SLES 11 la opción de montaje fstab de user_xattry podría elegir no tener xattr disponible en el sistema de archivos raíz en el momento de la instalación; Creo que ahora con RHEL / CentOS 7 que xattr está allí por defecto y no puede no tenerlo.
  • al hacer un lssi ve -rwxrwxrwx+que +indica que un atributo de archivo extendido está presente en ese objeto .
  • Lista de control de acceso (ACL): es una lista de permisos adjuntos a un objeto. Una ACL especifica qué usuarios o procesos del sistema tienen acceso a los objetos, así como qué operaciones están permitidas en determinados objetos.
  • de centos wiki selinux: selinux es un mecanismo de seguridad MAC implementado en el núcleo; sin SELinux habilitado, solo los métodos tradicionales de control de acceso discrecional (DAC), como los permisos de archivos o las listas de control de acceso (ACL) se utilizan para controlar el acceso a los archivos de los usuarios; Tanto los usuarios como los programas pueden otorgar permisos de archivos inseguros a otros o, por el contrario, obtener acceso a partes del sistema que de otro modo no serían necesarias para el funcionamiento normal; Esencialmente, según el modelo DAC tradicional, hay dos niveles de privilegios, raíz y usuario, y no hay una manera fácil de aplicar un modelo de privilegios mínimos. Muchos procesos iniciados por root luego dejan caer sus derechos para ejecutarse como un usuario restringido
  • Vale la pena leerlo para poner en perspectiva el uso de xattr y ACL, ya que linux [kernel] trata todo como un archivo (dispositivos de bloqueo o puertos de red), puede etiquetar casi cualquier cosa con un xattr y aplicar algún tipo de control de acceso a través de selinux, es no solo archivos / carpetas. https://wiki.centos.org/HowTos/SELinux
  • xattr puede causar problemas al mover datos entre sistemas y sistemas de archivos, y NFS, donde los sistemas [más nuevos] tienen un soporte más completo de xattr frente a sistemas más antiguos que podrían no reconocer todos estos atributos extendidos [si es que lo hacen]. Tenga en cuenta el uso tarde cosas con xattr, si permanece en ese sistema no hay problema, pero si va a otra parte puede ser problemático si los xattr son importantes (es decir, samba y copia entre win10 ntfs y linux ext3 / 4, btrfs, xfs; o volver y adelante entre dispositivos de almacenamiento conectados a la red)
  • si no hay un selinux u otro mecanismo que imponga ACL por lo que se define en xattrs, entonces xattrs teóricamente no puede significar nada y caerse o despojarse porque en ese momento es solo equipaje adicional.
  • tenga cuidado al deshabilitar selinux ahora en rhel / centos 7 porque si se pierden las etiquetas del sistema de archivos a través de xattr, causará problemas al cambiar selinux a forzado o permisivo ; nuevamente depende de su versión de linux y de cómo está utilizando xattr a través de selinux.

El recurso compartido básico de Samba no funciona en RHEL / CentOS 7 ... porque selinux está configurado de forma predeterminada para hacer cumplir; selinux negó todo hasta que lo permitiste, así que deshabilita selinux (malo) o configúralo en permisivo. Si deja que selinux sea obligatorio, debe etiquetar la carpeta que desea compartir con un atributo extendido, para que selinux reconozca y permita el recurso compartido. Entonces, si deja que selinux se aplique con todos los comandos de selinux (que luego establecerán los xattrs necesarios ):

# from centos 7.6 /etc/samba/smb.conf.example

# Turn the samba_domain_controller Boolean on to allow a Samba PDC to use the useradd and groupadd family of binaries.
# Run the following command as the root user to turn this Boolean on:

# this is an selinux command, not 
setsebool -P samba_domain_controller on

# If you create a new directory, such as a new top-level directory, label it with      samba_share_t
# so that SELinux allows Samba to read and write to it.
# Do not label system directories, such as /etc/ and /home/ with samba_share_t, as such directories should already have an SELinux label.


# the xattr having the name "samba_share_t" is labelled onto "/mydatashare"
# this xattr of syntax "samba_share_t" is recognized by an existing rule in selinux
# if the folder does not have the xattr "samba_share_t" then the  rule in selinux (when enforced) will prevent access via samba to the folder.

chcon -t samba_share_t /mydatashare

usted usa además selinux, en el sistema linux con este recurso compartido de samba, para imponer restricciones en los archivos / carpetas bajo este recurso compartido de samba (usando cualquier atributo extendido). Debido a que estos archivos / carpetas se comparten, un usuario copia legítimamente algunos en su PC win10 y luego los copia de nuevo, perdiendo el atributo extendido. Ahora, después de esa copia de ida y vuelta, en ese sistema Linux, selinux restringirá el acceso a dichos archivos porque el xattr necesario ya no está presente, y los usuarios / administradores golpean sus cabezas preguntándose por qué las cosas simplemente funcionaron ahora no ... configuran selinux para permitir y reconocer el problema de la pérdida de xattrs que aparece en los registros de auditoría, pero no indicará directamente que fue el resultado de la copia de ida y vuelta que perdió el xattr. También considere la copia de seguridad y restauración de datos, y el trabajo potencial necesario para recordarxattrs además de uid / gid si desea aplicar la seguridad basada en los xattrs correctos .

ron
fuente