【问题标题】:NETCore Linux Sudo write regular user writable/owned fileNETCore Linux Sudo 写入普通用户可写/拥有的文件
【发布时间】:2019-11-19 12:17:54
【问题描述】:

所以我在 Linux 上从名为“x”的用户帐户运行此命令:

sudo dotnet App.dll

App.dll 确实如此:

File.WriteAllText("App.txt", "Text");

“x”或普通用户无法写入该文件。它归根用户所有。我该如何编写它,使其不是根用户文件,而是在从 sudo 运行时?我知道我可以授予对文件的用户名的访问/所有权,但是如果我不知道用户名的名称是“x”怎么办?

我对 Linux 知之甚少。我只是在编写一个简单的工具来配置一些文件。它需要编写一些根拥有的文件,但也需要一些用户拥有的文件。

我什至不确定我的问题是否有意义。我想写一个没有 sudo 应用程序执行的(锁定的)图标覆盖的文件。

【问题讨论】:

    标签: c# linux .net-core


    【解决方案1】:

    在更多furious googling之后,我发现我可以通过运行获得调用sudo UIDGID的用户:

    env | grep SUDO
    

    或通过 C#:

    var groupId = int.Parse(Environment.GetEnvironmentVariable("SUDO_GID"));
    var userId = int.Parse(Environment.GetEnvironmentVariable("SUDO_UID"));
    var user = Environment.GetEnvironmentVariable("SUDO_USER");
    

    所以我可以执行:

    chgrp GID File.txt
    chown UID File.txt
    

    Process.Start 使用/bin/bash -c "command"

    var command1 = $"chgrp {groupId} Test.txt";
    var command2 = $"chown {userId} Test.txt";
    

    将文件提供给启动sudo dotnet App.dll的用户。

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      相关资源
      最近更新 更多