为什么我需要将某些文件设置为可执行文件?

为什么我需要将某些文件设置为可执行文件?

上周之前我从未离开过Windows,我被要求制作一个带有elasticsearch/logstash/kibana/jdk8的虚拟机。

我使用的是普通的非 sudoer 用户。

我提取了每个 tar.gz 文件并得到了 4 个文件夹。

首先要启动弹性搜索,我必须使用 chmod +x 使“elastisearch”文件可执行。然后它失败了,因为其他文件需要可执行。然后失败了,因为java JDK的bin文件夹中的一些文件需要可执行。

还有其他方法可以在 Linux 上安装东西吗?或者每次都是关于“让我们看看我需要 chmod 哪个文件”的游戏?

谢谢。

PS:我使用的是CentOs 7

答案1

还有其他方法可以在 Linux 上安装东西吗?或者每次都是关于“让我们看看我需要 chmod 哪个文件”的游戏?

是的,它被称为使用本机包管理器的供应商,它解决了与发布软件相关的一系列问题,包括权限。一些 ISV 只是有一种习惯,“管理员会解决这个问题”成为标准期望。在某些情况下,您必须这样做,但如果他们只遵循工作流程,很多问题都已经解决了。

在您的具体情况下,您可能没有ptar命令指定选项,该选项将指示它保留对结果文件的文件权限(如果它们tar一开始就包含在存档中)(您只需尝试一下即可查看) 。

对于你原来的问题:

为什么我需要将某些文件设置为可执行文件?

这只是一种访问控制措施。它为您提供了一种不让文件自行运行的方法。例如,如果安装程序的目录树包含最终的可执行文件,但您希望使其无法执行安装程序以外的任何内容。或者,如果您正在编写脚本,但在完成之前不希望任何人执行它。

答案2

是的,还有另一种在 Linux 上安装软件的方法,通常不需要您手动使脚本可执行:包管理器。

如果您在您的情况下使用 CentOS,那就是“yum”。该程序可以安装在您选择的操作系统附带的所谓存储库中找到的软件。

下面的链接解释了在 CentOS 上安装 Logstash、Elasticsearch 和 Kibana。

https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-7

回到您的问题:如果您的操作系统存储库不包含您要安装的软件,那么您可以寻找提供该软件的其他存储库。仅当这两个选项不可用时,您才应该考虑手动安装软件,特别是如果您是没有经验的用户,您应该始终更喜欢从存储库安装软件。

请注意,您需要对要使用“yum”的计算机具有 root 访问权限。

这是一个关于 yum 的小教程: https://linuxmoz.com/linux-yum-tutorial/

答案3

如果要执行文件,则需要使其可执行。Unix 系统使用权限来确定哪些文件是可执行文件,而不是像 Windows 那样使用文件扩展名

很少需要手动使某些文件可执行。当您编译程序时,编译器会执行此操作。当您从存档中解压文件时,存档会指定它们的权限。如果您从中解压该程序的存档具有无效权限,则意味着制作该存档的人做了一些奇怪的事情导致权限变差。

在 Linux 上安装软件的常规方法是通过包管理器。仅当没有可供您的发行版使用的软件包或需要以非 root 用户身份安装软件时,才应使用其他方法。 CentOS不搭载Elasticsearch,但Elasticsearch为某些发行版(包括 CentOS ≥6)分发软件包。使用 Elasticsearch 提供的 RPM 包是最简单的安装方法。

我查了官方由 Elasticsearch 分发的 tar 存档,它确实在需要时具有执行权限。因此,获取此存档并解压它,而不是您使用的任何损坏的存档。

但如果你正在制作一个虚拟机,我不明白你关于不是 root 的说法。你是否是主机上的 root 并不重要;如果您要设置虚拟机,特别是在其中安装操作系统,那么您就是虚拟机的 root 用户,并且可以在虚拟机中运行的操作系统中安装 RPM 软件包。

答案4

还有其他选择。例如,对于开发,我建议使用 Vagrant。有许多 ELK vagrant 盒子可以让你使用一个简单的 vagrant 命令将 ELK 堆栈(包括 Elasticsearch、Logstash 和 Kibana)全部安装在一起(很快就会写一篇关于这方面的教程)。 vagrant box 将为您安装所有必需的组件,包括 Java。当然,还有托管的 ELK 解决方案可供尝试(披露 - 我在一家 ELK 即服务公司工作)。

相关内容