cac2s wrote:
> I've tried this experiment:
>
> 1. $ sudo vim /var/www/htdocs/robots.txt
>
> robots.txt is owned by www-data:www-data
>
> 2. made some changes in the robots.txt and ":wq"
>
> 3. $ sudo ls -la /root/.vim/undofiles/%var%www%htdocs%robots.txt
> -rw-r----- 1 root www-data 2234 Sep 7 14:43
> /root/.vim/undofiles/%var%www%htdocs%robots.txt
>
> as you can see the undo file of robots.txt owned by root:www-data now
>
> 4. sudo chown cac2s.cac2s /root/.vim/undofiles/%var%www%htdocs%robots.txt
>
> "cac2s.cac2s" is chosen only as an example
>
> $ sudo ls -la /root/.vim/undofiles/%var%www%htdocs%robots.txt
> -rw-r----- 1 cac2s cac2s 2234 Sep 7 14:43
> /root/.vim/undofiles/%var%www%htdocs%robots.txt
>
> 5. made some changes in the robots.txt and ":wq"
>
> 6. $ sudo ls -la /root/.vim/undofiles/%var%www%htdocs%robots.txt
> -rw-r----- 1 root www-data 2234 Sep 7 14:43
> /root/.vim/undofiles/%var%www%htdocs%robots.txt
>
> the undo file of robots.txt owned by root:www-data again! not by cac2s:cac2s
> as it was set in step 4.
>
>
> this experiment suggests that vim himself sets the owner of undo file, using
> the fact that it is running as root.
>
> so maybe correctly set the owner of undo file the same as that of the file
> being edited, knowing that vim running as root, which guarantees the
> continued use of the file changes for an undo/redo actions?
So, do you want some arbitrary user be able to undo the changes that
root has made? Those are root's changes, in my opinion only root should
be able to do anything with these changes. Also, we probably don't want
any other user than root being able to see what changes were made, thus
the owner of the undo file must be set to the user who made the changes.
In case the same user edits the file again, then it does make sense to
use the undo file. So perhaps we can allow reading the undo file if
it's owned by the current user, even when this differs from the owner of
the file?
Try this patch:
*** ../vim-7.4.022/src/undo.c 2013-06-10 20:13:37.000000000 +0200
--- src/undo.c 2013-09-07 15:45:56.000000000 +0200
***************
*** 1604,1613 ****
#ifdef UNIX
/* For safety we only read an undo file if the owner is equal to the
! * owner of the text file. */
if (mch_stat((char *)orig_name, &st_orig) >= 0
&& mch_stat((char *)file_name, &st_undo) >= 0
! && st_orig.st_uid != st_undo.st_uid)
{
if (p_verbose > 0)
{
--- 1604,1614 ----
#ifdef UNIX
/* For safety we only read an undo file if the owner is equal to the
! * owner of the text file or equal to the current user. */
if (mch_stat((char *)orig_name, &st_orig) >= 0
&& mch_stat((char *)file_name, &st_undo) >= 0
! && st_orig.st_uid != st_undo.st_uid
! && st_undo.st_uid != getuid())
{
if (p_verbose > 0)
{
--
hundred-and-one symptoms of being an internet addict:
181. You make up words that go with the "happy tune" your modem makes
while dialing your ISP.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.