콘텐츠로 이동
Tauri

접근 권한 permissions

“접근 권한”(Permissions)은 명시된 명령 특권의 내용 설명입니다.

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

이를 통해 Tauri 애플리케이션의 프론트엔드에서 명령에 액세스할 수 있습니다. 또한 “적용 범위”(스코프)를 명령에 할당하여 어떤 명령이 활성화되는지 지정할 수 있습니다. “접근 권한”에서는 특정 명령을 활성화 또는 비활성화하거나, “적용 범위”를 정의하거나, 또는 그 둘을 조합할 수 있습니다.

“접근 권한”은 새로운 “식별자” 아래에 한 세트로 그룹화할 수 있습니다. 이는 “접근 권한 세트”라고 불리며, 이를 통해 “적용 범위” 관련 접근 권한을 “명령” 관련 접근 권한과 결합할 수 있습니다. 또한 “작업”별 접근 권한을 더 사용하기 쉬운 세트로 그룹화하거나 번들링할 수도 있습니다.

플러그인 개발자라면 공개된 모든 명령에 대해 여러 개의 정의되고 적절한 이름이 부여된 접근 권한을 배포할 수 있습니다.

애플리케이션 개발자의 경우, 기존 플러그인 접근 권한을 확장하거나 개인 설정 명령용으로 정의할 수 있습니다. 이는 나중에 재사용하거나 기본 설정 파일을 간소화하기 위해 한 세트로 그룹화하거나 확장할 수 있습니다.

“접근 권한 식별자”는 접근 권한을 재사용하고 고유한 이름을 갖도록 보장하는 데 사용됩니다.

  • <name>:default: 이는 접근 권한이 플러그인 또는 애플리케이션의 기본값임을 나타냅니다.
  • <name>:<command-name>: 이는 접근 권한이 개별 명령용임을 나타냅니다.

플러그인의 접두사 tauri-plugin-은 컴파일 시 플러그인 식별자의 맨 앞에 자동으로 추가되므로 수동으로 지정할 필요가 없습니다.

식별자는 ASCII 문자의 알파벳 소문자 [a-z]로 제한되며, 식별자의 최대 길이(문자 수)는 아래 상수에 의해 현재 116으로 제한됩니다.

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;

Tauri 플러그인 디렉토리 구조의 간략화된 예:

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

기본 접근 권한은 특별한 방법으로 처리됩니다. Tauri CLI를 사용하여 Tauri 애플리케이션에 플러그인을 추가하는 한, 애플리케이션 설정에 자동으로 추가되기 때문입니다.

애플리케이션 개발자의 경우도 구조는 유사합니다:

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

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."""
[[scope.allow]]
path = "$HOME/*"

《번역 주》 위 description의 내용: 이 적용 범위는 $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"
]

《번역 주》 위 description의 내용: 이를 통해 사전 구성된 액세스 가능한 경로 없이 모든 파일 읽기 관련 명령이 활성화됩니다.

plugins/fs/permissions/autogenerated/commands/mkdir.toml
[[permission]]
identifier = "allow-mkdir"
description = "This enables the mkdir command."
commands.allow = [
"mkdir"
]

《번역 주》 위 description의 내용: 이를 통해 “mkdir” 명령이 활성화됩니다.

앱에서 위의 플러그인 접근 권한을 확장하는 구현 예:

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"
]

《번역 주》 위 description의 내용: 이를 통해 파일에 대한 비재귀적 읽기 액세스가 가능해지고, $HOME 폴더 내에 디렉토리를 만들 수 있게 됩니다.


© 2025 Tauri Contributors. CC-BY / MIT