在Linux系统中,可执行文件是指系统可以直接运行的文件,既包括编译后的二进制程序(如/bin/ls),也包括脚本文件(如/bin/bash),查看可执行文件的相关信息,是系统管理和开发调试中的基础操作,本文将从文件类型、权限属性、路径查找、内部结构等多个维度,介绍Linux中查看可执行文件的常用方法与工具。

通过file命令识别文件类型
file命令是Linux中最基础的工具之一,用于识别文件的类型和格式,对于可执行文件,它会输出文件的编码格式、架构、依赖库等关键信息,帮助判断文件是否为可执行以及可执行的类型。
查看/bin/ls的类型:
file /bin/ls
输出结果可能为:/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=a1b2c3d4e5f6, for GNU/Linux 3.2.0, stripped。
“ELF 64-bit LSB executable”明确标识这是一个64位、小端序的ELF可执行文件;“dynamically linked”表示动态链接,需要依赖外部库;“interpreter”指定了动态链接器的路径,用于加载运行时环境。
对于脚本文件(如Python脚本),file会输出解释器信息:
file ./test.py
若文件首行为#!/usr/bin/python3,输出可能为:./test.py: Python script, ASCII text executable,表明这是一个由Python解释器执行的脚本。
通过权限属性判断可执行权限
Linux文件的权限(读、写、执行)是决定其是否可执行的核心依据,使用ls -l命令可以查看文件的权限位,其中执行权限(x)对用户(u)、组(g)和其他用户(o)的设置直接决定了文件能否被运行。
查看/bin/ls的权限:
ls -l /bin/ls
输出结果为:-rwxr-xr-x 1 root root 139520 Aug 15 2023 /bin/ls。
权限位rwxr-xr-x中,用户权限rwx表示所有者可读、可写、可执行;组权限r-x表示组用户可读、可执行;其他用户权限r-x同理,若某类用户权限位中没有x(如rw-r--r--),则该用户无法执行该文件。

特殊权限(SUID、SGID、Sticky Bit)也会影响可执行行为。/usr/bin/passwd具有SUID权限(权限位显示为rwsr-xr-x),执行时会以文件所有者(root)权限运行,而非当前用户,可通过ls -l /usr/bin/passwd查看,或使用stat命令获取更详细的权限信息:
stat /usr/bin/passwd
使用which、whereis和type查找可执行路径
当需要确认某个命令对应的可执行文件路径时,可通过以下工具快速定位:
-
which:查找用户环境变量$PATH中指定的可执行文件路径,适用于查找系统命令。which ls # 输出:/usr/bin/ls
-
whereis:不仅查找可执行文件,还会定位源码文件和手册页。whereis ls # 输出:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
-
type:显示命令的类型(别名、关键字、函数、文件等),并输出路径(如果是外部命令)。type ls # 输出:ls is aliased to `ls --color=auto'(若设置了别名) type grep # 输出:grep is /usr/bin/grep(外部命令)
分析可执行文件内部结构
对于二进制可执行文件(ELF格式),可通过专业工具分析其内部结构,如节区、符号表、重定位信息等,常用于调试和逆向分析。
-
readelf:查看ELF文件的详细结构,查看文件头信息:readelf -h /bin/ls
输出包含文件类型(EXEC)、机器架构(x86_64)、入口地址(Entry point address)等关键字段。

-
objdump:反汇编可执行文件的代码段,或查看节区内容,反汇编main函数:objdump -d /bin/ls | grep -A 10 main
-
nm:列出文件的符号表(函数名、变量名及其地址),适用于分析符号定义和引用:nm /bin/ls | grep main
脚本文件的执行机制与内容查看
脚本文件的可执行性依赖于首行的“shebang”(),它告诉系统使用哪个解释器执行文件。#!/bin/bash表示使用Bash解释器,#!/usr/bin/python3表示使用Python 3。
时,可直接使用cat或less命令,但若仅需确认解释器,可通过head -n 1提取首行:
head -n 1 ./test.sh # 输出:#!/bin/bash
对于脚本文件,需确保文件具有执行权限(chmod +x ./test.sh),且解释器路径正确(可通过which bash确认解释器实际路径)。
安全注意事项
在查看或执行可执行文件时,需注意安全性:
- 来源验证:避免执行来源不明的文件,可通过
sha256sum校验文件哈希值,或使用gpg验证签名。 - 权限控制:遵循最小权限原则,避免为普通用户设置不必要的执行权限,特别是SUID/SGID文件。
- 动态链接检查:使用
ldd命令查看可执行文件的依赖库,确保所需库已安装且版本匹配:ldd /bin/ls
Linux中查看可执行文件的方法多样,从基础的file和ls命令,到专业的readelf和objdump工具,可根据需求选择合适的工具,理解文件类型、权限属性、执行机制和内部结构,不仅能帮助排查系统问题,也为后续的开发和安全分析奠定基础,在实际操作中,需结合安全意识,合理利用工具高效完成任务。



















