为什么我不能编辑 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
系统:Linux Mint 18.1 64 位 Cinnamon。
目标:定义Bash别名以在从模拟器以root模式打开文件时启动各种CLI和GUI文本编辑器。gnome-terminal
例如,以下别名似乎按预期工作:
alias sunano='sudo nano'
Run Code Online (Sandbox Code Playgroud)
alias suxed='sudo xed'
Run Code Online (Sandbox Code Playgroud)
他们都以root身份打开文件。
我有一个问题gksudo
与sublime-text
:
alias susubl='gksudo /opt/sublime_text/sublime_text'
Run Code Online (Sandbox Code Playgroud)
有时它有效。大多数时候它什么都不做。
我如何调试这种行为不一致的东西?它不输出任何东西。没有错误信息或类似信息。
gksudo
已在 Debian 中被弃用,也不再包含在 Ubuntu 18.04 Bionic 中,所以让我将这个问题重新表述为一个仍然有效的问题:
如何在 Linux 的 GUI(和 CLI)中正确编辑系统文件(以 root 身份)?
在这种情况下,我正确地定义为安全,例如,在文件编辑期间发生断电,另一个示例可能是 SSH 连接丢失等。