---
title: "把应用分享给指定的人，并设置期限"
description: "将自托管应用私有分享七天，邀请 tailnet 之外的人，并随时收回权限。"
url: "https://tslink.md/zh/docs/people-sharing"
locale: "zh"
product_version: "0.1.1"
source: "https://github.com/anydoor7/tslink/blob/v0.1.1/docs/people.md"
---

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

场景指南：[私有分享一份 HTML 报告，并设置访问截止时间](https://tslink.md/zh/docs/private-html-report.md)。

TSLink 可以让指定的人访问选定的私有 HTTP 应用或文件，直到设定的期限。访问者使用实际的 Tailscale 登录账户；tailnet 之外的人需要逐个接受应用邀请。应用继续在你的电脑运行，并保留自身登录。

访问者可从官方渠道安装 Tailscale：[iPhone/iPad](https://apps.apple.com/us/app/tailscale/id1470499037)、[Android](https://play.google.com/store/apps/details?id=com.tailscale.ipn)、[Mac](https://tailscale.com/download/mac)，或查看[所有平台](https://tailscale.com/download)。

## 1. 注册应用并完成入网

[安装 TSLink](https://tslink.md/zh/docs/installation.md)，自行安装并启动应用。以运行中的 Jellyfin 为例，先预览 recipe，再应用：

```bash
tslink apps share jellyfin --allow you@example.com
tslink apps share jellyfin --allow you@example.com --yes
tslink url jellyfin --wait
```

把 `you@example.com` 换成自己的 Tailscale 登录账户。核对 recipe 的应用配置；实际主机端口不同就覆盖默认端口。保留 Jellyfin 登录。Recipe 注册访问路径，不安装或配置应用。先完成浏览器入网及可能的管理员设备审批，再打开返回的准确 URL。

## 2. 给 tailnet 成员开放七天

```bash
tslink people add alice@example.com --apps jellyfin --for 7d
tslink people list --json
```

使用 Alice **实际的 Tailscale 登录账户**，它可能与联系邮箱不同。本地授权不需要存储 API 凭据。Daemon 必须运行兼容版本，tailnet 策略也必须允许连接应用节点。

首次人员授权会将应用设为按人限制：未列出的调用者需要有效授权或明确的旧 `--allow` 规则。上面的 owner 规则保留你自己的访问。对于已管理的无标签用户，人员授权优先于旧 allow 规则；过期或失去某个应用的授权都会拒绝新请求。带标签的机器不能使用人的授权。

缩短同一个人的应用范围和期限：

```bash
tslink people update alice@example.com --apps jellyfin --for 1h
```

只修改 `--apps` 会保留已有应用的期限，而新增应用默认 24h 期限。传入 `--for` 才会为所有选定应用设置期限。`--apps all` 只选择当前注册的私有 HTTP/文件应用，不自动包含未来的应用。

## 3. 邀请 tailnet 之外的人

对一个新访问者：

```bash
tslink people add bob@example.com --apps jellyfin --for 7d --invite --print-links
```

创建邀请需要存储**用户自己的 Tailscale API access token**；OAuth client token 无法创建设备邀请。通过[标准输入登录](https://tslink.md/zh/docs/commands.md#tslink-login)保存，避免进入命令参数或公开日志。

生成的消息由你发送。TSLink 请求的是链接，不会发送邮件。Bob 安装 Tailscale，以指定账户登录，逐个接受应用链接，并保持 Tailscale 连接。多个应用就需要多次接受。拿到链接的另一个账户不会因此获得本地授权。

邀请链接属于 bearer capability，`--print-links` 是明确展示它们的操作；默认隐藏 URL。Registry 只记录 ID 和状态，不保存邀请链接或 token。

邀请可能部分失败，而本地授权已保存。查看 `complete`、逐应用的 `code` 和 `state`。用 `tslink people update bob@example.com --invite` 续做未完成操作；已完成的操作复用 ID。POST 结果不确定时需要主人核对并 reconcile，不能盲目重试。恢复步骤见 [TSLink 人员指南](https://github.com/anydoor7/tslink/blob/v0.1.1/docs/people.md)。

## 4. 提前收回访问

```bash
tslink people remove alice@example.com
```

先保存本地拒绝，再尝试清理已记录的待接受邀请。没有 token 也能本地拒绝，但远端清理可能未完成。已接受的 Tailscale 设备分享可能还需单独管理。

到期与撤销会阻止**新的私有 HTTP/文件请求**，包括新的 WebSocket upgrade。已接受的流与 WebSocket 连接可继续；已下载的数据无法收回。TCP 与公共 Funnel 无法按人限制。移除一个人会在私有 HTTP/文件应用间保留拒绝记录，不会撤销其 tailnet 成员身份。

## 对方可以只用浏览器吗？

私有人员分享需要 Tailscale。[浏览器访客链接](https://tslink.md/zh/docs/guest-links.md)现已支持单个 HTTP proxy 应用，采用明确公开的 Funnel、强制 gate、有限期限与可选 PIN。链接/PIN 可转发，不证明身份。开放 Funnel 是另一种发布方式，没有 TSLink 访问者身份检查；新公开默认 24h，拒绝 never。

相关：[本地 AI](https://tslink.md/zh/docs/local-ai.md) · [Agent/MCP 配置](https://tslink.md/zh/docs/mcp-server.md) · [选择分享工具](https://tslink.md/zh/docs/comparisons.md)。

来源：[TSLink 分享边界](https://github.com/anydoor7/tslink/blob/v0.1.1/docs/sharing.md)、[人员指南](https://github.com/anydoor7/tslink/blob/v0.1.1/docs/people.md)。

## 统一入口、QR 与续期

启用[每台主机的私有 portal](https://tslink.md/zh/docs/portal-requests.md)，再用 `people add/update --qr` 或 `--qr-png <existing-directory/file.png>` 生成准确地址。安装 Tailscale、正确 login、设备分享与网络策略仍是前提。一个 QR 不安装应用、不批准权限；外部人员需单独接受 portal 节点分享。

新人员授权默认 24h。[期限](https://tslink.md/zh/docs/durations.md)支持相对/绝对截止时间，至少 1h。有邀请历史者采用 guest 策略，默认最多 7d；成员永久授权需 `--for never --ack-never`。用 `tslink extend jellyfin --person alice@example.com --for 36h` 修改单应用，到期需 `--regrant`。开放 Funnel/TCP 不能按人授权；guest-gated 应用私有监听仍执行人员规则。[访问历史](https://tslink.md/zh/docs/access-history.md)可查看保留的请求与生命周期 receipt。
