UNIX 实际用户id 有效用户id 保存设置id
2012-08-02 10:31
232 查看
我试试看改过是什么效果。。。
刚刚看到这里的时候对于这几个id,感觉很简单,没有过多的关注他们。后来再看到的时候就有些不懂了。重新看了一遍后,将内容放到网上给大家共享,有什么不对的请各位斧正哈。
首先说说(这里只讲解user id,其实组id基本一致):
real user id: 实际用户id,指的是现在进程的使用者是谁。
effective user id:有效用户id,指进程执行时对文件的访问权限,程序运行时,关心该id而不是real user id
saved set-userid: 保存设置用户ID,作为effective userID的副本,在执行exec调用时后能重新恢复原来的effectiv user ID.
上面三个id都是关于进程的。
而set-user-id 这个是关于文件的一个标志位。一般real user id和effective user id 都是相同的,但如果设置了set-user-id,则effective user id 就和文件所有者的id相同,这样real user id 和effecive user id 就不一定相同了。而这类设置了set-user-id的程序就称为SUID程序了。这种程序很有用:比如说passwd文件,文件所有者是root,而一般用户要修改自己的密码,但是没有权限,这里就用到了上面的方法,在passwd的文件设置set-user-id位,这样无论那个用户在修改自己密码的时候,effective
user id 都变成了root了。
在这里呢?又不得不说下setuid(uid);
对于这个函数很是纠结:1.对于使用这个函数是超级用户的时候,它将real user id 和effective user id 和saved set-user-id设置为uid。
2. 对于使用这个函数是一般用户,且real user id 或saved set-user-id和这里的uid 相同,则将effective user id设置为uid,real user id和saved
set- user-id都不该变。
3. 对于使用这个函数是一般用户,且real user id 和这里的uid 不相同,则报错在errno设置EPERM,并返回-1。
另外还得注意的是:
1. real user id 只能超级用户设置。比如登陆login进程块。
2. 当程序文件设置了set user id 的时候,exec函数才会修改effective user id 的值,如果没有设置,则保持原来的值。任意时刻都可以调用
setuid函数,将effective user id 设置为real user id 或者是saved set-user-id。
3. 对于saved set-user-id,是通过exec 执行从effective user id 复制过来的。
对于例子,可以看看passwd 或者是man还有很多,自己下来理解一下这个过程吧。
刚刚看到这里的时候对于这几个id,感觉很简单,没有过多的关注他们。后来再看到的时候就有些不懂了。重新看了一遍后,将内容放到网上给大家共享,有什么不对的请各位斧正哈。
首先说说(这里只讲解user id,其实组id基本一致):
real user id: 实际用户id,指的是现在进程的使用者是谁。
effective user id:有效用户id,指进程执行时对文件的访问权限,程序运行时,关心该id而不是real user id
saved set-userid: 保存设置用户ID,作为effective userID的副本,在执行exec调用时后能重新恢复原来的effectiv user ID.
上面三个id都是关于进程的。
而set-user-id 这个是关于文件的一个标志位。一般real user id和effective user id 都是相同的,但如果设置了set-user-id,则effective user id 就和文件所有者的id相同,这样real user id 和effecive user id 就不一定相同了。而这类设置了set-user-id的程序就称为SUID程序了。这种程序很有用:比如说passwd文件,文件所有者是root,而一般用户要修改自己的密码,但是没有权限,这里就用到了上面的方法,在passwd的文件设置set-user-id位,这样无论那个用户在修改自己密码的时候,effective
user id 都变成了root了。
在这里呢?又不得不说下setuid(uid);
对于这个函数很是纠结:1.对于使用这个函数是超级用户的时候,它将real user id 和effective user id 和saved set-user-id设置为uid。
2. 对于使用这个函数是一般用户,且real user id 或saved set-user-id和这里的uid 相同,则将effective user id设置为uid,real user id和saved
set- user-id都不该变。
3. 对于使用这个函数是一般用户,且real user id 和这里的uid 不相同,则报错在errno设置EPERM,并返回-1。
另外还得注意的是:
1. real user id 只能超级用户设置。比如登陆login进程块。
2. 当程序文件设置了set user id 的时候,exec函数才会修改effective user id 的值,如果没有设置,则保持原来的值。任意时刻都可以调用
setuid函数,将effective user id 设置为real user id 或者是saved set-user-id。
3. 对于saved set-user-id,是通过exec 执行从effective user id 复制过来的。
对于例子,可以看看passwd 或者是man还有很多,自己下来理解一下这个过程吧。
相关文章推荐
- 【UNIX】实际用户ID,有效用户ID,保存的设置用户ID
- unix的实际用户id,有效用户id,及保存的设置用户id
- 无死角理解保存设置用户ID,设置用户ID位,有效用户ID,实际用户ID
- linux 实际用户ID、有效用户ID以及保存的设置用户ID
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别
- 关于unix下实际用户ID、有效用户ID、设置用户ID、文件所有者ID的一点理解
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别
- 实际用户ID,有效用户ID与保存设置用户ID
- 实际用户id(real user id)、有效用户id(effective user id)和保存的设置用户id(saved set-user-id)
- 实际用户ID,有效用户ID与保存设置用户ID
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别
- 实际用户ID,有效用户ID,保存的设置用户ID
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”的区别
- 掌握Linux之实际用户ID 有效的用户ID 保存的设置用户ID
- linux 中实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语
- 实际用户ID”、“有效用户ID”和“保存的设置用户ID”
- 实际用户ID,有效用户ID与保存设置用户ID(转自:http://blog.csdn.net/dlutbrucezhang/article/details/8806015)
- 用户实际ID,有效用户ID,保存的设置用户ID(zhuan)
- 讨论unix进程的设置用户ID,有效用户ID,保存设置ID,文件的设置位