gpt4 book ai didi

c# - 为什么输入重定向默认适用于 sudo 而不是 passwd? (。网)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:11 25 4
gpt4 key购买 nike

简单的 F# 脚本:

#!/usr/bin/env fsharpi

open System
open System.Diagnostics

let Exec (command: string, arguments: string, echo: bool) =
let psi = new System.Diagnostics.ProcessStartInfo(command)

psi.Arguments <- arguments
psi.UseShellExecute <- false
if (echo) then
Console.WriteLine("{0} {1}", command, arguments)
let p = System.Diagnostics.Process.Start(psi)
p.WaitForExit()
p.ExitCode

Exec("sudo", "-k ls -lha /root", true)
Exec("passwd", "myusername", true)

(但我猜这实际上是一个通用的“Linux 上的 .NET”问题,因为您可以在 C# 中编写相同的内容)

为什么第一个 Exec() 调用有效而第二个无效?

第一个正确调用 sudo,sudo 要求我输入密码(我什至无法输入密码,它会再次询问我,所以它与 stdin< 中使用的运营商返回数量无关/em>).

然而,第二个只让我写了一个字,突然就掉线了。它似乎没有正确地将字符重定向到 passwd,因为后者不允许我写完整的密码,并且没有说密码不匹配。

谁能解释一下?

最佳答案

默认情况下,passwd 通常不使用标准 I/O(主要是出于安全原因)。您可以查看 passwd 的手册页,看看是否有启用 stdio 的选项 - 例如密码——标准输入。如果没有,您将需要使用不同的实用程序,例如 chpasswd

总而言之,与 .NET 无关。你也不能从你的 shell 做同样的事情 :) 密码不是给应用程序或脚本的——它们是给用户的。

关于c# - 为什么输入重定向默认适用于 sudo 而不是 passwd? (。网),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40423524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com