无法恢复以 root 身份运行的编辑器

无法恢复以 root 身份运行的编辑器

多年来,当我通过 SSH 连接工作时,我会运行sudo vi ...来编辑配置文件。如果我需要在命令行上执行某些操作,我会按 Ctrl+Z 暂停编辑器,执行一些操作,然后fg再返回。

但这不再按预期工作(据我所知,从 Ubuntu 14.04 开始)。编辑器可以正常暂停,但我第一次尝试恢复时好像什么都没发生(或者它可能暂时恢复但随后再次暂停)。如果我fg第二次尝试,编辑器似乎恢复了,但我按下的任何键都只会回显到控制台。但此时按下 Ctrl+Z 确实会暂停它并返回到 shell。

我不知道如何重新获得对编辑器的控制权。我通常只能sudo kill通过进程 ID 来获取控制权(kill %1返回“操作不允许”,正如我所料,因为编辑器是以 root 身份运行的)。

请不要建议使用screen和/或单独的终端,因为我已经这样做了。我想知道是否有解决这个特定问题的方法,因为按 Ctrl+Z 是一种根深蒂固的习惯,我一直不假思索地这样做。Ubuntu 最近是否更改了一些安全模型?

更新

我还没有弄清楚这个问题,但我认为这与暂停嵌套进程有关。我不确定这是否是 sudo 特有的。我无法可靠地重现它,但这是导致它最常发生的序列:

  1. sudo vifilename
  2. Ctrl+Z暂停 vi
  3. vianother-filename
  4. Ctrl+Z
  5. fg 1尝试恢复以 root 身份运行的 vi。此时,shell 只会说[1]+ Stopped sudo vi filename。再次尝试fg 1似乎会恢复 vi,但任何击键都只会回显到控制台。

似乎发生的情况是,当我暂停 时sudo visudovi进程都停止了。当我fg第一次暂停 时,只有sudo恢复。当我fg第二次暂停 时,sudo停止了,但vi恢复了。在正常情况下,两个进程都应该恢复。

相关内容