我正在尝试在我的 64 位 Ubuntu 上运行交叉编译器。并导致以下错误:
$ ./arm-none-eabi-gcc
bash: ./arm-none-eabi-gcc: No such file or directory
Run Code Online (Sandbox Code Playgroud)
该文件在这里并包含一些数据:
$ ls -la arm-none-eabi-gcc
-rwxr-xr-x 2 alan alan 776368 Sep 26 19:36 arm-none-eabi-gcc
$ head -n 1 arm-none-eabi-gcc
ELF?4?
4 (44?4? TT?T???|?
Run Code Online (Sandbox Code Playgroud)
ldd 显示不需要依赖项:
$ ldd arm-none-eabi-gcc
not a dynamic executable
Run Code Online (Sandbox Code Playgroud)
strace 也没有提供额外的信息:
$ strace ./arm-none-eabi-gcc
execve("./arm-none-eabi-gcc", ["./arm-none-eabi-gcc"], [/* 80 vars */]) = -1 ENOENT (No such file or directory)
write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file …Run Code Online (Sandbox Code Playgroud) 通常我的 Linux 操作系统允许我创建可运行的可执行文件(如a.out),但是当我尝试从 Internet下载.exe 时,它基本上是权限受限的(用户都没有执行 ( -x) 权限)。问题是,当我使用chmod u+x或更改文件权限chmod 777并尝试运行该程序时,我总是收到此错误消息:
run detectors: unable to find an interpreter for ./[file_name].exe
Run Code Online (Sandbox Code Playgroud)
其中[file_name]代表文件的名称。由于我的 Linux 经验和知识非常薄弱,我做了一些研究,但没有发现任何人有这个确切的问题,任何帮助将不胜感激!
附注。我的操作系统是 Ubuntu 16.04.3 LTS 32 位
尽管人们可以轻松地制作一个名为./42甚至的可执行文件./????,但我发现没有包含无字母命令的常见软件包。例如,在 Ubuntu 上,apt-file find . | grep -i -e '/[^a-z/_\-]+$'报告每个可执行文件的基本名称至少有一个字母、下划线或破折号。唯一的自由字母的文件或迪尔斯,我发现是不可执行的,通常版本号:docbook/dtd/xml/4.1.2,/usr/include/c++/4.8.2,等。
是否有任何已发布的规则或标准限制了命令的命名方式?或者这仅仅是文化实践?
例如,如果我这样做
[OP@localhost executable]$ cat garbage
lalala
trololol
[OP@localhost executable]$ chmod +x garbage
[OP@localhost executable]$ ./garbage
./garbage: line 1: lalala: command not found
./garbage: line 2: trololol: command not found
Run Code Online (Sandbox Code Playgroud)
Bash 似乎试图将这个“可执行文件”解释为脚本。但是,有两种情况显然不会发生这种情况:文件以#!, 和 ELF 文件开头。还有吗?某处是否有关于此的全面文档?
我们的客户端服务器运行旧版本的 jboss (Jboss 4.0),它有很多已知的漏洞。结果是服务器被黑了,我们看到一些未知的可执行文件从/tmp、/var/tmp和/dev/shm目录运行。该服务器被用作其他机器的目标机器。
我们修改了 jboss 配置以通过 Nessus 确认该漏洞不再存在来消除该缺陷。除此之外,我执行了以下操作
Mounted /tmp with noexec option
Mounted /dev/shm with noexec,nosuid option
Run Code Online (Sandbox Code Playgroud)
对我/tmp来说,在单独的分区上执行上述两个步骤没有问题。我正面临/var/tmp位置问题,因为我无法在/var分区上使用 noexec 。因此,计划安装/var/tmp在我用于/tmp定位的同一分区上。我希望这将有助于解决我的问题,但在执行更改后,我注意到文件和目录/tmp在/var/tmp.
# ls -l /var/tmp/
total 32
drwx------ 2 ssdg ssdg 4096 Dec 17 12:10 gconfd-ssdg
drwxr-xr-x 3 root root 4096 Feb 21 2013 hp_sum
drwxr-xr-x 2 jboss jboss 4096 Dec 18 11:56 hsperfdata_jboss
drwx------ 2 root root 16384 …Run Code Online (Sandbox Code Playgroud) 是否可以准确定位该可执行文件
myname
Run Code Online (Sandbox Code Playgroud)
如果传递给命令行,它将运行
> myname
Run Code Online (Sandbox Code Playgroud)
locate命令没有按预期工作,因为它返回了许多结果。结果应该正好是一个,因为如果你运行一些东西,只会运行一个文件。此外,结果应PATH优先考虑。
我的系统上有 Ecplise 平台(编程环境,请参阅https://eclipse.org/)。它可以通过在终端中输入“eclipse”来运行。
现在我安装了 eclipse prolog(见http://www.eclipseclp.org/)。我按照http://eclipseclp.org/Distribution/Current/6.1_224_x86_64_linux/Readme.txt 中的说明进行操作),现在我想启动它。在这些说明中,他们说可以通过在终端中键入“eclipse”来运行它。
但是,如果我这样做,则只会启动 Eclipse 编程环境,而不会启动 Eclipse 序言。
现在我该怎么做?
我使用的是 Linux Mint 17、64 位。
我使用以下方式在当前 Bash 会话中执行一组 Bash 脚本文件:
source ~/myScripts/{assignments.sh,nginx_conf.sh,php_conf.sh,drush_install.sh}
Run Code Online (Sandbox Code Playgroud)
我觉得维护起来不舒服。一些垂直收集更好。伪代码:
assignments.sh
nginx_conf.sh
php_conf.sh
drush_install.sh
Run Code Online (Sandbox Code Playgroud)
你会如何垂直地做到这一点?
顺便说一句,我不确定像这样的源文件是最好的方法。
我现在明白我的单行source操作注定要失败,因为从 Bash 4.3.48(1) 开始,Bash 解释器的评估source方式是它只能处理一个文件,而超出它的任何其他文件都将被评估作为第一个文件的参数(大括号集{}对此无济于事)。
我得到的印象,这是一样的用bash代替source。
查看我/etc/profile.d目录中的文件:
cwellsx@DESKTOP-R6KRF36:/etc/profile.d$ ls -l
total 32
-rw-r--r-- 1 root root 96 Aug 20 2018 01-locale-fix.sh
-rw-r--r-- 1 root root 1557 Dec 4 2017 Z97-byobu.sh
-rwxr-xr-x 1 root root 3417 Mar 11 22:07 Z99-cloud-locale-test.sh
-rwxr-xr-x 1 root root 873 Mar 11 22:07 Z99-cloudinit-warnings.sh
-rw-r--r-- 1 root root 825 Mar 21 10:55 apps-bin-path.sh
-rw-r--r-- 1 root root 664 Apr 2 2018 bash_completion.sh
-rw-r--r-- 1 root root 1003 Dec 29 2015 cedilla-portuguese.sh
-rw-r--r-- 1 root root 2207 Aug 27 12:25 oraclejdk.sh …Run Code Online (Sandbox Code Playgroud) permissions executable shell-script windows-subsystem-for-linux
假设 root 用户拒绝对系统中特定普通用户使用“ls”命令的所有权限。那个普通用户如何克服这种拒绝,他如何在没有任何“sudo”命令的情况下使用“ls”命令?
executable ×11
linux ×4
permissions ×3
32bit ×1
array ×1
binary ×1
c ×1
command-line ×1
exec ×1
filenames ×1
filesystems ×1
integrity ×1
libraries ×1
locate ×1
ls ×1
path ×1
security ×1
shell-script ×1
unicode ×1
windows ×1