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

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

与一个进程关联的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测试。

转载地址:http://ddjcx.baihongyu.com/

你可能感兴趣的文章
685. Redundant Connection II
查看>>
数据库——订单表中有不同类型的商品,表的设计
查看>>
java传值和传址
查看>>
【CF】7 Beta Round D. Palindrome Degree
查看>>
UITableView中使用selectRowAtIndexPath: animated: scrollPosition:出现的问题
查看>>
c# 实现ComboBox自动模糊匹配
查看>>
使用WITH AS提高性能简化嵌套SQL
查看>>
15.02.13-代码小技巧
查看>>
android 与JS之间的交互
查看>>
插入排序
查看>>
pytorch导入错误so: undefined symbol: _Z11libshm_initPKc
查看>>
Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)
查看>>
动态实现类(对数据库的增删改查)
查看>>
再次写给VC++ Windows开发者
查看>>
nux driver model ----- platform
查看>>
js正则
查看>>
freopen 等编程问题
查看>>
Bitmap Image Graphics
查看>>
drf4 视图与路由组件
查看>>
drf实现图片验证码功能
查看>>