この問題は、新しいプロセスを開始し、bash chmod
コマンドを実行するだけで解決しました。
例:
public static void Exec(string cmd)
{
var escapedArgs = cmd.Replace("\"", "\\\"");
var process = new Process
{
StartInfo = new ProcessStartInfo
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
FileName = "/bin/bash",
Arguments = $"-c \"{escapedArgs}\""
}
};
process.Start();
process.WaitForExit();
}
、その後:
Exec("chmod 644 /path/to/file.txt");
あなたはまた、bashのコマンドの他のタイプを実行するには、このExec
メソッドを使用することができます。
マイクロソフトでは、Windowsでファイル許可モデルを使用し、Linux/UNIXに変換します。したがって、 'chmod'への呼び出しは内部であり、https://github.com/dotnet/corefx/blob/bffef76f6af208e2042a2f27bc081ee908bb390b/src/Common/src/Interop/Unix/System.Native/Interop.ChMod.csであり、 https://github.com/dotnet/corefx/blob/801dde95a5eac06140d0ac633ac3f9bfdd25aca5/src/System.IO.FileSystem/src/System/IO/FileSystemInfo.Unix.csあなたの場合、644を対応するWindowsファイルのパーミッションに変換する必要がありますWindowsの方法でファイルを操作します。 –