Questions tagged «executable»

文件模式下的允许位,允许文件作为程序运行。此外,问题还涉及程序文件的格式以及定位和执行程序文件。

3
将二进制文件放在哪里,以便它们始终在路径中并且可以轻松找到
我正在制作一些我想轻松安装的二进制文件,脚本等(使用自己的rpm)。因为我希望每个人都可以使用它们,所以我的直觉是将它们放在/ usr / bin中; 无需更改路径 然而; 我的可执行文件现在消失在其他所有文件中;我如何以一种简单的方式找回放置在其中的所有可执行文件。我在想: / usr / bin中的一个子目录(我知道我不能这样做;只是为了说明我的想法) 另一个目录(/ opt / myself / bin),并将每个可执行文件链接到/ usr / bin(很多工作) 另一个目录(/ opt / myself / bin)并将目录链接到/ usr / bin(这可能吗?) 做到这一点的“最佳,最符合Linux的方式”是什么? 编辑:我们在公司中对此进行了讨论,并提出了这个次优的选择:使用来自/ usr / bin的符号链接将二进制文件放在/ usr / bin / company中。我对这种解决方案并不感到兴奋(讨论仍在进行中)

2
为什么PATH中包含这么多程序?
至少让我感到困惑的是台式机Linux,一件事就是我的PATH中几乎所有内容。每件事,我的意思是每个桌面应用程序,包括gnome-character-map和glchess之类的东西。这些没有命令行界面可言,所以我想不出要定期从终端启动这些界面的情况-而且在这种不太可能的情况下,我无法想象需要输入完整的命令行界面而感到不便路径。看起来似乎很混乱,但是也许有充分的理由。 那么,为什么会这样呢?对性能或可维护性有任何显着影响吗?

4
sudo`要求哪个用户密码?
$ ls -l /usr/bin/sudo -rwsr-xr-x 1 root root 136808 Jul 4 2017 /usr/bin/sudo 因此sudo,任何用户都可以运行该用户,并且运行的任何用户都sudo将以root作为该进程的有效用户ID,因为已设置了set-user-id位/usr/bin/sudo。 从https://unix.stackexchange.com/a/11287/674 sudo和su之间最明显的区别是sudo需要用户密码,而su需要root用户密码。 要求哪个用户密码sudo?它是由进程的真实用户ID表示的用户吗? 如果是,是否没有任何用户可以通过运行sudo然后提供自己的密码来获得超级用户特权?Linux可以限制某些用户吗? 它是纠正sudo输入密码请求后 execve()开始执行main()的/usr/bin/sudo? 由于进程的euid已更改为root(因为/ usr / bin / sudo的set-user-id位已设置),以后sudo要求输入密码的目的是什么? 谢谢。 我已阅读https://unix.stackexchange.com/a/80350/674,但未回答上述问题。

2
为什么setuid在可执行文件上不起作用?
我知道在脚本上启用setuid会带来安全问题,因此默认情况下处于禁用状态,但是希望它对可执行文件有效。我创建了一个可执行文件,该文件按照本文中所述的说明将uid显示为输出:在shell脚本上允许setuid 但是它在运行之前和之后都返回相同的uid(1000)sudo chmod +s ./setuid-test。我认为这意味着setuid对我的可执行文件没有任何影响,为什么以及如何解决? 源代码: #include <stdio.h> #include <unistd.h> int main(int argc, char** argv) { printf("%d", geteuid()); return 0; } 构建并运行 $ gcc -o setuid-test setuid-test.c $ ./setuid-test 1000 $ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test $ ./setuid-test 1000 运行时ls -la,这是我得到的: me@me:~$ ls -la setuid-test -rwsrwsr-x 1 …

1
为什么拒绝使用npm开始使用node-dev的权限?
我正在尝试以低权限用户启动node.js应用程序。我知道的所有文件均由正确的用户拥有,并且权限设置得相当好。我正在尝试使用脚本文件来执行此操作。我用此命令调用脚本 sudo su - nodejs ./start-apps.sh Shell脚本运行此命令以启动应用程序 cd "/home/nodejs/my-app" npm start npm start被记录在这里。基本上,它从package.json文件中拉出要使用的命令,该文件在我们的应用程序中如下所示: // snip "scripts": { "start": "node-dev app" }, 它吐出错误: > my-app@0.1.0-build.100 start /home/nodejs/my-app > node-dev app sh: 1: node-dev: Permission denied npm ERR! spicoli-authorization@0.1.0-build.100 start: `node-dev app` npm ERR! Exit status 126 那sh似乎是说它正在报告shell命令中的错误。我不认为问题出在访问npm命令本身,因为如果是这样,拒绝的权限将在npm命令的任何输出之前引发。但是为了排除在外,这是npm命令本身的权限: $ sudo find / …

1
仅针对一个用户的更新替代
我正在使用共享服务器。在该服务器上安装了不同版本的Java: Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 auto mode * 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode 2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode 我想选择“第二个”选项,但是如果尝试这样做,它会抱怨我没有权限(我不是root用户)。 有没有办法在“用户空间”中做到这一点? Root用户能否使此首选项仅对我有效?



1
为什么`strip`不从ELF可执行文件中删除节标题?
最小的ELF可执行文件仅需要ELF标头和至少一个程序标头才能起作用。但是,当我在一个简短的可执行文件上运行strip时,它决定不扔掉节头表或节字符串节,尽管它们对程序执行没有任何作用(据我所知),但仍保留它们。 有没有理由不将它们删除?是否有另一个实用程序可以删除可执行文件运行所不需要的所有内容?我尝试手动编辑要删除的节标题的代码跟踪可执行文件,它看起来可以正常工作,并且要小得多。
9 executable  elf  strip 

1
“ Wine:Z:\ m \ Desktop \ PortForward Network Utilities.desktop的错误EXE格式”是什么意思?
在Debian上安装wine来运行Windows exe-特别是PortForward Network Utilities捆绑包:http : //portforward.com/help/setup_static_ip_address.htm)。 输入: wine '/m/PortForward Network Utilities.desktop' 输出: wine: Bad EXE format for Z:\m\Desktop\PortForward Network Utilities.desktop. 按照“ Debian / Wine Multiarch指令”,我用apt-get安装了Wine。Wine是32位的,但我不确定PF Network Utilities包是什么(属性中没有说明)。 不知道从这里去哪里。

1
bash如何执行ELF文件?
当我在Linux Box上时,我使用bash作为外壳。现在,我想知道bash如何处理ELF文件的执行,也就是说,当我键入./program且program是ELF文件时。我grep了bash-4.3.tar.gz,似乎没有某种魔术数字解析器可以确定文件是否为ELF,也没有找到exec()syscall。 整个进程如何运作?bash如何将ELF的执行传递给OS?
8 bash  kernel  executable  exec  elf 

2
Bash脚本权限被拒绝且翻译错误
我正在使用kali Linux 64位。 我创建了一个Python脚本,该脚本需要2个参数才能启动。我不想每次都键入完全相同的路径,也不想在终端中使用的命令的历史记录中进行搜索。因此,我决定创建一个简单的脚本,该脚本以其参数调用python脚本。 #! /bin bash python CreateDB.py ./WtfPath ./NoWtfPath/NewSystem/ 这与我在终端中使用的命令完全相同。但是,当我尝试执行脚本文件时,出现错误消息。 bash: ./wtf.sh: /bin: bad interpreter: Permission denied wtf.sh具有可执行权限。 怎么了?

4
在Raspberry Pi上执行交叉编译的程序时,“没有这样的文件或目录”
我最近买了Raspberry Pi。我已经配置好了,并且在桌面(amd64)上安装了用于arm的交叉编译器。我编译了一个简单的“ hello world”程序,然后使用将其从桌面复制到Pi scp ./hello david@192.168.1.33:~/hello。登录我的Pi后,我运行ls -l hello并得到一个正常响应: -rwxr-xr-x 1 david david 6774 Nov 16 18:08 hello 但是当我尝试执行它时,得到以下信息: david@raspberry-pi:~$ ./hello -bash: ./hello: No such file or directory david@raspberry-pi:~$ file hello hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x6a926b4968b3e1a2118eeb6e656db3d21c73cf10, not …

1
$ PATH和可执行文件有问题
我在生成的目录中有一个UNIX可执行文件。我相信我需要在我的目录中找到该目录,$PATH以便Unix可执行文件是可执行文件,但是源代码文档中说我需要编辑shell配置文件以添加$home/meme/bin到shell路径中。

2
处理重复的程序名称bash
我想知道是否$PATH 级联条目。在这里,你们所有人都需要与我一起迈出信心的飞跃,但事情确实如此。 假设我们有一个Java可执行文件,/usr/bin/java但此版本非常旧且过时。不幸的是,我们没有su访问权限,所以我们不能仅仅替换它。但是,我们可以在本地下载JRE / JDK的当前版本,并指向更新的版本。我的问题是,当我们有两个或多个具有相同名称但在两个或多个不同位置的可执行文件时,bash如何处理?当我们输入java控制台时,bash是否会以某种方式选择执行哪一个?假设我们/usr/bin还有许多其他可执行文件,那么$PATH看起来像这样的东西如何正常工作? 理想情况下,键入时java -version应该看到: java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 代替 java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) Client VM(build 24.45-b08, mixed mode, sharing) 我确定这个问题已经被问过了,并且与它相关联。我在SE,SO和一些论坛上闲逛,但没有发现任何结论。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.