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

来源:百度知道 编辑:UC知道 时间:2024/06/12 14:05:40
也可以用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()函数。

最简单的就是,每次想判断各个PATH是否后存在的时候干脆把profile删掉,然后写个新的进行替换。

问题是什么?

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...