设置 EDITOR 变量会导致编辑 Crontab 时出现“E886: Can't rename viminfo file”

设置 EDITOR 变量会导致编辑 Crontab 时出现“E886: Can't rename viminfo file”

我使用 Vim 作为我的编辑器。

我想在使用 .Crontab 编辑时进行语法着色crontab -e。我跟着回答。设置变量EDITOR=vim并导出后,它crontab -e现在显示我想要的语法颜色。我正在以我自己的用户身份编辑 Crontab,而不是使用 Sudo。

但是,这会在关闭 Crontab 时导致错误:

/tmp/crontab.019kNj" 4L, 278C written
E886: Can't rename viminfo file to /home/me/.viminfo!
Press ENTER or type command to continue

保存更改和关闭而不保存时都会发生这种情况。仅使用 Crontab 时才会出现错误,直接使用 Vim 编辑文件没有问题。使用变量VISUAL而不是 时的行为类似EDITOR

该文件.viminfo存在于我的主目录中并且具有合理的权限:

-rw-------.  1 me me  11K 15.10. 12:49 .viminfo

权限/home/me 也有意义:

drwx------. 33 me me   4,0K 15.10. 13:13 me

OS 版本是Red Hat Enterprise Linux Workstation release 7.9 (Maipo),Vim 版本是VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan 29 2020 08:09:16),shell 是GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)。 Crontab 的版本是crontabs-1.11-6.20121102git.el7.noarch.

是什么导致了此错误消息?在没有它的情况下编辑 Crontab 时如何启用语法着色?

编辑:

如果我重命名.viminfo错误更改:

E138: Cannot write viminfo file /home/me/.viminfo!

答案1

事实证明,这是由 Selinux 策略阻止 Crontab 写入主目录引起的。类似案例已报道红帽错误追踪器:

使用 EDITOR=vim 运行“crontab -e”并对 cron 文件进行一些更改。当退出 vim 时,总是收到警告消息: E138: Can't write viminfo file /home/hpt/.viminfo!以及 /var/log/messages 中的一些 avc 消息:

6月15日13:51:24本地主机内核:类型= 1400审核(1245045084.399:17236):avc:拒绝{写入} for pid = 24910 comm =“vim”name =“hpt”dev = dm-6 ino = 2301953 scontext = unconfined_u:unconfined_r:admin_crontab_t:s0-s0:c0.c1023 tcontext = system_u:object_r:user_home_dir_t:s0 tclass = dir Jun 15 13:51:24 localhost内核:type = 1400审核(1245045084.400:17237):avc:拒绝{创建} 对于 pid=24910 comm="vim" name="v69994" scontext=unconfined_u:unconfined_r:admin_crontab_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:tmp_t:s0 tclass=dir 六月 15 日 13:51:24 本地主机内核:类型= 1400审核(1245045084.400:17238):avc:拒绝{写入} for pid = 24910 comm = 24910 comm =“vim”name =“hpt”dev = dm-6 ino = 2301953 scontext = unconfined_u:unconfined_r:admin_crontab_t:s0- s0:c0.c1023 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir 所选组件的版本-发布号(如果适用):

解决方案是改变政策以允许这种情况发生。我没有有关该更改的详细信息,因为我没有对这台计算机的 Sudo 访问权限,因此更改是由其他人完成的。

相关内容