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

pyt*_*ark 2 linux path environment-variables

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

/usr/bin/ns
Run Code Online (Sandbox Code Playgroud)

所以当我在终端上输入时:

which ns
Run Code Online (Sandbox Code Playgroud)

我得到:

/usr/bin/ns 
Run Code Online (Sandbox Code Playgroud)

而不是我设置的路径是:

/home/me/ns-allinone-2.35/bin/ns
Run Code Online (Sandbox Code Playgroud)

这是在我的主目录中me。我应该如何删除文件系统中具有相似名称的文件?这个文件的属性在权限中说我不拥有这个文件,所以我不能更改权限。

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

all*_*tic 8

它不要求你删除的文件/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(默认情况下 on $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 ...
Run Code Online (Sandbox Code Playgroud)

如果您/usr/bin/ns 无论如何都想删除,并且您无权访问该root帐户或无法sudo(或将自己放入/etc/sudoers文件中),并且/usr/bin/ns归所有人所有root且不可写入世界,那么您通常无法选择删除这个文件,除非

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

基本上,“如何删除我没有删除权限的文件”是一个加载问题:该问题假设机器的所有者希望您删除此文件,并希望授予您权限。如果机器的主人不是,你甚至不应该问这个问题,我们不会帮助你打破或侵入别人的机器。这就像在说“我没有钥匙怎么在街上开这辆车?” ——是的,祝你好运。