如何创建具有特定访问权限的Unix域套接字

雪莱尔贝克

我有一种情况,我打算通过文件系统上UNIX域套接字提供的命令接口与服务进行通信。我能够成功发送命令,但是对于为什么我无法收到对查询的任何响应感到困惑。

事实证明,该服务没有足够的权限来写入为其提供的地址I(或OS)。但是,我意识到,如果我明确地bind指向文件系统上的地址,则可以利用来调整文件权限chmod

就像是:

int mySocket;
struct sockaddr_un local_addr; 

mySocket = socket(AF_UNIX, SOCK_DGRAM, 0);
local_addr.sun_family = AF_UNIX;
snprintf(local_addr.sun_path, 108  "/path/to/mySocket");

bind(mySocket, (struct sockaddr *) &local_addr, sizeof(struct sockaddr_un));
chmod("/path/to/mySocket", 777);

也就是说,如果没有最后chmod一步,该服务将无法写入,mySocket因为它没有适当的写入权限。显然,如果不显式地bind指向特定地址,这将是一个更难发现的问题,因为底层操作系统将为用户隐式生成此套接字-但它仍然存在并且仍将具有相同的访问问题。

那么,我的问题是关于这一最后步骤的。有没有一种方法可以允许OS隐式为我的端点生成套接字(即服务将响应地址),但是要求给它一定的权限?


说明

此问题成为问题的原因是由于要求以root用户身份执行程序的其他部分。这样,当我以root用户身份尝试connect/send进入后台服务时,操作系统将隐式创建一个地址,并将回复定向到该地址。但是,这导致了一个问题,即我的套接字文件(无论是隐式的还是由创建的bind)都将具有像srw- --- ---这样的权限,因此,其他端点也只能在自身提升时进行回复。

因此,如果我先解决问题bind,然后再chmod获得上面显示的权限,问题就解决了

ALK

有没有一种方法可以允许OS隐式为我的端点生成套接字(即服务将响应的地址),但是要求给它一定的权限?

一旦使用两次调用,我就解决了这个问题umask()

伪代码:

current_mask = umask(umask_to_be_used_on_afunix_socket_file_system_entry_creation);
bind afunix socket here
umask(current_umask);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中创建具有特定权限的Unix域套接字?

来自分类Dev

如何创建Unix域套接字?

来自分类Dev

Node Express Unix域套接字权限

来自分类Dev

如何从命令行访问Unix域套接字?

来自分类Dev

如何创建一个公共的Unix域套接字?

来自分类Dev

如何在不创建套接字文件的情况下使用Unix域套接字

来自分类Dev

带有VM的Unix域套接字

来自分类Dev

如何“跟踪” Unix域套接字?

来自分类Dev

psql可以连接到unix域套接字,但是具有相同参数的py-postgresql会获得“权限被拒绝”

来自分类Dev

如果不能使用lsof命令,如何获得特定pid的活动unix域套接字?

来自分类Dev

如何仅在Centos / Linux安装上创建具有特定/ dir /访问权限的FTP用户

来自分类Dev

UNIX套接字权限(Linux)

来自分类Dev

如何安全设置Unix域套接字的组所有权?

来自分类Dev

带有unix域套接字的IPC安全吗?

来自分类Dev

如何创建具有ssh访问权限的新用户?

来自分类Dev

如何创建具有受控Internet访问权限的LAN?

来自分类Dev

Unix域套接字如何在Erlang 19中工作

来自分类Dev

如何在Ruby中检测断开的Unix域套接字?

来自分类Dev

具有PrivateTmp = true的服务如何访问/ tmp目录中的unix套接字(例如,从Apache中运行的PHP提交Torque作业)

来自分类Dev

什么是更好的做法,则创建一个具有多个连接的UNIX套接字或创建一个连接的多个套接字?

来自分类Dev

如何将Python套接字绑定到特定域?

来自分类Dev

UNIX域套接字编程3个套接字

来自分类Dev

Warp:绑定到Unix域套接字

来自分类Dev

Unix域套接字的边缘触发epoll

来自分类Dev

lua-socket:Unix域套接字?

来自分类Dev

使用Unix域套接字控制VLC

来自分类Dev

IPC Unix域套接字bash

来自分类Dev

UNIX域套接字是否溢出?

来自分类Dev

lua-socket:Unix域套接字?

Related 相关文章

  1. 1

    如何在C中创建具有特定权限的Unix域套接字?

  2. 2

    如何创建Unix域套接字?

  3. 3

    Node Express Unix域套接字权限

  4. 4

    如何从命令行访问Unix域套接字?

  5. 5

    如何创建一个公共的Unix域套接字?

  6. 6

    如何在不创建套接字文件的情况下使用Unix域套接字

  7. 7

    带有VM的Unix域套接字

  8. 8

    如何“跟踪” Unix域套接字?

  9. 9

    psql可以连接到unix域套接字,但是具有相同参数的py-postgresql会获得“权限被拒绝”

  10. 10

    如果不能使用lsof命令,如何获得特定pid的活动unix域套接字?

  11. 11

    如何仅在Centos / Linux安装上创建具有特定/ dir /访问权限的FTP用户

  12. 12

    UNIX套接字权限(Linux)

  13. 13

    如何安全设置Unix域套接字的组所有权?

  14. 14

    带有unix域套接字的IPC安全吗?

  15. 15

    如何创建具有ssh访问权限的新用户?

  16. 16

    如何创建具有受控Internet访问权限的LAN?

  17. 17

    Unix域套接字如何在Erlang 19中工作

  18. 18

    如何在Ruby中检测断开的Unix域套接字?

  19. 19

    具有PrivateTmp = true的服务如何访问/ tmp目录中的unix套接字(例如,从Apache中运行的PHP提交Torque作业)

  20. 20

    什么是更好的做法,则创建一个具有多个连接的UNIX套接字或创建一个连接的多个套接字?

  21. 21

    如何将Python套接字绑定到特定域?

  22. 22

    UNIX域套接字编程3个套接字

  23. 23

    Warp:绑定到Unix域套接字

  24. 24

    Unix域套接字的边缘触发epoll

  25. 25

    lua-socket:Unix域套接字?

  26. 26

    使用Unix域套接字控制VLC

  27. 27

    IPC Unix域套接字bash

  28. 28

    UNIX域套接字是否溢出?

  29. 29

    lua-socket:Unix域套接字?

热门标签

归档