【问题标题】:Prevent a Unix domain socket file in the filesystem from being deleted while socket is bound防止在绑定套接字时删除文件系统中的 Unix 域套接字文件
【发布时间】:2014-04-03 08:44:41
【问题描述】:

是否可以在 Linux 或 MacOSX 上防止删除当前绑定的 Unix 域套接字文件(例如在 /tmp 中)?我想要一个用户可以连接但用户不能在守护进程运行时删除的模式 0777 套接字。

现在普通用户可以“rm”套接字,防止其他人访问它,直到守护程序重新启动。如果它被绑定,它似乎应该是“忙碌”的。

【问题讨论】:

  • 您可能会在Unix & Linux 上获得更优雅的解决方案。不过,迁移将是一种耻辱,因为我认为这对(服务器)编程真正感兴趣——如果这是通过适当的 POSIX/BSD 系统调用等从恶意客户端“保护” unix 套接字的问题。

标签: linux macos unix unix-socket


【解决方案1】:

您可以在创建套接字后创建一个新的子目录并对该目录设置只读权限:

mkdir /tmp/blah
cd /tmp/blah
# do stuff to create /tmp/blah/socket
chmod 555 /tmp/blah


rm /tmp/blah/socket

rm: cannot remove /tmp/blah/socket: Permission denied

(或等同于 C 语言/您选择的语言)

【讨论】:

  • 看起来这可能是唯一的便携式解决方案。谢谢。
猜你喜欢
  • 2019-09-05
  • 2013-04-03
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 2016-04-24
  • 2012-04-22
  • 2021-10-17
  • 2014-07-18
相关资源
最近更新 更多