LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1412|回复: 10

根据进程号获得进程文件的路径

[复制链接]
发表于 2007-4-4 14:31:15 | 显示全部楼层 |阅读模式
在linux中可以readlink来读取/proc/<pid>/exe来实现, 但是如果你登录的用户不是root用户或者不和进程的用户相同就没有读/proc/<pid>/exe的权限,还有什么别的方法读出路径吗?
发表于 2007-4-4 22:39:30 | 显示全部楼层
不能获取root权限再读吗
setuid(0);
程序加上set-user-id权限:chmod +s your_programe

我也没试过这样,理论上应该就是这样
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-5 08:27:57 | 显示全部楼层
我在主程序里加了:
setuid(0);
system("chmod +s main.x");//main.x是我的主程序名,
但好像必须在root下编译,再运行一遍才可以到其他用户下运行。
回复 支持 反对

使用道具 举报

发表于 2007-4-6 11:12:14 | 显示全部楼层
进程文件? 什么东西?
难道不应该在 cmdline 文件里吗?
回复 支持 反对

使用道具 举报

发表于 2007-4-9 18:45:35 | 显示全部楼层
我这里普通用户可以读自己进程的/proc下相关文件阿
回复 支持 反对

使用道具 举报

发表于 2007-4-10 01:18:46 | 显示全部楼层
Post by lixiaoya
我在主程序里加了:
setuid(0);
system("chmod +s main.x");//main.x是我的主程序名,
但好像必须在root下编译,再运行一遍才可以到其他用户下运行。


是要在root下编译
干嘛要在程序里chmod
安装时候也可以设置权限阿
如果是make install安装就在makefile里chmod 4755,或者install -m 4755
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-11 08:44:18 | 显示全部楼层
我现在就是不想在root用户下编译运行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-11 09:38:48 | 显示全部楼层
我在程序中执行setudi(0) 它的返回值都是-1,好像不能获得root权限。
回复 支持 反对

使用道具 举报

发表于 2007-4-12 09:03:05 | 显示全部楼层
int main( int argv, char **argv )
其中 argv[0] 是可执行文件的路径,不知道不同的编译器实现的会不会有不同的结果。
解析出来后保存到全局变量里面后边程序使用。
回复 支持 反对

使用道具 举报

发表于 2007-4-12 13:37:17 | 显示全部楼层
我这里是argv[0] 只能获得自己在终端敲入的命令;访问root的文件的话,还是建议用sudo ./自己的程序吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表