所以我在Linux上从名为"x"的用户帐户运行此命令:
sudo dotnet App.dll
App.dll确实做到了:
File.WriteAllText("App.txt", "Text");
"x"或普通用户无法对该文件进行写访问。它归root所有。我如何写它,使它不是一个根用户文件,而是在从sudo运行时?我知道我可以授予文件用户名的访问权/所有权,但如果我不知道用户名是"x",该怎么办?
我对Linux知之甚少。我只是在写一个简单的工具来配置一些文件。它需要写一些root用户拥有的文件,也需要写一些用户拥有的文档。
我甚至不确定我的问题是否有意义。我想写一个没有sudo应用程序执行中的(锁定的(图标覆盖的文件。
经过更激烈的谷歌搜索,我发现我可以通过运行获得调用sudoUID
和GID
的用户
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
或使用/bin/bash -c "command"
:的Process.Start
var command1 = $"chgrp {groupId} Test.txt";
var command2 = $"chown {userId} Test.txt";
以将该文件提供给启动CCD_ 5的用户。