asp.net-core - 在 Linux 上运行的 ASP.NET Core 5 Web 应用程序 - 以与 www-data 不同的用户身份运行 ssh 命令
问题描述
我有一个在 Linux (Apache) 上运行的 ASP.NET Core 5 Web 应用程序,它通常运行良好。我希望它能够更改某些 Linux 用户的密码。基本上,登录到 Web 应用程序的用户可以更改他们用于 SFTP 的相应 Linux 密码。
我可以从 Web 应用程序运行 ssh/bash 命令,但它们是使用用户 www-data 运行的
我不确定这样做的最佳方法是什么:
- 尝试以具有 sudo 权限的用户身份一起启动一个新的 SSH 会话。(我不知道该怎么做。
- 将 sudo 与 www-data 用户一起使用(似乎不太安全,因为它增加了使用 www-data 用户的任何其他内容的权限)。
只要有 root 权限,运行这样的命令就可以更改用户的密码:
echo -e "changeme2\nchangeme2" | passwd testuser1
感谢您的任何建议。
解决方案
谢谢@feihoa,我最终使用 SSH.NET 创建了一个到 localhost 的 SSH 会话并做我需要做的事情。
public void SetLinuxPassword()
{
using (var client = new SshClient("localhost", "{username}", "{password}"))
{
client.Connect();
SshCommand cmd = client.RunCommand($"echo -e \"{password}\" | sudo -S bash changePassword.sh {LinuxUsername} {_newPlainTextPassword}");
}
}
推荐阅读
- dart - Dart:从单独的类访问时,类成员似乎是错误的
- git - 克隆到 D:\.. 错误:无法生成 C:\..,权限被拒绝致命 [Github 桌面]
- android - Android Studio Canary 不预览 jetpack compose
- r - R软件 - 条形图日志Y比例问题
- angular - 无法验证 Angular 表单
- marklogic - MarkLogic 插入带有选项的文档
- r - dplyr 有条件地仅过滤唯一项目
- flutter - Flutter Web Firestore 错误:预期类型为“((Object?)=> Object)?”,但得到类型“(Object)=> Object?”之一
- join - PySpark 广播连接,其中左表比右表更小以适合内存
- flutter - Flutter:在关闭控制器上处理 HTTP 请求