저는 Vim을 편집자로 사용합니다.
.Crontab을 사용하여 편집할 때 구문 색상을 지정하고 싶습니다 crontab -e
. 나는 팔로우한다이것답변. 변수를 설정 EDITOR=vim
하고 내보내면 crontab -e
이제 원하는 구문 색상이 표시됩니다. Sudo를 사용하지 않고 내 사용자로 Crontab을 편집하고 있습니다.
그러나 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)
, 쉘은 입니다 GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
. 크론탭의 버전은 crontabs-1.11-6.20121102git.el7.noarch
.
이 오류 메시지의 원인은 무엇입니까? Crontab을 편집할 때 구문 색상 지정을 활성화하는 방법은 무엇입니까?
편집하다:
.viminfo
오류 이름을 바꾸면 다음과 같이 변경됩니다.
E138: Cannot write viminfo file /home/me/.viminfo!
답변1
이는 Crontab이 홈 디렉토리에 쓰는 것을 방지하는 Selinux 정책으로 인해 발생한 것으로 밝혀졌습니다. 비슷한 사례가 보고되었습니다Red Hat 버그 추적기:
EDITOR=vim으로 "crontab -e"를 실행하고 cron 파일을 일부 변경합니다. vim을 종료할 때 항상 경고 메시지가 나타납니다: E138: viminfo 파일 /home/hpt/.viminfo를 쓸 수 없습니다! 및 /var/log/messages에 일부 avc 메시지가 있습니다:
6월 15일 13:51:24 localhost 커널: type=1400 audit(1245045084.399:17236): avc: pid=24910 comm="vim" name="hpt" dev=dm-6 ino =2301953 scontext=에 대한 거부 {write} unconfined_u:unconfined_r:admin_crontab_t:s0-s0:c0.c1023 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir 6월 15일 13:51:24 localhost kernel:type=1400 audit(1245045084.400:17 237): avc :deny{ create} for 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 June 15 13:51:24 localhost 커널: 유형=1400 감사(1245045084.400:17238): avc: pid=24910 comm=24910 comm="vim" name="hpt" dev=dm-6 ino= 2301953 scontext=unconfined_u:unconfined_r에 대한 {write} 거부: admin_crontab_t:s0-s0:c0.c1023 tcontext=system_u:object_r:user_home_dir_t:s0 tclass=dir 선택한 구성 요소의 버전-릴리스 번호(해당하는 경우):
해결책은 이러한 일이 발생하도록 정책을 변경하는 것입니다. 이 머신에 대한 sudo 액세스 권한이 없기 때문에 변경 사항에 대한 세부 정보가 없습니다. 그래서 다른 사람이 변경했습니다.