首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用vimdiff时,我可以在可写目录中编辑文件吗?

使用vimdiff时,我可以在可写目录中编辑文件吗?
EN

Unix & Linux用户
提问于 2018-01-10 04:29:00
回答 2查看 3.9K关注 0票数 3

当我想要vimdiff根文件时,我按照这一建议使用以下别名。

代码语言:javascript
复制
alias sudovimdiff='SUDO_EDITOR=vimdiff sudoedit'

然后,我可以使用以下命令。

代码语言:javascript
复制
$ sudovimdiff /root/a /root/b

但是,如果我的用户可以写其中一个文件,则命令将失败。

代码语言:javascript
复制
$ sudovimdiff /root/a /tmp/b
sudoedit: /tmp/b: editing files in a writable directory is not permitted

是否有办法使用我的用户的环境设置(即sudoedit)来区分一个根文件和一个非根文件?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-07-05 10:38:39

可能与sudo编辑错误消息相关:

编辑:.。不允许在可写目录中编辑文件。

请尝试使用sudo visudo修改sudoers文件,添加一行:

代码语言:javascript
复制
Defaults  !sudoedit_checkdir

更多的这里

票数 4
EN

Unix & Linux用户

发布于 2018-01-10 06:13:37

来自man sudo,在描述-e (又名sudoedit)的部分:

代码语言:javascript
复制
 To help prevent the editing of unauthorized files, the
 following restrictions are enforced unless explicitly allowed
 by the security policy:

 ·   Symbolic links may not be edited (version 1.8.15 and
     higher).

 ·   Symbolic links along the path to be edited are not
     followed when the parent directory is writable by the
     invoking user unless that user is root (version 1.8.16
     and higher).
 ·   Files located in a directory that is writable by the
     invoking user may not be edited unless that user is root
     (version 1.8.16 and higher).

因此,要么:

  • 我们调用sudoedit作为根,这将违背目的或
  • 我们将用户的文件复制到用户不可编辑的新目录: mkdir /tmp/foo cp /tmp/b /tmp/foo chmod a-w /tmp/foo sudoedit /root/a /tmp/foo/b
  • 我们编辑根文件,并在以下内部对其进行区分: sudoedit / root /a #,在Vim中:Vim: diffsplit /tmp/b
  • 由于sudoedit处理所有非sudo参数文件名,所以您可以使用一个包装脚本:$ cat foo.sh #!/bin/sh exec vimdiff "$@“"$DIFF_FILE”$ SUDO_EDITOR ="$PWD/foo.sh“DIFF_FILE=$PWD/.zshrc”sudoedit /etc/zsh/zshrc密码“用于编辑sudo编辑: /etc/zsh/zshrc
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/415978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档