这简直不是一件小事,可惜答案并不像我希望的那样简单。

如果以后有人会被这个同样的问题困扰,我就把这个答案贴出来,但希望也许有人能早点贴出更好的解决方案来

为了找到主人,我用 本库及其实例:from smb.SMBConnection import SMBConnection

conn = SMBConnection(username='', password='', domain=', my_name='', remote_name='')

conn.connect('')

sec_att = conn.getSecurity('', r'\some\file\path')

owner_sid = sec_att.owner

问题是 pysmb 包只能给你所有者的SID,而不是他的名字。为了得到他的名字,你需要 做一个ldap查询,就像这个答案一样。 (转贴代码)。from ldap3 import Server, Connection, ALL

from ldap3.utils.conv import escape_bytes

s = Server('my_server', get_info=ALL)

c = Connection(s, 'my_user', 'my_password')

c.bind()

binary_sid = b'....' # your sid must be in binary format

c.search('my_base', '(objectsid=' + escape_bytes(binary_sid) + ')', attributes=['objectsid', 'samaccountname'])

print(c.entries)

但当然没有什么是容易的,我花了好几个小时才找到一种方法 在python中把字符串SID转换为二进制SID。最后这就解决了:# posting the needed functions and omitting the class part

def byte(strsid):

'''

Convert a SID into bytes

strdsid - SID to convert into bytes

'''

sid = str.split(strsid, '-')

ret = bytearray()

sid.remove('S')

for i in range(len(sid)):

sid[i] = int(sid[i])

sid.insert(1, len(sid)-2)

ret += longToByte(sid[0], size=1)

ret += longToByte(sid[1], size=1)

ret += longToByte(sid[2], False, 6)

for i in range(3, len(sid)):

ret += cls.longToByte(sid[i])

return ret

def byteToLong(byte, little_endian=True):

'''

Convert bytes into a Python integer

byte - bytes to convert

little_endian - True (default) or False for little or big endian

'''

if len(byte) > 8:

raise Exception('Bytes too long. Needs to be <= 8 or 64bit')

else:

if little_endian:

a = byte.ljust(8, b'\x00')

return struct.unpack('

else:

a = byte.rjust(8, b'\x00')

return struct.unpack('>q', a)[0]

... 最后你有完整的解决方案!享受:(

linux smb 所有者,python-3.x - 在Linux上使用python从smb共享中获取文件的所有者。 - SO中文参考 - www.soinside.com...相关推荐

  1. python读取两行字符串_python - 如何为两行之间的行分配值,并在数据帧的列中使用特定字符串? - SO中文参考 - www.soinside.com...

    我有一个具有时间序列的数据帧,其中一列包含字符串:Normal Value和Wrong Value.我想用Wrong Value查找所有行之间的所有行,并将它们0分配给新列.具有Normal Valu ...

  2. python制作图片贴纸,python - 如何将剪贴画放在matplotlib中的绘制数据后面 - SO中文参考 - www.soinside.com...

    cbar_ax = fig.add_axes(..., zorder=-1)在轴之间排列z顺序. ax.set_facecolor('none')使散点图的背景完全透明(默认为不透明白色,将所有内容隐 ...

  3. linux ls命令shell脚本位置,linux - shell脚本到ls并在ls上执行命令结果 - SO中文参考 - www.soinside.com...

    我在ubuntu的文件夹中有一个文件夹列表.即.在/ mnt / source / customcode / files / brands /下 root@a919794ec280:/mnt/sour ...

  4. python使用-如何在Windows上使用Python进行开发

    本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 一直以来C#都是微软在编程语言方面最为显著的Tag,但时至今日Python ...

  5. 在树莓派上进行python编程_在树莓派上用Python控制LED

    所需材料 一个已经安装配置好了的树莓派 连接控制树莓派所用的其他必须设备 200Ω电阻 x 8 led x 8 面包板及连接线若干 电路连接 电路图 按照电路图所示,在面包板上进行连接. 编写程序 安 ...

  6. 树莓派能直接运行python程序_在树莓派上运行python脚本 - python

    我正在研究rapiberry pi 3大约3个月,开始使用它时遇到了问题. 我找不到在树莓派打开时在其上运行python脚本的有效,安全的方法(没有监视器,鼠标和键盘).此刻,我在/ etc / pr ...

  7. python代码变量作业_python - 是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业? - SO中文参考 - www.soinside.com...

    我想使用Jenkins在多个平台浏览器配置上运行多个自动化作业.用python编写的自动化框架已经设置为使用Saucelabs实现此目的. 编写代码的人将其拆分为每个浏览器的单独文件夹,每个文件夹都有 ...

  8. python dataframe取一列_python - 从pandas DataFrame列标题中获取列表

    python - 从pandas DataFrame列标题中获取列表 我想从pandas DataFrame中获取列标题列表. DataFrame将来自用户输入,因此我不知道将会有多少列或将调用它们. ...

  9. python中获取文件扩展名

    在 Python 中有几种获取文件扩展名的方法.这里有三个选项: 使用os.path模块: import osfilename = 'example.txt' extension = os.path. ...

最新文章

  1. 使用OpenCV进行图像全景拼接
  2. 3 Useful BookmarkLets for Debugging
  3. HBase 名称空间namespace的创建/建表/删除
  4. 一个大型虚拟项目包含位于不同地点的许多干系人_项目管理与人生
  5. Oracle 的 SQL语句中 decode()函数
  6. C中位域结合对齐(pragma)的例子及解释
  7. ef mysql dbfirst_.NetCore教程之 EFCore连接Mysql DBFirst模式
  8. (03)System Verilog 通用总线激励驱动方法
  9. HUE与Hive的集成
  10. html实现酷狗歌词,酷狗音乐怎么制作歌词?酷狗音乐制作歌词的方法
  11. RICOH 身份证 便捷打印
  12. C++ opencv基于帧差法的关键帧提取
  13. R语言数据可视化案例(世界杯球员信息数据可视化)
  14. 厉害了,10行代码实现抽奖助手自动参与抽奖
  15. HTML与CSS重构网易严选页面
  16. 车轱辘通知挪车、车牌识别
  17. Q_01_04 量子比特
  18. Vivado 2020 安装
  19. 网易资深安卓架构师:2021年Android常见面试题,面试必问
  20. win10蓝牙开关不见了

热门文章

  1. Loader之二:CursorLoader基本实例
  2. Android网络连接的两种方法:apache client和httpurlconnection的比较
  3. 5种网络IO模型:阻塞IO、非阻塞IO、异步IO、多路复用IO、信号驱动IO
  4. Innodb锁系统 Insert/Delete 锁处理及死锁示例分析
  5. Elasticsearch 实现自定义排序插件
  6. xgboost原理及应用
  7. FreeBsd网络性能优化方案sysctl
  8. Facebook力推导航库:React Navigation使用详解
  9. linux下GPRS模块的应用程序
  10. 关于[[NSNotificationCenter defaultCenter] addObserver不remove后续又收到通知crash问题