linux下 利用C或C++ 语言调用需要root权限的命令时候,怎么处理。

作者&投稿:席柳 (若有异议请与网页底部的电邮联系)
Linux命令行执行root权限的命令~

3种办法:1、sudo 命令可以执行2、su - root 可以切换到root用户,注意:一定要加 "-",否则,你的环境会有问题!3、直接打命令的绝对路径,比如route,你必须这样打: /sbin/route

chown 用户组:所有者
chmod 用户权限
--------------------------------学习这两个命令吧~

试试以下这种方式:
1. root用户下将目标程序设置为root:root所有权;
2. 将目标程序设置为所有人可访问chmod 777 APPNAME;或者将目标用户加入root组等方式,使用户可执行该程序;
3. root用户下为目标程序设置UID,chmod u+s APPNAME
4. 执行该程序时自动具备root权限

sudo调用时需要用户口令的情况可通过管道解决,形式如下:
echo "PASSWORD" | sudo -S sh -c " CMD1; CMD2;..."

理论上来讲程序不可能自己解决的 ,不依赖人工输入除非你把系统密码固化在里面,但是就算可以做到也不应该这样做/

假如你想要的功能实现了~~那就意味着以下情况可以发生:

1,我现在是普通用户
2,我写了一个C++/C 程序,调用了 root 权限的 popen
3:通过这个root 权限的popen 我执行绝大多数系统命令~那么这时候系统安全性何在?

解决问题的思路在外部给这个程序设置 UID ,粘帖位 ,权限之类的…………而不能依靠程序解决自己的权限问题……

我想到2种方法
1.运行你的C/C++程序时 加上sudo
“sudo ./程序名” 然后输入密码
2.方法1不行的话 程序里用到system时 加上sudo
systme("sudo 命令")
希望可以帮到你

sudo -s
输入密码


靖宇县18454608440: 如何利用Linux控制台调用C/C++程序?
揣俩雅施: shell(控制台)不能直接调用什么函数,只能执行文件或命令 写好的程序都是需要编译链接成2进制文件的 最简单的hello.c #include<stdio.h> int main(){ printf("hello world!"); return 0; } 编辑好后输入gcc -o hello hello.c进行编译 gcc是一般linux都有的编译器 -o后面的参数就是生成的2进制文件名,否则文件名是a.out 然后输入./hello就可以运行了 因为二进制文件是可以直接执行的,需要在前面加上 ./ ,表示当前目录 不知道你具体的要求是怎样的

靖宇县18454608440: Linux中怎么用c/c++做开发可视化程序 -
揣俩雅施: 一般使用Qt (C++)或者 GTK+(C)的库; 1.比如Qt,安装Qt库以及Qt Creator,在Qt Creator中编译以下程序 #include <QApplication> #include <QMainWindow>int main(int argc, char *argv[]) {QApplication a(argc, argv);QMainWindow *w = new ...

靖宇县18454608440: LINUX下可以使用C++么?为什么说C++与linux文化相抵触? -
揣俩雅施: 一、Linux下不仅可以用C++,而且可以很好的用C++.Linux的著名桌面框架KDE就是用QT开发的,QT是C++的一个程序框架.只要有C++库和编译器就可以编写、编译C++程序,这个放心.二、出处:参见《unix编程艺术》对c++的批评....

靖宇县18454608440: 如何在linux下编译/运行C/C++程序 -
揣俩雅施: gcc first.C -o first 说明: 1>编译当前目录下、名字叫做first.C的c源文件; 2>在当前目录下、生成名字叫first(这个名字可以自己随便写、符合linux命名规则就行)的可执行程序;关于运行: 用ls -l 命令,可以看到当前目录下有一个绿色的文件、名字叫first,就是刚刚编译得到的文件; 使用命令“./first”既可运行(无双引号、双引号是用来说明的);不懂再问~

靖宇县18454608440: 在linux平台下基于c/c++可以做什么程序 -
揣俩雅施: windows下可以开发的程序在linux下都可以的

靖宇县18454608440: linux下c和c++一起编译 -
揣俩雅施: 1)至于遇到什么问题,无法估量.不过你c语言的文件是.C后缀,c++的是.cpp后缀.你可以用动态库或者静态库的形式来实现彼此间的调用,也就是把你要用到的C++函数编译成一个库,把要用到的C函数编译成一个库,然后再去调用生成的库文件,已达到使用的目的,如果调用出了问题,那再把问题贴出来看看.如果单从编译的角度来说,最好用makefile(MAK框架)来完成对C和C++文件的编译工作,比较方便.

靖宇县18454608440: linux 命令能用语言c++写吗 -
揣俩雅施: c语言是面向过程的语言,c++是面向对象的,不过面向对象还是需要面向过程的支持的,所以你会了C++,基本上离会c语言就不远了... linux是操作系统,我不知道你说的命令是什么意思,是linux的命令行命令呢?(--即 类似于windows DOS 窗口下的命令;)还是说的是linux提供的函数接口,如 read() write()lseek()函数调用; linux命令行命令是用c语言写出来的命令工具,相当于应用程序,不过用C++也可以写的,不过使用的是C++的编译器进行编译罢了,最后生成的程序都能在linux上面跑

靖宇县18454608440: linux下的c/c++开发 -
揣俩雅施: 我就是做LINUX下的C开发的.准确的说,LINUX下C才是主要的开发语言,但是写应用程序还是要用面向对象的,尤其是图形界面的,不如QT和X和GTK等等.下面说的必须要求你C语言学的很好而且会使用LINUX的情况下.LINUX常用命令要...

靖宇县18454608440: 怎样用学过的C++知识在Linux下编程? -
揣俩雅施: 没什么特殊的,只要是ANSI C、SOCKET之类,基本上都可以在LINUX上用GCC编程.比如:hello.cpp#include <iostream> using namespace std; int main(void) { cout << "hello!\n"; return 0;} 用WINDOWS下的VC6可以编译,在LINUX平台上...

靖宇县18454608440: liunx系统下怎么运用C++
揣俩雅施: 要在Linux下开发C++,你需要两件东西: 1.编译器:G++ 2.编辑器:你可以用KDE自带的KDevelop,不过看似不是很好用. 推荐的作法: 1.确认你的Linux是否有G++编译器,直接在命令行输入: $g++ 就知道了,一般都是有的. 2.到Eclipse的官方网站下载一个CDT(Eclipse 的 C/C++ 开发版) 地址:(Eclipse IDE for C/C++ Developers ) http://www.eclipse.org/downloads/ 然后新建一个项目就可以写C++了 当然,如果你比较骨灰,你也可以直接用 vi 来写代码~

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网