【发布时间】:2019-04-09 08:15:27
【问题描述】:
使用 .NET Core、C#、Linux
我搜索了一下,似乎找不到任何东西。也许这是不可能的,我需要一种不同的方法?
有人可以向我指出如何获取特定用户名的给定路径的目录列表吗?
我正在以 Root 身份运行 Web 应用程序服务,但需要检查并返回给定用户名的目录和文件(没有密码可用) - 以报告给定用户名具有读取权限的目录和文件。
比如说“/opt/mydata/”,在那里我将有许多目录,我将手动创建并为每个用户组设置权限。 IE。 “/opt/mydata/user_1_readable”在我为user1做目录列表时会返回(因为这个用户在各自的权限组中,或者是所有者,或者设置为每个人都可以阅读)但不会返回user2(此用户不在正确的组中)。
本质上,我想“模拟”或在 Linux 中执行“sudo su user1”的等效操作,并报告给定用户在“/opt/mydata/”中可以读取哪些目录/文件。
我可以让目录列表和文件以 Root 身份正常运行。我不能做/不知道如何获取特定用户的目录列表。我找到并尝试过的示例都是特定于 Windows 身份和 Windows 安全的。
例如我找到了这个例子,但它似乎适用于我没有运行的“Mono”,但基本上我真的想做一些类似的事情:
// Impersonate a user
using (WindowsIdentity newId = new WindowsIdentity("user1"))
using (WindowsImpersonationContext impersonatedUser = newId.Impersonate())
{
var content = _fileProvider.GetDirectoryContents(uri);
}
请问有第三方库或其他方式吗?
资源: Change current Linux user in a C# application running with Mono?
【问题讨论】:
-
你有需要看的目录路径吗?还是需要解析用户的主目录?
-
“针对特定用户名”究竟是什么意思?如果您知道路径,为什么不同用户的输出会有所不同?还是相对路径(相对于所述用户的主目录)?
-
对不起!添加了一些有用的信息。希望。
-
请问有第三方库或者其他方式吗?没有,都是内置的.net-core,应该不需要第三方库。
-
不清楚你在问什么。您在查找/列出目录内容时遇到问题吗?还是您对文件系统权限有疑问?你到底是什么问题?
标签: c# linux asp.net-core .net-core