起因在三月九日时发现野生雪雪发了这张卡的申请进度的截图可是这又与 16.25 岁的本小可爱有什么关系
setcap 'cap_net_bind_service=+ep' /path/to/yourbinary
注:Linux在2.1
版本引入了Capabilities
机制,其目标是消除需要执行某些操作的程序对root帐户的依赖。
传统
UNIX
的信任状模型非常简单,就是“超级用户对普通用户”模型。在这种模型中,一个进程要么什么都能做,要么几乎什么也不能做,这取决于进程的UID
。如果一个进程需要执行绑定到私有端口、加载/卸载内核模块以及管理文件系统等操作时,就需要完全的root
权限。很显然这样做对系统安全存在很大的威胁。UNIX
系统中的SUID
问题就是由这种信任状模型造成的。例如,一个普通用户需要使用ping
命令。这是一个SUID
命令,会以root
的权限运行。
而实际上这个程序只是需要RAW
套接字建立必要ICMP
数据包,除此之外的其它root
权限对这个程序都是没有必要的。如果程序编写不好,就可能被攻击者利用,获得系统的控制权。
使用能力(capability)
可以减小这种风险。系统管理员为了系统的安全可以剥夺root
用户的能力,这样即使root用户也将无法进行某些操作。而这个过程又是不可逆的,也就是说如果一种能力被删除,除非重新启动系统,否则即使root
用户也无法重新添加被删除的能力。
Capability | 介绍 |
---|---|
CAP_CHOWN | 修改文件属主的权限 |
CAP_DAC_OVERRIDE | 忽略文件的DAC访问限制 |
CAP_DAC_READ_SEARCH | 忽略文件读及目录搜索的DAC访问限制 |
CAP_FOWNER | 忽略文件属主ID必须和进程用户ID相匹配的限制 |
CAP_FSETID | 允许设置文件的setuid位 |
CAP_KILL | 允许对不属于自己的进程发送信号 |
CAP_SETGID | 允许改变进程的组ID |
CAP_SETUID | 允许改变进程的用户ID |
CAP_SETPCAP | 允许向其他进程转移能力以及删除其他进程的能力 |
CAP_LINUX_IMMUTABLE | 允许修改文件的IMMUTABLE和APPEND属性标志 |
CAP_NET_BIND_SERVICE | 允许绑定到小于1024的端口 |
CAP_NET_BROADCAST | 允许网络广播和多播访问 |
CAP_NET_ADMIN | 允许执行网络管理任务 |
CAP_NET_RAW | 允许使用原始套接字 |
CAP_IPC_LOCK | 允许锁定共享内存片段 |
CAP_IPC_OWNER | 忽略IPC所有权检查 |
CAP_SYS_MODULE | 允许插入和删除内核模块 |
CAP_SYS_RAWIO | 允许直接访问/devport,/dev/mem,/dev/kmem及原始块设备 |
CAP_SYS_CHROOT | 允许使用chroot()系统调用 |
CAP_SYS_PTRACE | 允许跟踪任何进程 |
CAP_SYS_PACCT | 允许执行进程的BSD式审计 |
CAP_SYS_ADMIN | 允许执行系统管理任务,如加载或卸载文件系统、设置磁盘配额等 |
CAP_SYS_BOOT | 允许重新启动系统 |
CAP_SYS_NICE | 允许提升优先级及设置其他进程的优先级 |
CAP_SYS_RESOURCE | 忽略资源限制 |
CAP_SYS_TIME | 允许改变系统时钟 |
CAP_SYS_TTY_CONFIG | 允许配置TTY设备 |
CAP_MKNOD | 允许使用mknod()系统调用 |
CAP_LEASE | 允许修改文件锁的FL_LEASE标志 |