我在用多路复用器创建一个共享会话在 /tmp 中称为 tekkit。
一切正常,但有一个重大例外。 当 tmux 会话关闭时,/tmp/tekkit 套接字文件仍保留在原处。这是一个大问题,目前除了该套接字文件的所有者之外,没有人可以再次启动此会话
运行命令:tmux -S /tmp/tekkit new -d sh TekkitLaunch.sh
向所有其他用户提供:error connecting to /tmp/tekkit (Operation not permitted)
所有用户都属于同一组,并且对套接字文件具有完整的 rwx 权限。
通常,我会在关闭会话后取消链接套接字文件,但这也不起作用,因为只有文件所有者才能取消链接。所有其他用户,即使拥有必要的权限,也无法取消链接,并会出现以下错误:unlink: cannot unlink '/tmp/tekkit': Operation not permitted
我像这样取消文件链接:unlink /tmp/tekkit
我的问题是:
我做错了什么以及我该怎么做:
A) 让套接字文件保持原样,但能够在第一个会话关闭后与另一个用户启动新会话。
二) 取消套接字文件与文件所有者以外的其他用户的链接。
这两种解决方案都需要在没有超级用户访问权限的情况下工作!
感谢您的帮助。
答案1
中的符号链接/tmp
只能由符号链接所有者跟踪
在 Ubuntu 10.10 及更高版本中,无法遵循全局可写粘性目录(例如 /tmp)中的符号链接如果追随者和目录所有者与符号链接所有者不匹配。
这两种解决方案都需要在没有超级用户访问权限的情况下工作!
据我所知,这是不可能的。
禁用此安全功能的唯一方法是禁用protected_symlinks
(这具有安全隐患,因此root
是必要的)
或者通过
sysctl -w fs.protected_symlinks=0
或者通过添加fs.protected_symlinks=0
到文件中/etc/sysctl.d
或直接编辑/etc/sysctl.conf