【发布时间】:2022-01-20 15:33:30
【问题描述】:
以下场景:
- 我确实有 sudo 权限
- 我知道一个用户的新旧密码
现在我想编写一个可以更改用户密码的 C# .NET 6 应用程序。 在 Linux 中我会调用
sudo passwd username
我的第一个想法是创建一个新进程,重定向标准输入并将密码写入那里。
另一种选择是创建一个 bash 脚本并从 C# 调用它(也使用新进程)。
但是,对我来说,两者都显得有点老套。是否有任何选项可以在 C# 中更改密码?
【问题讨论】:
-
使用 SSH。 linux 机器需要启用 SSH(或使用 Telnet)。请参阅:github.com/sshnet/SSH.NET?force_isolation=true
-
我不明白 - 为什么要使用 SSH?我的程序在我想更改用户密码的同一台机器上运行。不需要远程访问。
-
对不起。大多数人在提出这个问题时都是通过远程连接进行的。您可以通过等效于 shell 命令的 Process 类来执行此操作。请参阅:developers.redhat.com/blog/2019/10/29/…
-
是的,这是我在主帖中已经写过的第一个意图。但是我问是否有更好的,进程内的方法来做它,比如散列它并将它写入文件或类似的东西,例如影子文件,但我不是 Linux 专业人士所以不知道这是否可行或一个好方法
-
使用
/usr/sbin/chpasswd可能是最简单的解决方案。
标签: c# .net linux .net-core .net-6.0