You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何指向PTY设备的符号链接所有者会影响root用户的访问权限?

问题分析:/tmp目录下PTY符号链接的root访问异常

这个问题的核心是**/tmp目录的sticky位权限结合Linux内核对PTY设备的特殊访问控制逻辑**共同导致的,下面逐步拆解原因:

1. /tmp的sticky位是触发异常的前提

/tmp目录默认权限是1777(即rwxrwxrwt),其中最后的t就是sticky位。它的核心作用是限制只有文件所有者、目录所有者或root才能删除/重命名目录内的文件,但除此之外,内核还会对sticky目录下的符号链接访问触发额外的安全检查——这正是问题的关键。

2. PTY设备的双重访问控制

/dev/pts下的PTY slave设备(比如/dev/pts/0)的访问权限不仅依赖文件系统权限(通常是crw--w----,所有者为创建终端的普通用户,组为tty),还受内核的终端会话检查:

  • 普通用户作为PTY的会话领导者(即打开该终端的用户),自然拥有访问权限;
  • root用户本应能直接访问任何文件,但在通过sticky目录下的符号链接访问时,内核会启动额外验证。

3. 内核对sticky目录下符号链接的特殊检查

当root尝试访问/tmp下普通用户创建的PTY符号链接时,内核会执行以下安全验证:

为了防止恶意用户通过在公共sticky目录(如/tmp)创建符号链接来绕过权限控制,内核会检查符号链接的所有者是否有权访问目标设备。如果符号链接所有者是普通用户,即使调用者是root,内核会模拟以符号链接所有者的身份去检查目标PTY的访问权限——这就导致root的权限被临时"降级",最终触发permission denied错误。

当你执行sudo chown -h root /tmp/link将符号链接所有者改为root后,内核验证符号链接所有者与调用者(root)身份一致,因此跳过了上述降级检查,允许root正常访问目标PTY设备。

4. 用户主目录无此问题的原因

用户主目录的权限通常是755或700,没有设置sticky位,因此内核不会触发针对符号链接的额外安全检查。此时root访问符号链接时,直接遵循标准的符号链接访问规则:仅检查目标PTY设备的权限,root自然有权访问。


内容的提问来源于stack exchange,提问作者Andrej Levkovitch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 11:43:11