博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设置用户ID和设置组ID
阅读量:6810 次
发布时间:2019-06-26

本文共 943 字,大约阅读时间需要 3 分钟。

与一个进程关联的ID有6个或更多,如下图所示:

与每个进程相关联的用户ID和组ID

实际用户ID

实际组ID

我们实际是谁

有效用户ID

有效组ID

附加组ID

用于文件访问权限检索

保存的设置用户ID

保存的设置组ID

由exec函数保存
  • 实际用户ID和实际组ID标识我们究竟是谁,这两个字段在登录时取自口令文件中的登录项。通常,在一个登录会话间这些值并不改变,但是超级用户进程有方法改变它们。
  • 有效用户ID,有效组ID以及附加组ID决定了我们的文件访问权限。
  • 保存的设置的用户ID和保存的设置组ID在执行一个程序时包含了有效用户ID和有效组ID的副本。

 

通常,有效用户ID等于实际用户ID,有效组ID等于实际组ID。

每个文件都有一个所有者和组所有者,所有者由stat结构中的st_uid成员表示,组所有者则由st_gid成员表示。

当执行一个程序文件时,进程的有效用户ID通常就是实际用户ID,有效组ID通常是实际组ID。但是可以在文件模式字中设置一个特殊标志,其含义是“当执行此文件时,将进程的有效用户ID设置为文件所有者的用户ID(st_uid)”。与此类似,在文件模式字中可以设置另一位,它使得将执行此文件的进程的有效组ID设置为文件的组所有者(st_gid)。在文件模式字中的这两位被称为设置用户ID(set_user-ID)位和设置组ID(set-group-ID)位。

 

例如,若文件所有者是超级用户,而且设置了该文件的设置用户ID位,然后当该程序由一个进程执行时,则该进程具有超级用户特权。不管执行此文件的进程的实际用户ID是什么,都进行这样的处理。例如,UNIX程序password允许任一用户改变其口令,该程序是一个设置用户ID程序。因为该程序应能将用户的新口令写入口令文件中,而只有超级用户才具有对该文件的写权限,所以需要使用设置用户ID特征。因为运行设置用户ID程序的进程通常得到额外的权限,所以编写这样程序时要特别谨慎。

再返回到stat函数,设置用户ID位及设置组ID位都包含在st_mode值中。这两位可用常量S_ISUID和S_ISGID测试。

转载于:https://www.cnblogs.com/alantu2018/p/8464043.html

你可能感兴趣的文章
wxpython仿写记事本
查看>>
MM 常用表
查看>>
XCode6自定义pch文件
查看>>
正则表达式--简单记忆一
查看>>
字符数组的ss.toString()和new String(ss)的问题
查看>>
CentOS上安装多版本Python问题
查看>>
查看MySQL版本
查看>>
IE8的项目在IE11下 一些功能无法实现的解决方案
查看>>
关于extern的使用
查看>>
Zsh安装及常用操作
查看>>
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path 解决办法
查看>>
Saltstack系列2:Saltstack远程执行命令
查看>>
使用工厂方法模式实现多数据库WinForm手机号码查询器(附源码)
查看>>
C#中窗体的close,dispose,以及application.exit()的区别
查看>>
github的使用 sourceTree
查看>>
iOS POST 上传图片
查看>>
Codeforces Round #435 (Div. 2) E. Mahmoud and Ehab and the function[二分]
查看>>
最全面的 Spring 学习笔记
查看>>
【037】Excel 中遍历修改文件(VBA)
查看>>
nw.js---创建一个点击菜单
查看>>