Linux的权限比较复杂,不仅有权限存在,而且还存在能力(CAP),它们组合起来影响一个进程(即程序执行)的权限。
对于文件一般有读,写,执行等权限。
Linux的能力较多,比较复发,Linux有用户和组的的概念,多个用户可以属于一个组,而一个用户可以属于多个组来获得该组的部分权限。
就一般影响权限的大概就是文件的属主ID,属组ID,有效用户ID,有效组ID,设置用户ID,设置组ID,保存的设置用户ID,保存的设置组ID,这些权限不是固定不变的,在程序运行时可以在这些权限中跳跃。下面一一介绍。
属主和属组ID:顾名思义为文件或进程的所有者用户ID,表示该文件和进程是具体属于哪个用户。
有效用户和有效组ID:真实影响文件和进程的访问和执行权限。一般等于属主ID和属组ID。
保存的设置用户ID和保存的设置组ID:如果未设置,则进程运行时从有效用户ID和有效组ID复制而来,用来提升权限的。
设置用户ID和设置组ID:如果设置,可通过ls -l选项看到文件权限中有小s,依然是用来提权的。
文件系统ID:该选项已被Linux废弃,目前就等于属主ID。用来描述对文件系统的的操作权限。
当前进程的有效ID可以在有效ID和设置ID之间切换,如果当前进程设置ID为特权用户root,即便属主ID不是root用户,依然可以通过设置ID在当前用户和root用户权限之间切换,很多恶意或病毒程序通过设置ID来提升权限,所以设置ID是一个非常危险的选项,但它确实提供了一种方法来改变程序的执行权限。