Lin*_*eak 5 permissions sudoedit
为什么我不能编辑 root 拥有的文件,但在我个人目录深处的某个地方,它说:
Run Code Online (Sandbox Code Playgroud)sudoedit: existingFile: editing files in a writable directory is not permitted
虽然我定义了以下函数:
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)
证明:
Run Code Online (Sandbox Code Playgroud)-rwxr-xr-x 1 root root 40 Jun 15 2015 existingFile
手册页说
位于调用用户可写目录中的文件可能无法编辑,除非该用户是 root(版本 1.8.16 及更高版本)。
如果您可以写入包含文件的目录,那么您可以在实践中编辑它而不需要sudoedit(尽管您可能无法读取其当前内容):您可以将其移开并创建一个具有相同内容的新文件姓名。在您的特定情况下,您可以读取文件,并且您应该发现至少有一些编辑器允许您编辑它(至少那些通过写入临时文件并将其重命名到位来保存文件的编辑器)。
这个特性背后的原因在sudo错误 707 中给出:基本上,允许用户编辑他们可以写入的目录中的文件sudoedit可以让他们绕过sudoedit配置中设置的限制(并有效地编辑系统上的任何文件)。