当前位置:  技术问答>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吗?

|
你自己在代码中写错了。
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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • CSS属性参考手册 iis7站长之家
  • vmware里装了Ubuntu后Ubuntu.vmdk文件大小和Ubuntu系统大小区别?
  • Ubuntu查看系统信息命令介绍
  • win7与Ubuntu双系统卸载ubuntu
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 装ubuntu的时候选安装ubuntu与win7共存与选其他选项
  • Ubuntu查看硬盘,分区相关命令介绍
  • winxp+ubuntu32+ubuntu64是否可以这样装系统?
  • Ubuntu系统安装及升级命令
  • ubuntu能安装rpm包吗&&ubuntu的intel 945显卡驱动
  • Ubuntu Precise 12.04 (LTS) (64-bit)下面安装docker
  • 在win7下装ubuntu成功后进不去ubuntu!!??
  • Ubuntu Raring 13.04 和 Saucy 13.10 (64 bit)下面安装docker
  • 原来已安装好ubuntu,因系统崩溃,重装WINXP系统,如何再次登录ubuntu系统?
  • Ubuntu Trusty 14.04 (LTS) 下面安装docker及依赖关系检查
  • ubuntu10.10 和 ubuntu 10.04.1
  • Ubuntu Vivid 15.04 下面安装docker的详细步骤
  • Ubuntu 中的 ubuntu one 算不算的上云?
  • ubuntu系统中软件安装、卸载以及查询是否已经安装某个软件包的方法
  • 安装ubuntu11.04时,过了ubuntu的logo花屏,怎么解决
  • Ubuntu查看内存,进程相关命令介绍
  • 我想根据ubuntu官网上介绍的方法安装ubuntu,是否应该先分一块硬盘空间?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,