当前位置: 技术问答>linux和unix
ubuntu getuid() 和 geteuid()问题
来源: 互联网 发布时间:2017-03-18
本文导语: 以下代码在ubuntu上运行结果令我很费解。。。。 #include #include #include #include #include int main(int argc,char *argv[]) { struct stat buf; uid_t euid; uid_t uid = getuid(); printf("%dn",uid); euid = getegid(); printf("%dn",euid); if(s...
以下代码在ubuntu上运行结果令我很费解。。。。
#include
#include
#include
#include
#include
int main(int argc,char *argv[]) {
struct stat buf;
uid_t euid;
uid_t uid = getuid();
printf("%dn",uid);
euid = getegid();
printf("%dn",euid);
if(stat(argv[0],&buf) == -1) {
perror("stat");
exit(1);
}
if(buf.st_mode & S_ISUID) {
printf("setuidn");
}
else {
printf("没设置。n");
}
return EXIT_SUCCESS;
}
以下是我的两个用户:jimmy-cao 用户id:1000 组id:1000(这是登录用户)
jimmy 用户id:1001 组id:1001
然后我依次执行以下命令:
sudo chown root a.out (使可执行文件属于根用户)
sudo chmod u+s a.out
sudo chmod g+s a.out
然后一jimmy登录运行./a.out结果确显示有效用户id是jimmmy-cao的id,(我预想的是根用户id就是0)这是为什么?
结果如下:
1001
1000
setuid
ps:还有个问题chmod o+s为什么没做用?是这一位根本就不能设置为s吗?
#include
#include
#include
#include
#include
int main(int argc,char *argv[]) {
struct stat buf;
uid_t euid;
uid_t uid = getuid();
printf("%dn",uid);
euid = getegid();
printf("%dn",euid);
if(stat(argv[0],&buf) == -1) {
perror("stat");
exit(1);
}
if(buf.st_mode & S_ISUID) {
printf("setuidn");
}
else {
printf("没设置。n");
}
return EXIT_SUCCESS;
}
以下是我的两个用户:jimmy-cao 用户id:1000 组id:1000(这是登录用户)
jimmy 用户id:1001 组id:1001
然后我依次执行以下命令:
sudo chown root a.out (使可执行文件属于根用户)
sudo chmod u+s a.out
sudo chmod g+s a.out
然后一jimmy登录运行./a.out结果确显示有效用户id是jimmmy-cao的id,(我预想的是根用户id就是0)这是为什么?
结果如下:
1001
1000
setuid
ps:还有个问题chmod o+s为什么没做用?是这一位根本就不能设置为s吗?
|
你自己在代码中写错了。
uid_t uid = getuid();//这句换成geteuid才会uid = 0;
euid = getegid(); //这句是有效组ID,,
你使用ll a.out查看下他的属性。 我根据你的结果推测a.out的所属用户是root,,,但是所属组还是jimmy-cao
所以你的getegid的结果是1000
因为sudo chown root a.out只是改变了所属用户
sudo chown root:root a.out改变用户和组
uid_t uid = getuid();//这句换成geteuid才会uid = 0;
euid = getegid(); //这句是有效组ID,,
你使用ll a.out查看下他的属性。 我根据你的结果推测a.out的所属用户是root,,,但是所属组还是jimmy-cao
所以你的getegid的结果是1000
因为sudo chown root a.out只是改变了所属用户
sudo chown root:root a.out改变用户和组
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。