一次寻根之旅

2019-06-14  本文已影响0人  海铭威_38cf

问题描述:自己做了一个文件系统,在一定情况下文件读取会报错,尝试了很多错误值,但是windows总报权限错误
1.确定文件系统返回值:利用strace查看调用过程
首先通过smbstatus查找到链接samba的进程号


查看samba状态.png ps&strace.png

通过strace的输出可以看到文件系统的返回值为EBUSY


process.png

2.windows samba收到的错误码:利用Wireshark跟踪到windows侧收到的错误码为NT_STATUS_ACCESS_DENIED


Wireshark.png

3.samba 源码调查:通过上面两步确定到linux文件系统的返回值跟windows侧收到的错误码不一样。然后在samba的源码中查找了一下,发现有一个错误码的对照表Errmap_unix.c。

总结:linux fs的错误码与windows收到的错误码部分对照表

Linux fs windows
EAGAIN NT_STATUS_NETWORK_BUSY
EINTR NT_STATUS_RETRY
EPERM NT_STATUS_ACCESS_DENIED
EIO NT_STATUS_IO_DEVICE_ERROR
EEXIST NT_STATUS_OBJECT_NAME_COLLISION
上一篇 下一篇

猜你喜欢

热点阅读