Uso de permisos de plugins
El objetivo de este ejercicio es comprender mejor cómo se pueden habilitar o deshabilitar los permisos de plugins, dónde se describen y cómo usar los permisos por defecto de los plugins.
Al final tendrás la capacidad de encontrar y utilizar los permisos de plugins arbitrarios y entender cómo personalizar los permisos existentes. Tendrás una aplicación Tauri de ejemplo donde se utilizan un plugin y permisos específicos del plugin.
-
Crear la aplicación Tauri
Sección titulada “Crear la aplicación Tauri”Crea tu aplicación Tauri. En nuestro ejemplo facilitaremos
create-tauri-app:sh <(curl https://create.tauri.app/sh)irm https://create.tauri.app/ps | iexsh (curl -sSL https://create.tauri.app/sh | psub)npm create tauri-app@latestyarn create tauri-apppnpm create tauri-appdeno run -A npm:create-tauri-appbun create tauri-appcargo install create-tauri-app --lockedcargo create-tauri-appContinuaremos en esta explicación paso a paso con
pnpm, pero puedes elegir otro gestor de paquetes y reemplazarlo en los comandos en consecuencia.pnpm create tauri-app✔ Project name · plugin-permission-demo✔ Choose which language to use for your frontend · TypeScript / JavaScript - (pnpm, yarn, npm, bun)✔ Choose your package manager · pnpm✔ Choose your UI template · Vanilla✔ Choose your UI flavor · TypeScriptTemplate created! To get started run:cd plugin-permission-demopnpm installpnpm tauri dev -
Añadir el plugin
Sección titulada “Añadir el plugin file-system a tu aplicación”file-systema tu aplicaciónPara buscar plugins existentes puedes utilizar múltiples recursos.
La forma más directa sería verificar si tu plugin ya se encuentra en la sección de Plugins de la documentación y por lo tanto forma parte del conjunto de plugins mantenidos por Tauri. El plugin Filesystem forma parte del espacio de trabajo de plugins de Tauri y puedes añadirlo a tu proyecto siguiendo las instrucciones.
Si el plugin forma parte del esfuerzo de la comunidad, lo más probable es que puedas encontrarlo en crates.io al buscar
tauri-plugin-<nombre de tu plugin>.Si es un plugin existente de nuestro espacio de trabajo, puedes usar la forma automatizada:
pnpm tauri add fsSi lo has encontrado en crates.io debes añadirlo manualmente como una dependencia y modificar el constructor de Tauri para inicializar el plugin:
Ventana de terminal cargo add tauri-plugin-fsModifica
lib.rspara inicializar el plugin:src-tauri/src/lib.rs #[cfg_attr(mobile, tauri::mobile_entry_point)]fn run() {tauri::Builder::default().plugin(tauri_plugin_fs::init()).run(tauri::generate_context!()).expect("error while running tauri application");} -
Entender los permisos por defecto del plugin
Sección titulada “Entender los permisos por defecto del plugin fs”fsCada plugin tiene un conjunto de permisos por
defecto, el cual contiene todos los permisos y alcances (scopes) para usar el plugin desde el primer momento con un conjunto mínimo razonable de funcionalidades.En el caso de los plugins mantenidos oficialmente, puedes encontrar una descripción procesada en la documentación (p. ej. fs default).
En caso de que estés averiguando esto para un plugin de la comunidad, necesitas revisar el código fuente del plugin. Esto debería estar definido en
your-plugin/permissions/default.toml."$schema" = "schemas/schema.json"[default]description = """# Tauri `fs` default permissionsThis configuration file defines the default permissions grantedto the filesystem.### Granted PermissionsThis default permission set enables all read-related commands andallows access to the `$APP` folder and sub directories created in it.The location of the `$APP` folder depends on the operating system,where the application is run.In general the `$APP` folder needs to be manually createdby the application at runtime, before accessing files or foldersin it is possible.### Denied PermissionsThis default permission set prevents access to critical componentsof the Tauri application by default.On Windows the webview data folder access is denied."""permissions = ["read-all", "scope-app-recursive", "deny-default"] -
Encontrar los permisos adecuados
Sección titulada “Encontrar los permisos adecuados”Este paso consiste en encontrar los permisos que necesitas para que tus comandos queden expuestos al frontend con el acceso mínimo a tu sistema.
El plugin
fstiene permisos autogenerados que deshabilitarán o habilitarán comandos individuales y permitirán o deshabilitarán alcances globales.Estos se pueden encontrar en la documentación o en el código fuente del plugin (
fs/permissions/autogenerated).Supongamos que queremos habilitar la escritura en un archivo de texto
test.txtubicado en la carpeta$HOMEdel usuario.Para esto buscaríamos en los permisos autogenerados un permiso para habilitar la escritura en archivos de texto como
allow-write-text-filey luego un alcance que nos permita acceder al archivo$HOME/test.txt.Necesitamos añadir estos a nuestra sección de
capabilitiesen nuestrosrc-tauri/tauri.conf.jsono en un archivo en la carpetasrc-tauri/capabilities/. Por defecto ya hay una capacidad ensrc-tauri/capabilities/default.jsonque podemos modificar.src-tauri/capabilities/default.json {"$schema": "../gen/schemas/desktop-schema.json","identifier": "default","description": "Capability for the main window","windows": ["main"],"permissions": ["path:default","event:default","window:default","app:default","image:default","resources:default","menu:default","tray:default","shell:allow-open","fs:default","fs:allow-write-text-file",]}Dado que en el plugin
fssolo hay alcances autogenerados para acceder a toda la carpeta$HOME, necesitamos configurar nuestro propio alcance. Este alcance solo debe estar habilitado para el comandowrite-text-filey solo debe exponer nuestro archivotest.txt.src-tauri/capabilities/default.json {"$schema": "../gen/schemas/desktop-schema.json","identifier": "default","description": "Capability for the main window","windows": ["main"],"permissions": ["path:default","event:default","window:default","app:default","image:default","resources:default","menu:default","tray:default","shell:allow-open","fs:allow-write-text-file",{"identifier": "fs:allow-write-text-file","allow": [{ "path": "$HOME/test.txt" }]},]} -
Probar los permisos en la práctica
Sección titulada “Probar los permisos en la práctica”Después de añadir el permiso necesario, queremos confirmar que nuestra aplicación puede acceder al archivo y escribir su contenido.
Podemos usar este fragmento en nuestra aplicación para escribir en el archivo:
src/main.ts import { writeTextFile, BaseDirectory } from '@tauri-apps/plugin-fs';let greetInputEl: HTMLInputElement | null;async function write(message: string) {await writeTextFile('test.txt', message, { baseDir: BaseDirectory.Home });}window.addEventListener("DOMContentLoaded", () => {greetInputEl = document.querySelector("#greet-input");document.querySelector("#greet-form")?.addEventListener("submit", (e) => {e.preventDefault();if (!greetInputEl )return;write(greetInputEl.value == "" ? "No input provided": greetInputEl.value);});});Reemplazar el
src/main.tscon este fragmento significa que no necesitamos modificar elindex.htmlpor defecto, al usar la app plain Vanilla+TypeScript. Cualquier texto introducido en el campo de entrada de la aplicación en ejecución se escribirá en el archivo al enviar.Probemos ahora en la práctica:
pnpm run tauri devDespués de escribir en el campo de entrada y hacer clic en “Submit”, podemos verificar mediante nuestro emulador de terminal o abriendo manualmente el archivo en tu carpeta personal.
cat $HOME/test.txtDebería mostrarse tu texto introducido y habrás terminado de aprender sobre el uso de permisos de plugins en aplicaciones Tauri. 🥳
Si encontraste este error:
Ventana de terminal [Error] Unhandled Promise Rejection: fs.write_text_file not allowed. Permissions associated with this command: fs:allow-app-write, fs:allow-app-write-recursive, fs:allow-appcache-write, fs:allow-appcache-write-recursive, fs:allow-appconf...(anonymous function) (main.ts:5)Entonces es muy probable que no hayas seguido adecuadamente las instrucciones anteriores.
© 2026 Colaboradores de Tauri. CC-BY / MIT