jzwxh77 发表于 2014-08-19 19:30

求高手解socket 权限问题

vsftpd在某个设备下的linux内核工作正常,因工作需要移植此vsftpd到新设备下的另一个linux内核下不能工作;

原因为执行FTP 的PASV命令时,在函数vsf_privop_pasv_listen下创建监听socket失败,具体错误函数为:

socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) 返回-1, errno=13 (即Permission denied);

先怀疑euid和egid在新内核下不同。后打印两个内核环境下都为eudi=99 egid=99

请高手指点,socket权限是怎么回事。

Tinnal 发表于 2014-08-20 09:05

回复 1# jzwxh77

看了一下我目前的内核代码,好像没有在socket里返回EACCES错误码的地方。
而且从功能来讲,一个普通用户应该也能发送TCP数据包。

可能是你新的机器有一些什么安全配置拦截了。
你可以strace一下,找到失败的系统调用,然后再结合内核源码+kprobe用二分法定位返回出错的点。

   
页: [1]
查看完整版本: 求高手解socket 权限问题