4.7进程的权能

    Linux用“权能(capability)”表示一进程所具有的权力。一种权能仅仅是一个标志,它表明是否允许进程执行一个特定的操作或一组特定的操作。这个模型不同于传统的“超级用户对普通用户”模型,在后一种模型中,一个进程要么能做任何事情,要么什么也不能做,这取决于它的有效UID。也就是说,超级用户与普通用户的划分过于笼统。如表4.13给出了在Linux内核中已定义的权能。

4.13 进程的权能

名字

描述

CAP_CHOWN

忽略对文件和组的拥有者进行改变的限制

CAP_DAC_OVERRIDE

忽略文件的访问许可权

CAP_DAC_READ_SEARCH

忽略文件/目录读和搜索的许可权

CAP_FOWNER

忽略对文件拥有者的限制

CAP_FSETID

忽略对setidsetgid标志的限制

CAP_KILL

忽略对信号挂起的限制

CAP_SETGID

允许 setgid标志的操作

CAP_SETUID

允许 setuid 标志的操作

CAP_SETPCAP

转移/删除对其它进程所许可的权能

CAP_LINUX_IMMUTABLE

允许对仅追加和不可变文件的修改

CAP_NET_BIND_SERVICE

允许捆绑到低于1024TCP/UDP的套节字

CAP_NET_BROADCAST

 允许网络广播和监听多点传送

CAP_NET_ADMIN

允许一般的网络管理。

CAP_NET_RAW

允许使用RAWPACKET套节字

CAP_IPC_LOCK

允许页和共享内存的加锁

CAP_IPC_OWNER

跳过IPC拥有者的检查

CAP_SYS_MODULE

允许内核模块的插入和删除

CAP_SYS_RAWIO

允许通过ioperm(  ) iopl(  )访问I/O端口

CAP_SYS_CHROOT

允许使用chroot(  )

CAP_SYS_PTRACE

允许在任何进程上使用 ptrace(  )

 CAP_SYS_PACCT

允许配置进程的计账

CAP_SYS_ADMIN

允许一般的系统管理

CAP_SYS_BOOT

允许使用reboot(  )

CAP_SYS_NICE

忽略对 nice(  )的限制

CAP_SYS_RESOURCE

忽略对几个资源使用的限制

CAP_SYS_TIME

允许系统时钟和实时时钟的操作

CAP_SYS_TTY_CONFIG

允许配置tty设备

 

   任何时候,每个进程只需要有限种权能,这是其主要优势。因此,即使一位有恶意的用户使用有潜在错误程序,他也只能非法地执行有限操作类型。

   例如,假定一个有潜在错误的程序只有CAP_SYS_TIME权能。在这种情况下,利用其错误的恶意用户只能在非法地改变实时时钟和系统时钟方面获得成功。他并不能执行其它任何特权的操作。