Micah Cowan wrote:

> Copying the dev list. The missing context is that running vim via sudo
> before having run it as regular user, causes permission problems with
> the created .viminfo file (and others?).
> 
> Vincent BEFFARA wrote:
> >>> Wonderful, the problem really is about permission of .viminfo!
> >>>
> >>> I noticed that you considered this to be a bug, but is this bug belon> gs 
> >>> to
> >>> "sudo" or "vim"?
> >>>
> >>> i.e. for non-interactive "su" of "root", vim will save at user $HOME > 
> >>> with
> >>> root permission.
> >> FYI, this same issue was discussed at
> >> https://bugs.launchpad.net/ubuntu/+bug/58002
> > 
> > From that discussion it would appear that it is a bug of neither, but
> > rather of Ubuntu itself : sudo (as configured there) preserves $HOME,
> > vim sees it and uses it to create .viminfo if it is not there. The
> > natural fix is to put the right option in the sudo config file
> > (always_set_home or something sounding like that).
> 
> Except that this isn't always what is desired. And, if it's a bug of
> Ubuntu, it's also a bug of every other distribution I've ever known
> (thought there probably are some of which I'm aware, that set this).
> 
> The biggest beef I would have with setting that option is that there
> doesn't appear to be a way to /disable/ it for individual cases :p
> ...still, I can't envision a reasonable case where the user couldn't
> simply type out his own home directory (~user instead of ~?), or if
> necessary set the environment himself within the sudo command, so it may
> be a reasonable solution.
> 
> > However, it would be nice of vim to always test that it owns the $HOME
> > directory before creating files there. Would it break anything ?
> 
> I think this would be a good idea as well. One could argue that if we
> reason this way for vim, we should reason this way about everything that
> ever creates config files in the user's home directory; however, not
> every such thing can be expected to be run as root, and editors--and
> most particularly vim--are extremely likely to be run as root, so I
> think it's not unreasonable to ask them to take on this responsibility.

And what if root always uses $HOME/.viminfo, where $HOME is the only
person who can be root?  It might be that there is no root home
directory.

Let's keep it simple: $HOME/.viminfo is the default viminfo file.  If
you want to use another file you have to tell Vim.

> Perhaps rather than simply avoiding file creation, in the case of root
> we could set the file's owner to the real id/gid, instead of the
> effective one. This option is unavailable when the user is sudoing as
> non-root, but this seems much less likely to happen before having run it
> normally, than running under sudo is.

Giving away a file is a big no-no for security reasons.  Root may yank
text in a register that a normal user is not supposed to see and this
ends up in the viminfo file.

> Another issue, which was touched on in that Ubuntu bug report, is that
> vim doesn't warn or anything when it can't open .viminfo. Perhaps it
> should distinguish between ENOENT and EPERM, and warn in the latter
> case? It should possibly also warn in the event that it decides to
> change ownership as above (if this is decided to be a good idea), or
> when it is not created because of non-root, non-HOME-owner effective
> user id.

        :set verbose=1

When ACLs are used there are many ways reading a file can fail.  Just
mentioning that it failed should be sufficient, the user will have to
figure out why.  That's better than a wrong message.

-- 
>From "know your smileys":
 :-| :-|   Deja' vu!

 /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

Reply via email to