우분투에서 가상 호스트 웹 서버를 관리하는 데 사용할 수있는 도구를 쓰고 있습니다. 특권의 권리가 필요한 많은 기능들에 관해서, 나는 이것을 성취 할 수있는 방법을 모색합니다.Ubuntu 리눅스에서 C#으로 권한있는 권리를 요청하고 이것을 유지하십시오.
현재 저는 "gksu"또는 "gksudo"로 알고 있습니다. 이것은 또한 작동합니다. 문제는 사용자가 암호를 입력 할 수있는 권한이 필요한 작업을 묻는 것입니다. 이 암호는 한 번만 검색 할 수 있으며 나머지 프로그램 기간 동안 기억할 수 있습니까? 이것을 구현할 다른 방법이 있습니까?
public void OnToogledVirtualHost(object o, ToggledArgs args)
{
VirtualHost host = (VirtualHost)store.GetNode(new TreePath(args.Path));
host.Enabled = !host.Enabled;
Process process = new Process();
process.StartInfo.UseShellExecute = false;
if (host.Enabled)
{
process.StartInfo.FileName = "gksu";
process.StartInfo.Arguments = "a2ensite " + System.IO.Path.GetFileName(host.FilePath);
}
else
{
process.StartInfo.FileName = "gksu";
process.StartInfo.Arguments = "a2dissite " + System.IO.Path.GetFileName(host.FilePath);
}
process.Start();
}
필자는 단 한가지 우려 사항이 있습니다. 암호를 메모리에 일반 텍스트로 유지하면 다른 프로세스가 RAM에서 추출 할 수 있습니다 (예 : ptrace 사용). – fog
@fog와 동의합니다. 이 문제를 해결하기 위해 Linux에 도구/라이브러리가 있다고 생각했습니다. 예를 들어, PolicyKit? 만약 내가 옳다면, 당신은 바인드 할 수 있습니다. (PolicyKitSharp가 이미 존재하는지 확실하지 않습니다 ...) – knocte
@knocte 위의 대답에서 언급했듯이, PolicyKit은 "올바른"옵션 인 것 같습니다. DBUS를 사용하기 때문에 (또한 DBUS/C# 바인딩을 이미 가지고 있기 때문에) C# 바인딩이 필요하지 않지만 DBUS 서비스를 작성해야하고 SLOC 카운트가 상당히 증가하게됩니다. – fog