加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_盐城站长网 (https://www.0515zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Linux权限控制的基本原理

发布时间:2021-01-20 01:20:33 所属栏目:站长百科 来源:网络整理
导读:副标题#e# 《Linux权限控制的基本原理》要点: 本文介绍了Linux权限控制的基本原理,希望对您有用。如果有疑问,可以联系我们。 本文主要介绍 Linux 系统中,权限控制的基本原理. 安全模型 在 Linux 系统中,我们所有的操作实质都是在进行进程访问文件的操作.

过程如下:

  1. 假设 man 程序文件被用户 man 所拥有,并且已经被设置了它的 set-user-ID 位,当我们 exec 它的时候,我们有如下情况:
    – real user ID = 我们的用户 UID
    – effective user ID = man 用户 UID
    – saved set-user-ID = man 用户 UID
  2. man 程序会访问需要的配置文件和 man 手册页.这些文件由 man 用户所拥有,但是由于 effective user ID 是 man,文件的访问就被允许了.
  3. 在 man 为我们运行任何命令的时候,它会调用 setuid(getuid())) (getuid() 返回的是 real user id).
    因为我们不是 superuser 进程,这个变化只能改变 effective user ID. 我们会有如下情况:
    现在 man 进程运行的时候把我们得 UID 作为它的 effective user ID. 这也就是说,我们只能访问我们拥有自己权限的文件.也就是说,它能够代表我们安全地执行任何 filter.
    – real user ID = 我们的用户 UID(不会被改变)
    – effective user ID = 我们的用户 UID
    – saved set-user-ID = man 的用户 UID(不会被改变)
  4. 当 filter 做完了的时候,man 会调用 setuid(euid).
    这里,euid 是 man 用户的 UID.(这个 ID 是通过 man 调用 geteuid 来保存的) 这个调用是可以的,因为 setuid 的参数和 saved set-user-ID 是相等的.(这也就是为什么我们需要 saved set-user-ID). 这时候我们会有如下情况:
    – real user ID = 我们的用户 UID(不会被改变)
    – effective user ID = man 的 UID
    – saved set-user-ID = man 的用户 UID(不会被改变)
  5. 由于 effective user ID 是 man,现在 man 程序可以操作它自己的文件了.
    通过这样使用 saved set-user-ID,我们可以在进程开始和结束的时候通过程序文件的 set-user-ID 来使用额外的权限.然而,期间我们却是以我们自己的权限运行的.如果我们无法在最后切换回 saved set-user-ID,我们就可能会在我们运行的时候保留额外的权限.

(编辑:网站开发网_盐城站长网 )

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!