如何在 Linux/Unix 系统中验证端口是不是打开
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 Linux/Unix 系统中验证端口是不是打开相关的知识,希望对你有一定的参考价值。
在Linux/Unix中查看端口打开状况的命令是netstat。
查看所有端口占用情况并显示占用进程名称
# netstat -apn查看所有tcp端口占用情况并显示占用进程名称
# netstat -atpn查看所有udp端口占用情况并显示占用进程名称
# netstat -aupn例如你需要查看8080端口是否被打开可执行如下命令
# netstat -atpn | grep 8080tcp6 0 0 :::8080 :::* LISTEN 3096/java
上面的命令返回结果是8080端口被PID为3096的java进程打开,处于LISTEN状态 参考技术A 在 Linux 或者类 Unix 中,我该如何检查某个端口是否被占用?我又该如何验证 Linux 服务器中有哪些端口处于监听状态?
验证哪些端口在服务器的网络接口上处于监听状态是非常重要的。你需要注意那些开放端口来检测网络入侵。除了网络入侵,为了排除故障,确认服务器上的某个端口是否被其他应用程序占用也是必要的。比方说,你可能会在同一个系统中安装了 Apache 和 Nginx 服务器,所以了解是 Apache 还是 Nginx 占用了 # 80/443 TCP 端口真的很重要。这篇快速教程会介绍使用 netstat 、 nmap 和 lsof 命令来检查端口使用信息并找出哪些程序正在使用这些端口。 参考技术B 测试端口是否打开,最常用的方式是用telnet命令
如何理解 Unix/Linux 的文件系统?
文件树的组织
关于 UNIX 家族的文件系统的组织说的好听点是约定优于配置,说的难听点就是组织混乱,互不兼容,各有山头。 幸运的是对于一些比较重要的目录, 在各系统中逐渐形成了一种比较通用的标准,其内容如下表,我们在安放文件时可以参考此表。
标准目录及内容
路径名 | 操作系统 | 内容 |
---|---|---|
/bin | 所有 | 最核心的操作系统命令 |
/boot | LS | 内核和加载内核所需要的文件 |
/dev | 所有 | 伪终端, 磁盘, 打印机等的设备项 |
/etc | 所有 | 关键的启动文件和配置文件 |
/home | 所有 | 用户默认的主目录 |
/kernel | S | 内核组件 |
/lib | 所有 | 库, 共享库和部分 C 编译器 |
/media | LS | 可移动介质上文件系统的挂载点 |
/mnt | LSA | 可移动介质的临时挂载点 |
/opt | 所有 | 可选的应用软件包 (尚未广泛使用) |
/proc | LSA | 所有正在运行进程的信息 |
/root | LS | 超级用户的主目录 |
/sbin | 所有 | 系统最小规模运行所需的命令 |
/stand | H | 独立的工具,磁盘格式化工具 ,诊断工具等 |
/tmp | 所有 | 每次重新引导就消失的临时文件 |
/usr | 所有 | 次要文件和命令的层次结构 |
/usr/bin | 所有 | 大多数命令和可执行文件 |
/usr/include | 所有 | 编译 C 程序的头文件 |
/usr/lib | 所有 | 库; 供标准程序使用的支持文件 |
/usr/lib64 | L | 在 64 位 Linux 发行版本上的 64 位库 |
/usr/local | 所有 | 本地软件 (用户所编写或者安装的软件); /usr/ 的镜像结构 |
/usr/sbin | 所有 | 不太关键的系统管理命令和修复命令 |
/usr/share | 所有 | 多种系统共同的东西 |
/usr/share/man | 所有 | 联机用户手册 |
/usr/src | LSA | 非本地包软件的源代码 (非广泛使用) |
/usr/tmp | 所有 | 更多的临时空间 (每次重新引导仍然保留) |
/var | 所有 | 系统专用数据和配置文件 |
/var/adm | 所有 | 各种不同的东西: 日志, 系统设置记录 ,奇怪的管理信息 |
/var/log | LSA | 各种系统日志文件 |
/var/spool | 所有 | 供打印机,邮件等使用的假脱机目录 |
/var/tmp | 所有 | 更多的临时空间 (在重新引导以后 ,文件予以保留) |
PS: L=Linux, S=Solars, H=HP-UX, A=AIX
文件类型
可以认为 UNIX 家族的文件有 7 种类型,
普通文件
目录
字符设备文件
块设备文件
本地域套接口
有名管道 (FIFO)
符号链接
可以使用命令 ls -ld
来查看文件的类型。ls
命令输出的第一个字符表示类型。
$ ls -ld /usr/include
drwxr-xr-x 257 root wheel 8738 12 12 00:27 /usr/include
第 1 个字符是 d, 表示 /usr/include 是一个目录。
ls 命令使用的文件类型代码
文件类型 | 符号 | 创建方式 | 删除方式 |
---|---|---|---|
普通文件 | - | 编辑器, cp 等 | rm |
目录 | d | mkdir | rmdir, rm -r |
字符设备文件 | c | mknod | rm |
块设备文件 | b | mknod | rm |
本地域套接口 | s | socket(2) | rm |
有名管道 | p | mknod | rm |
符号链接 | l | ln -s | rm |
文件权限
使用命令 ls -ld
查看某个文件 file.txt,
-rw-rw-r-- 1 hope 123 Feb 03 15:36 file.txt
- rw- rw- r-- 1 hope 123 Feb 03 15:36 file.txt
File owner group everyone else links owner size mod date file name
第一个符号: -, 表示这是个文件,如果此符号是 d 则表示这是个目录 第二个符号: rw-, 表示用户对此文件有读写权限, 用二进制表示是: 110, 用八进制表示是: 6 第三个符号: rw-, 表示用户所在的组对此文件有读写权限, 用二进制表示是: 110, 用八进制表示是: 6 第四个符号: r–, 表示其他的人对此文件有读权限, 用二进制表示是: 100, 用八进制表示是: 4
file.txt 完整的权限 (即包括了用户,用户所在组和其他人的权限) 可以用八进制数表示为: 664。
如果我们需要让某个文件有和 file.txt 的一样的权限,可以使用下面的命令:
chmod 664 abcfile.txt
可以通过 chmod 的权限编码表 来生成合适的八进制数权限。
chmod 的权限编码
八进制 | 二进制 | 权限 |
---|---|---|
0 | 000 | — |
1 | 001 | –x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r– |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
chmod 助记语法例子
规则 | 含义 |
---|---|
u+w | 为文件的属组添加写的权限, 比如 chmod u+w file.txt |
ug=rw,o=r | 赋予属主和属组读 / 写的权限, 赋予其他人读的权限 |
a-x | 删除全部 3 种类别用户 (属主 / 属组 / 其他人) 的执行权限 |
ug=srx,o= | 设置文件的 setuid 和 setgid 位, 并且只给属主 和属组赋予读 / 执行的权限 |
g=u | 让属组的权限跟属主的权限完全一样 |
u 代表 user 即属主
g 代码 group 即属组
o 代表 other 即其他人
a 代表 all 即所有人
以上是关于如何在 Linux/Unix 系统中验证端口是不是打开的主要内容,如果未能解决你的问题,请参考以下文章