Linux下用GCC程序修改/etc/profile文件环境变量的问题

也可以用system()函数内嵌shell实现,实现设置好权限后打开/etc/profile文件,如果JAVA_HOME、CLASSPATH、不存在,则在文件尾添加:
export JAVA_HOME=/usr/java/jdk-1_5_0_04
export CLASSPATH=/usr/java/jdk-1_5_0_04/lib/dt.jar:/usr/java/jdk-1_5_0_04/lib/tools.jar
export PATH=/usr/java/jdk-1_5_0_04/bin:$PATH
若已存在,则更新其值为等号后面的路径。
请编写出实现相应功能的C源代码。

3L,我就是想知道如何获取这个系统重要文件的权限,麻烦你告诉我好吗?
你用shell亦可以,反正有system()函数。

第1个回答  2009-08-28
1:直接用shell脚本不行?grep + cat +sudo + ...

2:再说不就是个JAVA_HOME吗?二进制程序去修改很不安全,跟病毒似的!
我是不会去运行那些会修改系统重要文件的来路不明的二进制代码的。
3:再说各有各的JAVA_HOME,你不具备修改的权利,用户才有。
你可以在运行你的程序前设定用户环境变量,
但你是没有权利去修改系统配置文件的。
总结:多看看别人怎么做的,不要动不动就C语言实现还要带源码的。
补充:应用程序权限取决于用户的权限,如果是普通用户的话是不可能得到对/etc/profile文件的写操作权限的。
如果一意孤行要用普通用户取得/etc/profile的权限,好像大概可以这么做(年代久远,记不清楚了)
1:先开启一个会话(session),忘了什么函数了
2:(通过某种安全机制漏洞?)调用setuid一类的函数
3:调用哪个函数后大概就取得了最高权限
此外,还有种种的漏洞可以让你获得权限,具体要订阅安全新闻。

所以结论就是:
1:如果用户本身就是root账户登录的,不需要去特意去的权限
2:如果用户帐户是普通权限且在sudoer列表中,可调用sudo
3:Hacking...
第2个回答  2009-08-20
最简单的就是,每次想判断各个PATH是否后存在的时候干脆把profile删掉,然后写个新的进行替换。本回答被提问者采纳
第3个回答  2009-08-19
问题是什么?

Linux下用GCC程序修改\/etc\/profile文件环境变量的问题
1:直接用shell脚本不行?grep + cat +sudo + ...2:再说不就是个JAVA_HOME吗?二进制程序去修改很不安全,跟病毒似的!我是不会去运行那些会修改系统重要文件的来路不明的二进制代码的。3:再说各有各的JAVA_HOME,你不具备修改的权利,用户才有。你可以在运行你的程序前设定用户环境变量,但你...

查看环境变量的命令查看环境变量linux
Linux设置\/删除环境变量方法:bash下设置:export变量名=变量值删除:unset变量名csh下设置:setenv变量名变量值删除:unsetenv变量名很基础的linux知识,建议跟着《linux就该这么学》系统学习下!LinuxU-boot环境变量设置错了,怎么删除修改?在应用程序中按需要对文件进行修改后,再用dd烧回去。开机,结果出...

linux设置环境变量
1.修改\/etc\/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 (1)用文本编辑器打开\/etc\/profile (2)在profile文件末尾加入: JAVA_HOME=\/usr\/share\/jdk1.5.0_05 PATH=$JAVA_HOME\/bin:$PATH CLASSPATH=.:$JAVA_HOME\/lib\/...

linux(centos 8)安装ifort和fftw
在修改环境变量时,推荐使用\/etc\/profile文件进行修改,通过执行命令"vi \/etc\/profile"打开文件,然后在文件末尾加入一行"source \/opt\/intel\/oneapi\/setvars.sh intel64"(根据实际的setvars.sh位置进行调整)。修改\/etc\/profile文件,使其对所有用户生效,避免了使用~\/bashrc文件可能导致的WinSCP登录问题。...

linux的etc\/profile文件的作用是什么
\/etc\/profile:这个文件是每个用户登录时都会运行的环境变量设置 .bashfile:是单用户登录时比如root会运行的 rpm:red hat,fedora,centos这几个发行版使用的安装包,和其它tar.gz的区别是有个文件头,多了一些信息 rpm包多数是二进制文件,可以直接运行的,但tar.gz包很多是源代码,要编译后才能运行,二...

linux查看环境变量的命令linux查看环境变量命令
用户环境变量只对指定的用户生效,一般配置在用户的家目录,全局环境变量配置在\/etc\/profile里 怎么设置golang的环境变量linux?Linux下安装Go开发环境操作步骤第一步:登陆linux第二步:用命令yuminstallmercurial安装mercurial包第三步:用命令yuminstallgit安装git包第四步:用命令yuminstallgcc安装gcc ...

Linux下安装和配置C语言开发环境
如果你已经安装了gcc,那么把gcc的按抓鬼路径加入环境变量export PATH=$PATH:gcc的安装路径。如果没有安装gcc就安装了然后再这么做我的答案解决了你的问题的话,麻烦选择一下。

linux下环境变量C_INCLUDE_PATH在哪个文件里
环境变量定义一般都是\/etc\/profile文件(对所有用户有效),或者在Home目录下的 .bashrc或.profile(只对当前用户有效)一般系统安装了编译工具之后无需设置这些变量编译都不会出现问题,除非你需要添加自己的搜索路径,那么就自己在上面的文件里添加这些变量定义.

我已为arm-linux-gcc配置好环境变量为什么还显示找不到目录
编写完保存就好了 4、使用命令:source \/etc\/profile 使环境变量生效 5、在终端上输入命令 arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了 6、使用命令:arm-linux-gcc -v 会出现下面的错误提示:\/home\/song\/software\/opt\/FriendlyARM\/toolschain\/4.4.3\/bin\/arm-linux-gcc: 15: exec...

查看Linux环境变量linux环境变量查看
linux环境下,用python怎么取得指定用户的环境变量?在执行脚本的时候加sudo,比如你的脚本叫test.py,用sudopythontest.py执行,就可以了,亲测可用 redhat8.2环境变量设置?1.全局的对所有用户都可以的使用的PATH:可以通过修改配置文件:\/etc\/bashrc和\/etc\/profile来时配置,全局的PATH;例如:vi\/etc\/...

相似回答