前言
上篇随笔讲述了Linux中权限的大致实现机制以及目录权限的相关规则。本文将讲解Linux中的三种特殊权限:SUID,SGID,Sticky权限。看完这两篇文章,你一定会对Linux的权限有个更深的认识。
SUID
当一个文件有了SUID权限,则其他用户使用这个文件的时候,可以临时获取到该文件所有者的权限。
该权限比较经典的一个使用例子是passwd程序:每个用户都可以执行这个程序修改自己的密码,但我们知道密码文件的所有者是root且不允许其他用户接触。那怎么修改密码?有办法!我们给这个文件以SUID权限,这样当用户通过修改密码进程使用这个文件时,可以临时获取root权限,从而修改到自己的密码。
所谓的临时获取到该文件所有者权限实质上就是让使用这个文件的进程的有效用户ID切换成该文件所有者ID。
SGID
和SUID类似,只不过这次的目标权限是组。
Sticky
粘住权限是专门针对目录的。一旦一个目录被赋予了粘住权限,则只有满足以下条件之一的用户可以删除或者更名这个目录下的文件:
1. 拥有此文件
2. 拥有此目录
3. 是超级用户