【问题标题】:SCM_RIGHTS send file descriptor with less permissionsSCM_RIGHTS 发送具有较少权限的文件描述符
【发布时间】:2021-06-06 11:55:35
【问题描述】:

有没有办法使用 unix 套接字将文件描述符发送到另一个进程,但权限比打开时少?我对以下场景感兴趣:

  1. P1:使用 RW 权限打开文件“x”并获取文件描述符 fd
  2. P1:将 fd 发送到具有只读权限的进程 P2
  3. P2:使用 fd 从文件中读取一些内容
  4. P1:使用 fd 向文件写入内容

【问题讨论】:

    标签: c sockets unix file-descriptor


    【解决方案1】:

    无法更改现有文件描述符的访问模式,或将其发送到具有不同访问模式的另一个进程。您可以做的最接近的事情是打开 "/dev/fd/%d""/proc/self/fd/%d" 以获取指向与旧文件相同的文件的新文件描述符,您可以将其设为只读,然后将其发送到 P2。

    【讨论】:

    • 会很好,但如果我这样做new_fd = open("/dev/fd/%d", O_RDONLY) 我仍然可以写:write(new_fd, buff, sizeof(buff)) 并且它不会失败。据我了解,有些系统的行为是这样的,这意味着它们的行为类似于new_fd = dup(old_fd)
    • @AndreiPangratie 哪些系统的行为是这样的?
    • 我只是按照在google上找到的链接(informit.com/articles/article.aspx?p=99706&seqNum=15),并在macos机器上自己测试了它,没有对这个主题做进一步的研究。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2018-02-24
    • 2013-05-30
    • 2023-04-04
    相关资源
    最近更新 更多