在本文中,我们快速浏览了Linux内核的许可流程,并向您展示了如何使用它们来保护您的网页或应用安全

传统上,Linux内核通过以下两类来区分其进程:

  • 特权进程:这些进程使用户可以绕过所有内核权限检查。

  • 非特权进程:这些进程需要进行完全权限检查,例如有效的UID,GID和补充组列表。

授予对用户进程的完全特权访问权限可能会导致系统滥用,例如未经授权的数据更改,后门,更改的ACL等。Linux 2.2附带了一个称为功能的解决方案。功能使开发人员可以授予二进制文件/文件特定的权限。

假设我们要使用非特权用户在端口80上启动Python的Simple HTTP Server模块。如果我们尝试在不授予任何功能的情况下开始该过程,则会收到以下错误:

anshulp@dzone-vagrant-box:$ python -m SimpleHTTPServer
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line , in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line , in _run_code
exec code in run_globals
File "/usr/lib/python2.7/SimpleHTTPServer.py", line , in <module>
test()
File "/usr/lib/python2.7/SimpleHTTPServer.py", line , in test
BaseHTTPServer.test(HandlerClass, ServerClass)
File "/usr/lib/python2.7/BaseHTTPServer.py", line , in test
httpd = ServerClass(server_address, HandlerClass)
File "/usr/lib/python2.7/SocketServer.py", line , in __init__
self.server_bind()
File "/usr/lib/python2.7/BaseHTTPServer.py", line , in server_bind
SocketServer.TCPServer.server_bind(self)
File "/usr/lib/python2.7/SocketServer.py", line , in server_bind
self.socket.bind(self.server_address)
File "/usr/lib/python2.7/socket.py", line , in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno ] Permission denied

让我们将CAP_NET_BIND_SERVICE 功能添加到我们的Python二进制文件中。

sudo setcap 'CAP_NET_BIND_SERVICE+ep' /usr/bin/python2.

上面的命令指出我们正在向 文件添加   CAP_NET_BIND_SERVICE  功能  /usr/bin/python2.7。 +ep 表示文件有效且已允许(  "-"  将其删除)。

现在,让我们尝试再次在端口80上运行Python Simple HTTP Server模块:

anshulp@dzone-vagrant-box:$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port ...
172.28.128.1 - - [/Jul/ ::] "GET / HTTP/1.1" -
172.28.128.1 - - [/Jul/ ::] code , message File not found
172.28.128.1 - - [/Jul/ ::] "GET /favicon.ico HTTP/1.1" -
172.28.128.1 - - [/Jul/ ::] code , message File not found
172.28.128.1 - - [/Jul/ ::] "GET /favicon.ico HTTP/1.1" -

现在,我们可以通过非特权用户通过特权端口80提供流量。

在撰写本文时,可以根据需求分配40多种功能。

有3种模式为功能:

  •  e:有效-  表示该功能已“激活”。

  • p:允许-  表示可以使用该功能。

  • i:已继承-  表示此功能由子元素/子流程继承。

功能提供了一种简洁有效的方法,可以将特权权限分配给非特权用户。

好文推荐:

整整127页!这是一份阿里云内部超全K8s实战手册

大厂0距离:网易 Linux 运维工程师面试真题,内含答案

牛x公司有一群牛x的人,鹅厂大佬如何玩转技术?

Linux内核功能介绍及如何使用保护您的网页安全的更多相关文章

  1. Linux内核策略介绍

      Linux内核策略介绍学习笔记   主要内容 硬件 策略 CPU 进程调度.系统调用.中断 内存 内存管理 外存 文件IO 网络 协议栈 其他 时间管理 进程调度 内核的运行时间 系统启动.中断发 ...

  2. Linux内核版本介绍与查询

    Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息 ...

  3. Linux内核策略介绍学习笔记

    主要内容 硬件 策略 CPU 进程调度.系统调用.中断 内存 内存管理 外存 文件IO 网络 协议栈 其他 时间管理 进程调度 内核的运行时间 系统启动.中断发生.系统调用以及内核线程. 进程和线程的 ...

  4. Linux 内核剖析

    https://www.ibm.com/developerworks/cn/linux/l-linux-kernel/ 由于本文的目标是对 Linux 内核进行介绍并探索其体系结构和主要组件,因此首先 ...

  5. Linux内核编译与安装

    2013-04-16    Linux内核介绍  Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统.内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制.L ...

  6. 20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS

    Linux内核分析第三周  构造一个简单的Linux系统MenuOS 前提回顾 1.计算机是如何工作的三个法宝 1.存储程序计算机 2.函数调用堆栈 3.中断 2.操作系统的两把宝剑 中断上下文的切换 ...

  7. linux内核分析(网课期末&地面课期中)

    堆栈变化过程: Linux内核分析——计算机是如何工作的 计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有 ...

  8. 精《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #7 Cgroup、Namespace、Linux容器

    HACK #7 Cgroup.Namespace.Linux容器 本节将介绍Cgroup与Namespace以及通过这两个功能实现的容器功能.CgroupCgroup(control group)是将 ...

  9. Linux内核分析实验三----跟踪分析Linux内核的启动过程

    一.Linux内核源代码介绍 1.根目录 arch/x86目录下的代码是我们重点关注的,arch中包括支持不同CPU的源代码. init目录下包含内核启动相关的代码,如main.c(start_ker ...

随机推荐

  1. Centos中使用virtualenvwrapper

    Centos中使用virtualenvwrapper python特有的一种软件环境,创建多个python环境,各个环境之间完全隔离,互不影响.它可以用来解决Python项目开发和运行过程中的依赖项和 ...

  2. Python 网络爬虫实战:爬取 B站《全职高手》20万条评论数据

    本周我们的目标是:B站(哔哩哔哩弹幕网 https://www.bilibili.com )视频评论数据. 我们都知道,B站有很多号称“镇站之宝”的视频,拥有着数量极其恐怖的评论和弹幕.所以这次我们的 ...

  3. Java架构师如何学习?

    引言 古人云:"活到老,学到老."互联网算是最辛苦的行业之一,"加班"对工程师来说已是"家常便饭",同时互联网技术又日新月异,很多工程师都疲 ...

  4. .NETCore微服务探寻(三) - 分布式日志

    前言 一直以来对于.NETCore微服务相关的技术栈都处于一个浅尝辄止的了解阶段,在现实工作中也对于微服务也一直没有使用的业务环境,所以一直也没有整合过一个完整的基于.NETCore技术栈的微服务项目 ...

  5. 【面试篇】寒冬求职之你必须要懂的Web安全

    https://segmentfault.com/a/1190000019158228 随着互联网的发展,各种Web应用变得越来越复杂,满足了用户的各种需求的同时,各种网络安全问题也接踵而至.作为前端 ...

  6. layer.open弹框中的表单数据无法获取

    layer.open弹框中的表单数据无法获取 表单数据模板 layer.open() 页面效果: 当点击确定后,radio和textarea获取的值总是为空,解决办法: var setPriCustB ...

  7. Spring IoC 默认标签解析

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...

  8. 【秒懂Java】【第1章_初识Java】02_软件开发

    通过上一篇文章<01_编程语言>,我们了解到 Java是众多编程语言中的其中一种 编程语言可以用来开发软件 因此,我们即将要学习的Java技术,是属于软件开发的范畴.那软件开发的前景如何呢 ...

  9. Oracle 11g各种服务作用以及哪些需要开启

    Windwos server 2012 R2上成功安装Oracle 11g后共有7个服务,如果全局数据库名为orcl,则Oracle服务分别为 Oracle ORCL VSSWriter Servic ...

  10. 让对象拥有状态——C#中的状态模式

    大家好,老胡又在博客和大家见面了,在聊今天的主角之前,老胡先给大家讲一个以前发生的故事.   真实的故事 当老胡还是小胡的时候,跟随团队一起开发一款游戏.这款游戏是一款末日生存类游戏,玩家可以 收集资 ...