想使用rust开发一个调用su - root切换到root用户的命令程序。已知root用户密码,但是不知道如何实现。
想使用 rust 开发一个调用 su - root 切换到 root 用户的命令程序。已知 root 用户密码,但是不知道如何实现。
希望谁能帮忙提供具体的代码实现。
谢谢!
su 不是 Linux 系统本身的命令吗?
是的。就是要用 rust 调用 su - root 代输入密码,不像每次都输入密码。
不一样的。因为root用户不能直接登录,而且root密码特别复杂,每次都需要登录到普通用户再切换。 所以很头疼。如果您知道怎么用rust实现的话,请指教
谢谢!
我没有用 rust 实现过,手上也没有测试环境。从思路上说,rust 有
Command
结构体用来模拟命令调用,而且提供了与父进程通信的方法,应该可以实现,只要父进程等待Command
子进程结束就行,而后续的命令则都在su
子进程中执行。是我的话,我会选择使用
shell
脚本来解决这个问题,网上可以搜到了。只需要rust完成用户权限切换,不用实现shell功能,切换用户权限之后,需要把shell权限交还回去。rust完成用户切换之后,就不需要存在了撒。
这个我不知道怎么做,我目前了解到的,可以用
Command
模拟命令切换到子shell
,但是我不知道切换用户的原理是什么。这跟你的需求正好反了:laughing: 。如果不切换到有权限的用户就没有意义了。我在网上搜到的也是建议使用 shell 脚本:python脚本切换用户就是不知道具体用 rust 如何实现 :joy:。 use std::process::Command; use std::process::Stdio; use std::io::Write;
fn main() { let mut root_password = String::from("root"); println!("{root_password}"); let output = Command::new("sh") .arg("-c") .arg("su - root") .output().unwrap_or_else(|e| { panic!("failed to execute process: {}", e) });
}
配置sudo没必要整怎么麻烦