如何绕过Linux服务器管理员自由安装软件?

如何绕过Linux服务器管理员自由安装软件?

服务器的管理员负责确保服务器系统和应用程序的稳定运行,防止用户误操作或安装不当的软件,从而造成系统崩溃或数据丢失等问题。然而,这种审核流程可能会导致以下一些困难:

由于某些原因,管理员可能会拒绝用户的安装请求,这可能会延迟用户的工作进度,特别是在紧急情况下。

如果管理员缺乏足够的经验和技能来处理高级安装操作,他们可能无法满足用户的需求,导致用户无法顺利完成任务。

审核流程可能会花费较长时间,这可能会对用户的工作进度造成影响。

由于版本冲突或管理员限制,用户可能无法安装所需的特定软件或工具,这可能会影响他们的工作效率和创造力。

在2023年,有很多新的解决方案能够帮助用户摆脱依赖管理员的束缚,提高工作效率和灵活性。跟着我一起来学习下:如何绕过Linux服务器管理员自由安装软件吧!

为什么安装软件需要管理员?

在 Linux 系统中,安装软件的主要方式是使用系统自带的包管理器,例如 apt、yum、pacman、dnf 等,来安装官方软件仓库中的软件。由于这些命令需要将软件包写入到系统的 /usr 路径下,因此通常需要管理员权限才能操作。

 

如何绕过Linux服务器管理员自由安装软件?

 

即使是一些新兴的包管理器,如 Homebrew 和 Nix,也需要管理员权限来创建特定的路径,例如 /home/homebrew 和 /nix,以便安装软件包。虽然 Homebrew 可以通过设置在用户的 home 目录下安装,但是由于需要使用 git 同步完整的仓库克隆,以及缺乏许多预编译的二进制可执行文件,因此它最终也没有在 Linux 中获得广泛应用。

 

可行的解决办法是什么?

上述问题的根本原因在于需要将软件包写入系统路径,而将软件包安装到用户目录(/home/user)中则无需管理员权限。因此,只需要将软件所在路径添加到 PATH 环境变量中,就可以在任意目录下运行目标软件,这也是我们通常所说的“绿色软件”,也是我们解决方案的基础。

举个例子,我可以将 ~/.local/bin/ 添加到 PATH 环境变量中,并将其置于系统路径之前,这可以在 .bashrc 配置文件中完成:

export PATH="$HOME/.local/bin/:$PATH"

这种方式能够确保系统在查找软件时优先在用户目录下寻找,如果找不到才会在系统路径中寻找,这样就能够自由地安装软件,而不会受到现有软件的限制。

另一个方案的可行性源于新兴编程语言的兴起,例如 Python、Node.js、Golang 和 Rust 等。许多当前流行的工具软件都是用这些语言编写的。前两者是解释型语言,后两者则偏向于静态链接的编译期。这两个特点为我们在用户目录下安装并使用这些工具软件提供了极大的便利。在接下来的内容中,我们将详细探讨这一点。

对于传统的 C/C++ 编写的软件,如今也出现了更高级的沙盒机制和打包迁移方案,这些方案最大化地减少了我们的主动编译的麻烦。此外,现在已经有了社区级别的工具解决方案,这些工具可以解决大部分常见的问题,同时对于暂时不能应用的 corner case ,社区也会持续更新工具以使其具有更强的生命力。

 

方案一:AppImage (推荐)

 

AppImage(下载地址见文末) 是一种先进的 Linux 软件打包方式,旨在让 Linux 软件可以在任何地方运行。它使用了一种独特的打包方式,让用户只需下载一个软件程序文件,赋予可执行权限,然后双击或者通过命令行即可运行软件,和传统的安装方式运行情况没有任何区别。而且,AppImage 不需要传统的安装过程,并且不需要外部依赖。目前,主流的操作系统如 Ubuntu、Debian、Fedora、Arch 等都原生支持 AppImage。

以 neovim 安装为例,您可以前往 neovim 的 GitHub 仓库的 Release 页面,在 Assets 资源中找到 nvim.appimage 文件,下载到您的 ~/.local/bin/ 目录中。接下来,您需要为该文件赋予可执行权限,即可在任何目录下运行 neovim。具体的命令行操作如下:

 

$ cd ~/.local/bin/ # 切换路径

$ wget https://github.com/neovim/neovim/releases/download/v0.7.0/nvim.appimage -O nvim # 下载

$ chmod +x nvim # 赋予可执行权限

$ nvim --version # 运行(查看版本)

NVIM v0.7.0

Build type: RelWithDebInfo

LuaJIT 2.1.0-beta3

Compilation: /usr/bin/gcc-11 ......

Features: +acl +iconv +tui

See ":help feature-compile"


system vimrc file: "$VIM/sysinit.vim"

fall-back for $VIM: "

/home/runner/work/neovim/neovim/build/nvim.AppDir/usr/share/nvim"


Run :checkhealth for more info

 

通过查看上面的信息,我们可以知道 nvim 是通过 gcc 在其他机器上编译打包的,但是它无需额外的包管理器执行一系列安装过程就能完美地运行。这是因为 AppImage 采用了沙盒运行机制,因此能够实现这一点。如果读者感兴趣,可以去 AppImage 的官方网站了解更多信息。同时,AppImage 也支持桌面程序。

想要寻找 AppImage 打包的软件,除了可以访问 AppImage 官网,还可以通过在 Github 上使用“软件名称+appimage”等关键词进行搜索。许多开发者为开源传统软件重新打包了 AppImage 版本。虽然 AppImageHub 也是一个资源站点,但更新频率不是很高。

 

方案二:预编译软件

静态链接程序

前面我们提到了针对编译型语言如Golang和Rust,很多流行的工具软件都选择生成静态链接的版本。这种静态链接的软件不需要依赖动态库即可独立运行,换言之,它的使用和appimage格式一样方便。

以 hugo 为例,可以通过在终端下使用 file 命令查看可执行文件的链接属性,确定该软件是否是静态链接的。hugo 是一个流行的 Golang 编写的静态博客生成程序:

$ file hugo

hugo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=dCIdntYpNd5KK2REUzpq/KjT_yySAiQCm81Kbau6Q/se7uF5SyXa-m-AowDvsp/RNDslKYNwc6AicqzvkEm, stripped

其中,“statically linked”这个词表示该可执行文件是静态链接的。

 

接下来的步骤类似于使用 AppImage,首先下载可执行文件(如果是压缩包则需要先解压),将其放到 PATH 路径下,并赋予可执行权限,即可运行。许多常见的软件,如 Hugo、Fzf、Rclone、Act 等,都可以通过这种方式安装。

$ wget https://github.com/gohugoio/hugo/releases/download/v0.100.2/hugo_0.100.2_Linux-64bit.tar.gz # 下载

$ tar -zxvf hugo_0.100.2_Linux-64bit.tar.gz # 解压

$ chmod +x hugo # 赋予可执行权限

$ mv hugo ~/.local/bin/ # 移动到 PATH 路径上

$ hugo version # 运行(查看版本)

hugo v0.100.2-d25cb2943fd94ecf781412aeff9682d5dc62e284 linux/amd64 BuildDate=2022-06-08T10:25:57Z VendorInfo=gohugoio

 

对于部分用 C/C++ 编写的软件,如果开发者选择了静态链接的方式进行编译,那么同样可以采用上述方式进行安装和运行。例如,upx 是一个用 C++ 编写的轻量级可执行文件压缩工具,也提供了静态链接的版本供用户使用,可以通过下载可执行文件并赋予可执行权限的方式进行安装和使用。

 

方案三:源码即是软件

除了传统意义上的编译型软件,现在还有很多用脚本语言编写的软件工具,比如 Python 和 Node.js,这些软件可以通过语言本身的解析器 + 软件代码来运行,并且可以通过它们各自自带的包管理器来方便地安装。然而,在默认设置情况下,包管理器下载的源代码需要放置在系统目录下,因此需要管理员权限才能安装。

通过修改包管理器的设置,我们可以指定下载回来的源码放置在用户目录的路径下,这样就不需要管理员权限也能方便地自主安装软件工具了。

以 Python3 的包管理器pip3为例,可以通过修改其设置,使得下载的软件包存储在用户目录下,而不需要管理员权限。默认情况下,可以通过使用pip3 install命令来安装软件包,也可以使用--user参数来实现相同的效果,但不要使用sudo命令来调用。默认的包下载路径为~/.local/lib/python3.x/site-packages/。如果下载的软件包中包含可执行文件,则该可执行文件会被下载到~/.local/bin/路径下,与前面提到的路径相同。因此,只需要将该路径添加到PATH环境变量中即可。以pipenv工具为例:

$ pip3 install pipenv # 安装

$ echo 'export PATH="$HOME/.local/bin/:$PATH"' >> ~/.bashrc # 加入 PATH

$ pipenv --version # 运行(查看版本)

pipenv, version 2022.6.7

 

当使用 Nodejs 时,npm是其自带的包管理器。在没有管理员权限的情况下,默认情况下无法全局安装软件包。因此,我们需要修改它的配置文件 ~/.npmrc,将 prefix=${HOME}/.npm-packages 添加到其中,并将其子目录 bin 添加到PATH路径中,这样就能全局安装软件包了。

 

写在最后

通过上述3种解决方案,可以实现在Linux环境中自给自足地安装各种软件,而不需要管理员权限。这大大简化了新机器的配置过程。这些方案提供了直观明了的安装过程,使升级和卸载也变得非常直观,只需要删除或替换文件和文件夹即可。此外,通过一些配套工具,安装过程可以被自动化管理,从而进一步简化了配置过程。

尽管上述方案主要是针对 Linux 环境的,但是在 Windows 和 macOS 操作系统中也可以应用类似的思路。不过,这两个操作系统一般都提供了各种工具来方便地安装应用程序,所以在这些系统上可能不需要这样的解决方案。如果你喜欢便携式软件,可以按照上述方案的思路来创建自己喜欢的便携式软件。

 

免责说明

本站资源部分来自网友投稿,如有侵犯你的权益请联系管理员或给邮箱发送邮件PubwinSoft@foxmail.com 我们会第一时间进行审核删除。
站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果遇到评论下载的文章,评论后刷新页面点击对应的蓝字按钮即可跳转到下载页面
本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip,zip、rar解压,建议下载WinRAR

给TA打赏
共{{data.count}}人
人已打赏
服务器相关

Linux/CentOS/Nginx宝塔面板高并发优化方案

2023-5-8 20:27:07

服务器相关

服务器防火墙脚本强化:保护真实 IP 不泄露

2023-5-18 15:34:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索