就像我们在 Windows 中添加具有管理员权限的用户或服务器操作员本地组,以便他可以在服务器上添加/编辑/删除文件/文件夹一样,我可以在 Linux 中为用户提供这样的权限吗?
我想关闭一个打开的网络文件,该文件位于 Linux 机器上,网络文件关闭API。这里的客户端都是 Windows 机器。我在 Windows 网络上成功测试了 NetFileClose API,但必须将客户端 ID 添加到 Windows 服务器机器上的管理员组,否则我会得到访问被拒绝错误。
因此在 Linux 中,当我尝试使用服务器名称作为 Linux 服务器的名称/IP 来调用 NetFileClose API 时,它返回访问被拒绝错误。还有关于 NetFileClose API 的第二个参数的疑问,即文件标识因为 Linux 没有文件 ID 这样的概念,而是使用索引节点号。那么我可以使用 winapi NetFileClose 强制关闭在 Linux 共享(samba)上打开的文件吗?
答案1
这实际上是几个问题合在一起的问题:
问题 1:如何在 Linux 上授予用户管理员(即 root)权限?
A1.1:您不需要 - 在大多数情况下,您可以微调感兴趣的资源的访问控制列表,以允许适当的用户访问。
A1.2:如果这还不够的话,sudo
允许普通用户细粒度地访问特权命令。
A1.3:如果其他方法都失败了,您可以让您的文件/文件夹为全球可写。当然,这种“解决方案”与暗杀所有用户一样可接受,这样您就不需要共享文件了……而且它只比创建另一个 UID 为零的用户好一点。
问题2:如何授予 Samba 服务器上的用户管理员权限?
答2.1:您不需要 - Samba 配置允许根据每个共享设置具有管理员权限的用户 - 请参阅Samba 配置文件admin users =
中的选项smb.conf
。
A2.2:如果需要,那么任何具有 root 权限的用户都应该能够完全访问 Samba 服务器。
问题3:NetFileClose
如何在 Samba 共享上使用?
A3.1:如果您的 Samba 版本足够新,那么我认为它应该可以工作,至少从 Samba 源代码树中相关代码的数量来看是这样。更熟悉 Samba 的人应该能够验证。
A3.2:如果你正在使用老的Samba 版本,假设已经超过三年了,那么你可能运气不佳,因为我可以追溯到NetFilterClose()
2008 年某个时候对它的支持的开始……