nmap 错误 Couldn't open a raw socket. Error: Permission denied (13)
时间:2023-5-28 22:27 作者:admin 分类: Linux
Nmap简介
给不知道的朋友做个简述
Nmap(Network Mapper)是一个网络扫描器和主机检测工具,可以用来探测目标主机的开放端口、运行的服务以及操作系统信息等。
Nmap 提供了多种扫描技术,包括TCP SYN 扫描、TCP 连接扫描、UDP 扫描、操作系统检测、版本检测等。其功能强大,因此被广泛应用于网络安全领域,可以用来检测网络漏洞、分析网络拓扑结构、评估网络性能等。
Nmap 可以在 Windows、Linux、Mac OS X 等多种操作系统上运行,并提供了命令行和图形用户界面两种使用方式。Nmap 的命令行语法比较复杂,需要掌握一定的基础知识才能灵活使用。
总之,Nmap 是一款非常实用的网络扫描工具,可以帮助用户快速获取目标主机的重要信息,从而加强网络安全防护。
安装方式
使用 apt 或 yum 安装
在大多数 Linux 发行版中,可以使用软件包管理器(如 apt、yum、dnf 等)来安装 Nmap。
在 Debian / Ubuntu 上安装 Nmap
在 Debian / Ubuntu 系统中,可以使用以下命令安装 Nmap:
sudo apt update
sudo apt install nmap
在 CentOS / Fedora 上安装 Nmap
在 CentOS / Fedora 系统中,可以使用以下命令安装 Nmap:
sudo yum install nmap # CentOS 7 及更早版本
sudo dnf install nmap # CentOS 8 / Fedora
在 Arch Linux 上安装 Nmap
在 Arch Linux 系统中,可以使用以下命令安装 Nmap:
sudo pacman -S nmap
安装完成后,您可以通过在终端窗口中输入 nmap
命令来验证 Nmap 是否已成功安装。如果 Nmap 安装正确,则应该看到有关 Nmap 的相关信息和命令格式。
使用 snap 安装
使用 snap
可以在多个 Linux 发行版上安装 Nmap,包括 Ubuntu、Debian、Fedora 等。下面是在 Ubuntu 上使用 snap
安装 Nmap 的步骤:
-
如果您的系统还没有安装
snapd
,可以通过以下命令安装:sudo apt update sudo apt install snapd
-
安装 Nmap 应用程序,可以通过以下命令完成:
sudo snap install nmap
-
安装完成后,您可以在终端中输入
nmap
命令来验证 Nmap 是否已成功安装。 -
您也可以使用
snap list
命令查看已安装的snap
应用程序列表。
请注意,由于 snap
应用程序沙箱的限制,可能会导致某些 nmap
功能受到限制。如果您需要完全访问网络功能,则建议使用其他方法安装 nmap
。
Couldn't open a raw socket. Error: Permission denied (13) 错误解决
出现这个错误多半是用 snap 安装的,系统默认安装方式apt yum 等安装的基本不不会有这个 问题。
这个问题的本质是没有网络权限,即使你是root权限执行。而根本原因就是snap的沙盒机制导致。
snap沙盒机制
snap
是一种软件打包和分发格式,它使用了一个安全的沙盒机制来隔离软件应用程序和系统之间的联系。这个沙盒环境可以保护主机系统免受应用程序恶意行为、漏洞攻击等威胁。
以下是 snap
沙盒机制的一些特点:
- 文件系统:每个
snap
应用程序都有自己独立的文件系统,与其他应用程序和主机系统隔离开来。这使得snap
应用程序能够以一种独立的方式运行,不会依赖于其它应用程序或共享库。 - 库文件:每个
snap
应用程序都有自己的库文件,并且不会将它们与主机系统的其他库文件混淆。这有助于防止库文件冲突和版本问题。 - 运行时环境:
snap
应用程序可以在一个独立的运行时环境中执行,不会与主机操作系统的其他进程相互干扰。这可以提供额外的安全性,并且避免应用程序之间的竞争条件和冲突。 - 安全性:
snap
应用程序只能访问其授权的接口、设备和可读写区域,从而限制了应用程序对系统的访问权限。这可以避免应用程序意外地访问到敏感数据或者误操作主机系统。
总之, snap
沙盒技术提供了一层额外的安全性和隔离性,可以帮助用户更加安全地使用应用程序。
查阅官方文档可以知道:
snap
应用程序的沙盒机制可以控制应用程序对网络资源(如网络接口、端口等)的访问权限。
当您使用 snap
安装应用程序时,默认情况下应用程序是没有访问系统网络资源的权限的。如果需要,您可以手动为应用程序分配相应的网络授权接口。这可以通过以下命令完成:
sudo snap connect <snap>:network-control
其中 <snap>
是应用程序名称。
这条命令会将 network-control
授权接口分配给应用程序,从而允许应用程序访问主机系统上的网络资源。请注意,这可能会增加主机系统的安全风险,并且只应该授予值得信任的应用程序。
除了 network-control
授权接口之外,还有其他一些与网络相关的授权接口,包括:
- network-bind:允许应用程序监听和绑定到端口。
- network-manager:允许应用程序与 NetworkManager 交互,以获取网络配置信息。
- network-setup-control:允许应用程序配置网络接口和路由表。
总之,snap
应用程序的网络权限可以通过授权接口进行管理和限制,在保障系统安全性的前提下,授予应用程序合适的网络访问权限。
那这个错误也就可以解决了:
给nmap加上网络控制权限即可
snap connect nmap:network-control
反之,如果需要给某个snap安装的应用取消网络控制权限,用 disconnect 即可。