linux进程权限


五.进程特殊权限UUID、SUID、SGID

回到顶部

我们在第六章曾经谈到特殊权限的 SUID/SGID/SBIT ,虽然第六章已经将这三种特殊权限作了详细 的解释,不过,我们依旧要来探讨的是,那么到底这些权限对于你的『进程』是如何影响的? 此外, 进程可能会使用到系统资源,举例来说,磁盘就是其中一项资源。哪天你在 umount 磁盘时,系统老 是出现『 device is busy 』的字样~到底是怎么回事啊?我们底下就来谈一谈这些和进程有关系的细 节部分:
SUID 的权限其实与进程的相关性非常的大!为什么呢?先来看看 SUID 的程序是如何被一般用户 执行,且具有什么特色呢?
SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
执行者将具有该程序拥有者 (owner) 的权限。
所以说,整个 SUID 的权限会生效是由于『具有该权限的程序被触发』,而我们知道一个程序被触 发会变成进程, 所以啰,执行者可以具有程序拥有者的权限就是在该程序变成进程的那个时候啦! 第六章我们还没谈到进程的概念, 所以你或许那时候会觉得很奇怪,为啥执行了 passwd 后你就具 有 root 的权限呢?不都是一般使用者执行的吗? 这是因为你在触发 passwd 后,会取得一个新的进 程与 PID,该 PID 产生时透过 SUID 来给予该 PID 特殊的权限设定啦! 我们使用 peter 登入系 统且执行 passwd 后,透过工作控制来理解一下!

              [peter@study ~]$ passwd
              Changing password for user peter.
              Changing password for peter
              (current) UNIX password: #这里按下 [ctrl]-z 并且按下 [enter]
              [1]+
              Stopped
              passwd
              [peter@study ~]$ pstree -uA
              systemd-+-ModemManager---2*[{ModemManager}]
              ....(中间省略)....
              |-sshd---sshd---sshd(peter)---bash-+-passwd(root)
              |
              ...(底下省略)...
            
`-pstree从上表的结果我们可以发现,底线的部分是属于 peter 这个一般账号的权限,特殊字体的则是 root 的权限! 但你看到了, passwd 确实是由 bash 衍生出来的!不过就是权限不一样!透过这样的解 析, 你也会比较清楚为何不同程序所产生的权限不同了吧!这是由于『SUID 程序运作过程中产生 的进程』的关系啦!
那么既然 SUID/SGID 的权限是比较可怕的,您该如何查询整个系统的 SUID/SGID 的文件呢? 应 该是还不会忘记吧?使用 find 即可啊!
find / -perm /6000

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读