---
title: "文件共享"
description: "如何通过 tailnet 暴露目录进行文件共享"
url: "https://tslink.md/zh/docs/file-sharing"
locale: "zh"
product_version: "0.1.1"
source: "https://github.com/anydoor7/tslink/blob/v0.1.1/docs/getting-started.md"
---

> Documentation index: https://tslink.md/zh/llms.txt · Installed binary is authoritative: `tslink manifest`.

## 概述

TSLink 可以在你的 Tailscale 网络上通过 HTTPS 提供任何本地目录的服务。这对于与团队成员或你自己的设备共享文档、构建产物、媒体文件或任何文件集合非常有用。

## 共享目录

使用 `tslink add` 和 `--dir` 标志：

```bash
tslink add <名称> --dir <路径>
```

**示例：**

```bash
# 共享文档文件夹
tslink add docs --dir ~/Documents/shared

# 共享构建输出
tslink add builds --dir /var/www/builds

# 共享项目的公共资源
tslink add assets --dir ~/projects/my-app/public
```

## 访问共享文件

`add` 默认确保网关运行。完成必要授权，再运行 `tslink url docs --wait`，从 tailnet 策略允许的设备打开准确返回 URL：

```
https://docs.<你的-tailnet>.ts.net
```

TSLink 在根 URL 提供文件列表页面。你可以通过浏览器浏览目录并直接下载文件。

## URL 路径

文件在该文件服务的根 URL 提供：

```
https://docs.<你的-tailnet>.ts.net/
```

需要共享多个目录时，请使用不同的服务名。

## 使用场景

### 团队文件共享

与团队共享项目资源，无需上传到云存储：

```bash
tslink add team-resources --dir ~/team/resources
tslink url team-resources --wait
```

完成授权并取得准确 URL 后，策略允许的 tailnet 成员可以浏览和下载文件。

### 开发产物

与同事共享构建产物或测试报告：

```bash
tslink add test-reports --dir ./coverage
tslink add builds --dir ./dist
```

### 媒体库

让本地媒体库可在你的设备间访问：

```bash
tslink add media --dir /Volumes/External/media
```

从手机、平板或 tailnet 上的任何其他设备访问你的文件。

### 临时共享

需要快速共享文件？添加目录，分享链接，完成后移除：

```bash
# 开始共享
tslink add temp --dir ~/Desktop/send-these

# 完成后
tslink remove temp
```

### 受限共享

将文件访问限制为特定用户或带标签的设备。`--allow` 标志支持邮箱地址和 ACL 标签，可以指定多个值：

```bash
# 单个用户
tslink add confidential --dir ~/Documents/private --allow user@company.com

# 多个身份
tslink add confidential --dir ~/Documents/private --allow user@company.com,tag:admin

# 结合标签进行基于 ACL 的访问控制
tslink add team-docs --dir ~/team/docs --allow tag:engineering --tags tag:internal
```

只有指定的身份才能访问共享目录。未授权的请求会收到 `403 Forbidden` 响应。

### 临时节点共享

使用 `--ephemeral` 请求临时节点。控制面按不活跃状态清理；停止网关不证明远端设备已消失，本地 registry 条目保留至主动移除。可用于一次性文件传输或短期共享会话：

```bash
# 请求临时节点；远端清理结果须另行验证
tslink add temp-share --dir ~/Desktop/handoff --ephemeral

# 结合临时节点和访问控制进行安全的一次性共享
tslink add handoff --dir ~/Desktop/deliverables --ephemeral --allow colleague@company.com
```

### 多目录共享

可以将多个目录作为独立服务共享，每个服务有自己的主机名和访问控制：

```bash
tslink add public-docs --dir ~/Documents/public
tslink add team-files --dir ~/team/shared --allow tag:engineering
tslink add build-output --dir ./dist --ephemeral
```

## 重要说明

* 目录路径必须存在于运行 TSLink 的机器上。
* 位于 TSLink config 目录内、等于该目录或包含该目录的分享路径会以 `path_exposes_config_dir` 拒绝，保护凭据及 node keys。
* 文件以**只读**方式提供——远程用户可以下载但不能上传或修改文件。
* 目录通过 HTTPS 提供服务，使用自动 TLS 证书。
* 默认情况下，所有访问仅限于你的 Tailscale 网络——文件永远不会暴露到公共互联网。Funnel 仅支持 proxy，并且必须使用 `--funnel --public`。
* 子目录会被递归提供服务。
* Funnel（`--funnel --public`）不适用于文件服务——仅支持代理服务，且属于显式公共暴露。

## 人员与期限

文件服务也支持[带期限的人员授权](https://tslink.md/zh/docs/people-sharing.md)。只给实际 Tailscale 登录账户开放指定私有文件应用；外部账户需要接受应用设备邀请。撤销阻止新请求，无法收回已下载文件或关闭已接受的流。文件服务不能使用公共 Funnel。
