当前位置:嗨网首页>书籍在线阅读

15-习题

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

9.9 习题

9-1.  在下列每种情况中,假设进程用户ID的初始值分别为real(实际)=1000、effective(有效)=0、saved(保存)=0、file-system(文件系统)=0。当执行这些调用后,用户ID的状态如何?

212.png 9-2.  拥有如下用户ID的进程享有特权吗?请予解释。

real=0 effective=1000 saved=1000 file-system=1000

9-3.  使用setgroups()及库函数从密码文件、组文件(参见8.4节)中获取信息,以实现initgroups()。请注意,欲调用setgroups(),进程必须享有特权。

213.png 9-4.  假设某进程的所有用户标识均为X,执行了用户ID为Y的set-user-ID程序,且Y为非0值,对进程凭证的设置如下:

214.png (这里忽略了文件系统用户ID,因为该ID随有效用户ID的变化而变化。)为执行如下操作,请分别列出对setuid()、seteuid()、setreuid()和setresuid()的调用。

a)挂起和恢复set-user-ID 身份(即将有效用户ID在实际用户ID和保存set-user-ID间切换)。

b)永久放弃set-user-ID身份(即确保将有效用户ID和保存set-user-ID设置为实际用户ID)。

(该练习还需要使用getuid()和geteuid()函数来获取进程的实际用户ID和有效用户ID。)请注意,鉴于上述列出的某些系统调用,部分操作将无法实现。

9-5.  针对执行set-user-ID-root程序的进程,重复上述练习,进程凭证的初始值如下:

215.png ①译者注:即标识符。

②译者注:进程。

③译者注:即属主和属组。