如何使用 Free Pascal 将 sudo\root 密码传递给 Linux 命令
大多数与此相关的其他问题似乎都与 C 相关。我正在使用 Free Pascal 和 Lazarus IDE,版本分别为 2.4.0 和 0.9.30。
我正在创建一个 GUI,它调用 Linux 命令并将参数传递给该命令。我不希望我的用户必须使用 sudo\root 运行整个 GUI,而是在适当的时间提示输入密码。
我正在使用 TProcess
调用 Linux 命令并传递和读取值。但是,我不知道如何将 sudo 密码从我自己的程序传递给命令?
举个例子,采用以下普通命令行:
dd if=/dev/hda1 of=~/image.dd
Enter sudo password:
我的程序正在调用 dd
,从 GUI 界面向其传递 if
和 of
值- 然后需要收集 sudo
密码并将其传递给 dd
。
Most of the other questions about this seem to be C related. I am using Free Pascal and the Lazarus IDE, version 2.4.0 and 0.9.30 respectively.
I am creating a GUI that calls and passes arguments to a Linux command. I don't want my users to have to run the whole GUI using sudo\root, but rather be prompted for the password at the appropriate time.
I am using TProcess
to call the Linux commands and pass and read values. I can't work out, though, how to pass the sudo
password to the command from my own program?
To give an example, take the following normal command line:
dd if=/dev/hda1 of=~/image.dd
Enter sudo password:
My program is calling dd
, passing it the if
and of
values from a GUI interface - it then needs to gather and pass the sudo
password to dd
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有点旧,但是 - 在命令前面使用 pkexec,例如:
pkexec ls /root
每次您都会看到输入 root 密码的 GUI 信息。
在 LinuxMint 上测试
A little bit old, but - use pkexec in front of your command, like:
pkexec ls /root
You will have each time the GUI info for entering root password.
Tested on LinuxMint
在您已经使用
TProcess
的前提下,您可以使用以下已建立的方法之一来调用su,而不是直接向
/dd
发出命令行调用sudo
:gksudo
(Ubuntu natty 手册页)kdesudo
( Ubuntu 整洁的手册页)On the premise that you're already using
TProcess
, instead of issuing the command line call directly todd
you can use one of the following established methods of invokingsu
/sudo
:gksudo
(Ubuntu natty man page)kdesudo
(Ubuntu natty man page)