当我没有权限时,如何从 Linux 中的文件系统中删除文件?

当我没有权限时,如何从 Linux 中的文件系统中删除文件?

我重新安装了 ns2,但没有从文件系统中删除路径为以下的文件:

/usr/bin/ns

因此,当我在终端上输入时:

which ns

我得到:

/usr/bin/ns 

而不是我设置的路径:

/home/me/ns-allinone-2.35/bin/ns

这是在我的 home 目录中me。我该如何删除文件系统中具有类似名称的文件?此文件的属性在权限中显示我不拥有此文件,因此我无法更改权限。

如果路径设置不正确,我将无法运行我的 tcl 脚本,要设置路径,我需要删除重复的ns。如何获得删除权限?如何使用我的终端删除它?

答案1

不是必需的您删除该文件/usr/bin/ns以便制作whichexec自动执行/home/me/ns-allinone-2.35/bin/ns

你所要做的就是穿上/home/me/ns-allinone-2.35/bin你的$PATH 之前 /usr/bin

这是错误的方法如下:

export PATH="${PATH}:/home/me/ns-allinone-2.35/bin"

在这种情况下,/usr/bin(默认情况下$PATH)将是较早扩展中的$PATH比您想要的更多,因此/usr/bin/ns当您运行ns或时您将执行which ns

这是正确的方法如下:

export PATH="/home/me/ns-allinone-2.35/bin:${PATH}"

现在,只需输入nswhich ns就会指向您想要的那个,而无需删除任何内容。

更新:如果您愿意,为了避免修改$PATHin~/.bashrc或类似文件,您可以围绕 tcl 脚本创建一个 bash 脚本包装器,该包装器首先修改路径。如下所示:

#!/bin/bash
export PATH="/home/me/ns-allinone-2.35/bin:${PATH}"
tcl ...

如果你想删除/usr/bin/ns 反正,并且您无权访问该root帐户或能力sudo(或将自己放入/etc/sudoers文件中),并且该文件/usr/bin/ns归所有人所有root且不可被所有人写入,那么您几乎没有办法删除此文件,除非

  • 您可以将计算机启动到另一个操作系统(live CD、live USB 等),获取 root 权限OS,并删除该文件;
  • 你执行某种漏洞(如果您没有该机器,我不建议您这样做!

基本上,“如何删除我没有权限删除的文件”是一个引导性问题:这个问题假设机器的所有者想要删除此文件,然后想要给予你许可。如果机器的所有者不是,你根本就不应该问这个问题,我们也不会帮你破坏或侵入别人的机器。这就像问“我没有钥匙,怎么在街上开这辆车?”——是的,祝你好运。

答案2

快速浏览一下我自己的/usr/bin/目录,发现该目录归 root 所有。假设您可以使用sudosurm作为root或使用chown将其更改为您的用户名或组。

只需发出命令即可成为 root 用户su。在大多数终端中,您会看到提示符从 $ 变为 #,表示您当前以 root 身份登录到终端。请确保在以 root 身份完成操作后exit立即退出,以免无意中发出具有如此高文件系统访问权限的其他命令,这可能会导致您损坏文件系统。从那里您可以rm使用/usr/bin/ns

更安全路线是使用该sudo命令允许以 root 身份为该实例运行命令,方法是发出rm以下命令:

sudo rm /usr/bin/ns

答案3

@allquixotic 完全正确。你不能删除文件,如果你没有权限这样做,唯一的方法是得到通过使用漏洞或类似方法获取权限,sudo如果您有权限的话。这就是文件系统权限的全部意义所在。

现在,您可以使用另一种方法来解决这个问题,即设置别名。打开 shell 的初始化文件(~/.bashrc如果您正在使用bash)并添加以下行:

alias ns='/home/me/ns-allinone-2.35/bin/ns'

Bash 别名被评估搜索$PATH,因此这将使ns命令默认指向您本地安装的版本。

相关内容