2015-06-23 41 views
0

我有一个C++代码,我需要从它运行一个命令来调整系统时间。所以我想我的C++代码中使用system(“su root -c date hh:mm”)命令。
问题是,当我在终端中写入'su root -c date hh:mm'之后,它需要密码,以及如何将系统命令的密码传递到一行中? 或其他解决方案... 谢谢!linux以root用户身份运行命令作为普通用户运行的c代码

+0

除了如果密码可以像这样“传递”将存在的大安全漏洞,那么'root'用户没有密码的系统呢? –

+0

你最好解释为什么你的无特权程序需要做这个动作。 –

回答

1

解决方法是修改sudoers文件并从特定脚本中删除用户标识中密码的要求以使其具有sudo特权。

输入sudo visudo

在此之后,在下面的方式添加细节。

username ALL=(ALL) NOPASSWD: /path/to/script

另一种方法是对管内的密码作为输入提供给须藤命令。我不建议这样做,因为您会以纯文本形式输入密码。你可以使用一个变量来存储密码,然后访问它,但它仍然不是一个安全的方法。你可以运行命令为

echo $PASSWORD | sudo ./a.out 
+0

这是一个很好的建议,但问题'sudo visudo'在我的linux发行版上无法正常工作,我尝试过几种组合,'root su - visudo'以及更多但是......没有。 – Ron

+0

@Ron,建议的第二种方法呢? – therainmaker

+0

第二种方法(带回声)很好,很好。第一个更好,但是我不能在该linux上授予特权。 谢谢! – Ron

相关问题