非根目录中的 sudoedit 根拥有的文件

Lin*_*eak 5 permissions sudoedit

为什么我不能编辑 root 拥有的文件,但在我个人目录深处的某个地方,它说:

sudoedit: existingFile: editing files in a writable directory is not permitted
Run Code Online (Sandbox Code Playgroud)

虽然我定义了以下函数:

function sunano {
    export SUDO_EDITOR='/usr/local/bin/nano'
    sudoedit "$@"
}
Run Code Online (Sandbox Code Playgroud)

我像这样编辑:

sunano existingFile
Run Code Online (Sandbox Code Playgroud)

文件确实归 root 所有:

ls -l existingFile
Run Code Online (Sandbox Code Playgroud)

证明:

-rwxr-xr-x 1 root root 40 Jun 15  2015 existingFile
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 7

手册

位于调用用户可写目录中的文件可能无法编辑,除非该用户是 root(版本 1.8.16 及更高版本)。

如果您可以写入包含文件的目录,那么您可以在实践中编辑它而不需要sudoedit(尽管您可能无法读取其当前内容):您可以将其移开并创建一个具有相同内容的新文件姓名。在您的特定情况下,您可以读取文件,并且您应该发现至少有一些编辑器允许您编辑它(至少那些通过写入临时文件并将其重命名到位来保存文件的编辑器)。

这个特性背后的原因在sudo错误 707 中给出:基本上,允许用户编辑他们可以写入的目录中的文件sudoedit可以让他们绕过sudoedit配置中设置的限制(并有效地编辑系统上的任何文件)。