vim i pliki w /tmp (było Re: vixie-cron - /etc/cron.d)
Jakub Bogusz
qboosh w pld.org.pl
Śro, 13 Mar 2002, 11:13:34 CET
On Tue, Mar 12, 2002 at 05:01:24PM +0100, Jakub Bogusz wrote:
> On Tue, Mar 12, 2002 at 04:40:56PM +0100, Jakub Bogusz wrote:
> > Podobno #82 miało być "fixed"?
> > /etc/cron.d to katalog na crontaby, miejsce na cron.{allow,deny} jest
> > w /etc/cron (bez ".d"), jak w pakiecie hc-cron.
>
> A... co do #93 - rozwiązaniem jest nałożenie patcha
> hc-cron-closefile.patch (powinien się nałożyć - fragmenty kodu są
Sprawdziłem, nakłada się bez żadnych zmian.
> identyczne w hc i vixie), ale zastanowił mnie komentarz:
>
> | /* we still have the file open. editors will generally rewrite the
> | * original file rather than renaming/unlinking it and starting a
> | * new one; even backup files are supposed to be made by copying
> | * rather than by renaming. if some editor does not support this,
> | * then don't use it. the security problems are more severe if we
> | * close and reopen the file around the edit.
> | */
No i w przypadku standardowej konfiguracji vima to wygląda kiepsko - podczas
zapisu pliku:
| 32461 stat("tstvi", {st_mode=S_IFREG|0600, st_size=32, ...}) = 0
| 32461 access("tstvi", W_OK) = 0
| 32461 lstat("tstvi", {st_mode=S_IFREG|0600, st_size=32, ...}) = 0
| 32461 stat("4913", 0xbffff58c) = -1 ENOENT (No such file or directory)
| 32461 open("4913", O_WRONLY|O_CREAT|O_EXCL, 0100600) = 3
co to jest???
[po zerknięciu do źródeł: już wiem, sprawdza czy może pisać do katalogu;
ale dziwnie to wygląda]
| 32461 close(3) = 0
| 32461 chown("4913", 550, 1000) = 0
| 32461 stat("4913", {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
| 32461 unlink("4913") = 0
| 32461 stat("tstvi~", 0xbffff50c) = -1 ENOENT (No such file or directory)
| 32461 unlink("tstvi~") = -1 ENOENT (No such file or directory)
| 32461 rename("tstvi", "tstvi~") = 0
przy open() nie ma O_EXCL - w tym miejscu robimy sobie
ln -s /etc/cośtam /tmp/cośtam...
| 32461 open("tstvi", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
| 32461 write(3, "eifnwengienre\nrngeni\nirengeirn\na"..., 41) = 41
| 32461 close(3) = 0
| 32461 chmod("tstvi", 0100600) = 0
| 32461 chown("tstvi", 550, 1000) = 0
| 32461 stat("tstvi", {st_mode=S_IFREG|0600, st_size=41, ...}) = 0
| 32461 write(1, " 4L, 41C written", 16) = 16
W połączeniu ze sposobem robienia plików tymczasowych przez vixie- i hc-crona
(/tmp/crontab.PID) wygląda to źle.
Po ":set nobackup nowritebackup" (albo kiedy nie może pisać do katalogu)
vim nie robi tego rename (i wtedy crontab -e działa bez łatania).
Ale to nie jest standardowa konfiguracja vima.
Coś tu jest do poprawienia... tylko co?
--
Jakub Bogusz
Więcej informacji o liście dyskusyjnej pld-devel-pl