linux capablity机制
(1)capablity机制的作用
在linux 的原始权限管理下,一个文件(file)对一个指定的用户(usr)来大体上就只有七中权限表现形式。
--- -----> rwx
为了实现对对权限的精细化管理,自2.1版本的linux内核中引入了capablity的概念。
在capablity机制下,一个文件出了原始的权限(rwx)体现外还可以对以下能力分别做以设置
CAP_CHOWN 0 允许改变文件的所有权
CAP_DAC_OVERRIDE 1 忽略对文件的所有DAC访问限制
CAP_DAC_READ_SEARCH 2 忽略所有对读、搜索操作的限制
CAP_FOWNER 3 以最后操作的UID,覆盖文件的先前的UID
CAP_FSETID 4 确保在文件被修改后不修改setuid/setgid位
CAP_KILL 5 允许对不属于自己的进程发送信号
CAP_SETGID 6 允许改变组ID
CAP_SETUID 7 允许改变用户ID
CAP_SETPCAP 8 允许向其它进程转移能力以及删除其它进程的任意能力(只限init进程)
CAP_LINUX_IMMUTABLE 9 允许修改文件的不可修改(IMMUTABLE)和只添加(APPEND-ONLY)属性
CAP_NET_BIND_SERVICE 10 允许绑定到小于1024的端口
CAP_NET_BROADCAST 11 允许网络广播和多播访问(未使用)
CAP_NET_ADMIN 12 允许执行网络管理任务:接口、防火墙和路由等.
CAP_NET_RAW 13 允许使用原始(raw)套接字
CAP_IPC_LOCK 14 允许锁定共享内存片段
CAP_IPC_OWNER 15 忽略IPC所有权检查
CAP_SYS_MODULE 16 插入和删除内核模块
CAP_SYS_RAWIO 17 允许对ioperm/iopl的访问
CAP_SYS_CHROOT 18 允许使用chroot()系统调用
CAP_SYS_PTRACE 19 允许跟踪任何进程
CAP_SYS_PACCT 20 允许配置进程记帐(process accounting)
CAP_SYS_ADMIN 21 允许执行系统管理任务:加载/卸载文件系统、设置磁盘配额、开/关交换设备和文件等.
CAP_SYS_BOOT 22 允许重新启动系统
CAP_SYS_NICE 23 允许提升优先级,设置其它进程的优先级
CAP_SYS_RESOURCE 24 忽略资源限制
CAP_SYS_TIME 25 允许改变系统时钟
CAP_SYS_TTY_CONFIG 26 允许配置TTY设备
CAP_MKNOD 27 允许使用mknod()系统调用
CAP_LEASE 28 允许在文件上建立租借锁
CAP_AUDIT_WRITE 29
CAP_AUDIT_CONTROL 30
CAP_SETFCAP 31 允许在指定的程序上授权能力给其它程序
CAP_MAC_OVERRIDE 32
CAP_MAC_ADMIN 33
CAP_SYSLOG 34
CAP_WAKE_ALARM 35
由上述描述可以发现,在capablity机制下可以对文件进行2的36次方的权限配置,从而实现文件权限的精细化管理。
具体信息可参考linux-3.0.56/include/linux/capability.h和 http://www.cnblogs.com/iamfy/archive/2012/09/20/2694977.html
(2)capablity机制带来的影响
在linux的proc文件系统(参考)下,/proc/pid目录下的文件(如:cmdlin等)文件的属性受启动该进程的用户身份的影响,具体表现为这些文件的所有者及属组默认情况下归属与该进程的启动者。
但在引入capablity机制后,只要修改了文件capablity中的任意一位,/proc/pid下的文件所有者及属组就会默认归属为root,只有一部分仍归属与启动该进程的用户,之所以会这样,应该与capablity的实现机制有关。
阅读(1700) | 评论(0) | 转发(0) |