标签:linux 流程 网易 绕过 main grant line 一个 error
传统上,Linux内核通过以下两类来区分其进程:
特权进程:这些进程使用户可以绕过所有内核权限检查。
非特权进程:这些进程需要进行完全权限检查,例如有效的UID,GID和补充组列表。
授予对用户进程的完全特权访问权限可能会导致系统滥用,例如未经授权的数据更改,后门,更改的ACL等。Linux 2.2附带了一个称为功能的解决方案。功能使开发人员可以授予二进制文件/文件特定的权限。
假设我们要使用非特权用户在端口80上启动Python的Simple HTTP Server模块。如果我们尝试在不授予任何功能的情况下开始该过程,则会收到以下错误:
anshulp@dzone-vagrant-box:$ python -m SimpleHTTPServer 80 Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/usr/lib/python2.7/SimpleHTTPServer.py", line 235, in <module> test() File "/usr/lib/python2.7/SimpleHTTPServer.py", line 231, in test BaseHTTPServer.test(HandlerClass, ServerClass) File "/usr/lib/python2.7/BaseHTTPServer.py", line 606, in test httpd = ServerClass(server_address, HandlerClass) File "/usr/lib/python2.7/SocketServer.py", line 417, in __init__ self.server_bind() File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind SocketServer.TCPServer.server_bind(self) File "/usr/lib/python2.7/SocketServer.py", line 431, in server_bind self.socket.bind(self.server_address) File "/usr/lib/python2.7/socket.py", line 228, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 13] Permission denied
让我们将CAP_NET_BIND_SERVICE
功能添加到我们的Python二进制文件中。
sudo setcap ‘CAP_NET_BIND_SERVICE+ep‘ /usr/bin/python2.7
上面的命令指出我们正在向 文件添加 CAP_NET_BIND_SERVICE
功能 /usr/bin/python2.7
。 +ep
表示文件有效且已允许( "-"
将其删除)。
现在,让我们尝试再次在端口80上运行Python Simple HTTP Server模块:
anshulp@dzone-vagrant-box:$ python -m SimpleHTTPServer 80 Serving HTTP on 0.0.0.0 port 80 ... 172.28.128.1 - - [06/Jul/2017 11:30:13] "GET / HTTP/1.1" 200 - 172.28.128.1 - - [06/Jul/2017 11:30:13] code 404, message File not found 172.28.128.1 - - [06/Jul/2017 11:30:13] "GET /favicon.ico HTTP/1.1" 404 - 172.28.128.1 - - [06/Jul/2017 11:30:13] code 404, message File not found 172.28.128.1 - - [06/Jul/2017 11:30:13] "GET /favicon.ico HTTP/1.1" 404 -
现在,我们可以通过非特权用户通过特权端口80提供流量。
在撰写本文时,可以根据需求分配40多种功能。
有3种模式为功能:
e:有效- 表示该功能已“激活”。
p:允许- 表示可以使用该功能。
i:已继承- 表示此功能由子元素/子流程继承。
功能提供了一种简洁有效的方法,可以将特权权限分配给非特权用户。
好文推荐:
标签:linux 流程 网易 绕过 main grant line 一个 error
原文地址:https://www.cnblogs.com/douhua7458/p/13048986.html