Saltar al contenido

Permisos

Los permisos son descripciones de los privilegios explícitos de los comandos.

[[permission]]
identifier = "my-identifier"
description = "This describes the impact and more."
commands.allow = [
"read_file"
]
[[permission.scope.allow]]
my-scope = "$HOME/*"
[[permission.scope.deny]]
my-scope = "$HOME/secret"

Puede habilitar que los comandos estén accesibles en el frontend de una aplicación Tauri. Puede mapear alcances (scopes) a comandos y define qué comandos están habilitados. Los permisos pueden habilitar o denegar ciertos comandos, definir alcances o combinar ambos.

Para otorgar o denegar un permiso a la ventana o webview de tu aplicación, debes hacer referencia al permiso en una capacidad.

Los permisos pueden agruparse como un conjunto bajo un nuevo identificador. Esto se llama un conjunto de permisos (permission set). Esto te permite combinar permisos relacionados con el alcance con permisos relacionados con comandos. También permite agrupar o empaquetar permisos específicos del sistema operativo en conjuntos más utilizables.

Como desarrollador de plugins, puedes enviar múltiples permisos predefinidos y bien nombrados para todos tus comandos expuestos.

Como desarrollador de aplicaciones, puedes extender los permisos existentes de plugins o definirlos para tus propios comandos. Pueden agruparse o extenderse en un conjunto para reutilizarse o simplificar los archivos de configuración principales más adelante.

El identificador de permisos se utiliza para garantizar que los permisos puedan reutilizarse y tengan nombres únicos.

  • <name>:default Indica que el permiso es el predeterminado para un plugin o aplicación
  • <name>:<command-name> Indica que el permiso es para un comando individual

El prefijo de plugin tauri-plugin- se antepondrá automáticamente al identificador de los plugins en el momento de la compilación y no se requiere especificarlo manualmente.

Los identificadores están limitados a caracteres alfabéticos ASCII en minúsculas [a-z] y la longitud máxima del identificador está limitada actualmente a 116 debido a las siguientes constantes:

const IDENTIFIER_SEPARATOR: u8 = b':';
const PLUGIN_PREFIX: &str = "tauri-plugin-";
// https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field
const MAX_LEN_PREFIX: usize = 64 - PLUGIN_PREFIX.len();
const MAX_LEN_BASE: usize = 64;
const MAX_LEN_IDENTIFIER: usize = MAX_LEN_PREFIX + 1 + MAX_LEN_BASE;

Ejemplo simplificado de la estructura de directorios de un plugin de Tauri de ejemplo:

Ventana de terminal
tauri-plugin
├── README.md
├── src
└── lib.rs
├── build.rs
├── Cargo.toml
├── permissions
└── <identifier>.json/toml
└── default.json/toml

El permiso predeterminado se maneja de forma especial, ya que se agrega automáticamente a la configuración de la aplicación, siempre que se utilice la CLI de Tauri para agregar plugins a una aplicación Tauri.

Para los desarrolladores de aplicaciones, la estructura es similar:

Ventana de terminal
tauri-app
├── index.html
├── package.json
├── src
├── src-tauri
├── Cargo.toml
├── permissions
└── <identifier>.toml
| ├── capabilities
└── <identifier>.json/.toml
├── src
├── tauri.conf.json

Permisos de ejemplo del plugin de Sistema de archivos (File System).

plugins/fs/permissions/autogenerated/base-directories/home.toml
[[permission]]
identifier = "scope-home"
description = """This scope permits access to all files and
list content of top level directories in the `$HOME`folder."""
[[permission.scope.allow]]
path = "$HOME/*"
plugins/fs/permissions/read-files.toml
[[permission]]
identifier = "read-files"
description = """This enables all file read related
commands without any pre-configured accessible paths."""
commands.allow = [
"read_file",
"read",
"open",
"read_text_file",
"read_text_file_lines",
"read_text_file_lines_next"
]
plugins/fs/permissions/autogenerated/commands/mkdir.toml
[[permission]]
identifier = "allow-mkdir"
description = "This enables the mkdir command."
commands.allow = [
"mkdir"
]

Ejemplo de implementación que extiende los permisos del plugin anterior en tu aplicación:

my-app/src-tauri/permissions/home-read-extends.toml
[[set]]
identifier = "allow-home-read-extended"
description = """ This allows non-recursive read access to files and to create directories
in the `$HOME` folder.
"""
permissions = [
"fs:read-files",
"fs:scope-home",
"fs:allow-mkdir"
]

© 2026 Colaboradores de Tauri. CC-BY / MIT