kassube at gmx.net
Thu Apr 30 06:57:12 UTC 2009
Steven Vollom wrote:
> > > steven at Yeshua:~$ sudo kate
> > > [sudo] password for steven:
> > > Error: "/var/tmp/kdecache-steven" is owned by uid 1000 instead of
> > > uid 0. Error: "/tmp/kde-steven" is owned by uid 1000 instead of
> > > uid 0. Error: "/tmp/ksocket-steven" is owned by uid 1000 instead
> > > of uid 0.
> Thanks, I was advised, tried and it worked, kdesudo kate, but I still
> don't understand the error. I have seen this before and no one ever
> has explained the comment uid 1000 instead of uid 0. I believe I am
> user ID 1000, but I don't understand how User ID 0 comes into the
> picture. Will you explain this a bit? Thanks! When I happens
> again, I would like to understand the comment.
Yes, you are user steven with UID 1000 and UID 0 is user root. When kate
starts, it looks for links in the directory $HOME/.kde which point to
the directories mentioned in your error messages. Those directories are
supposed to be owned by the user starting kate. If you use sudo, the
UID is 0 (for root) but the directories are owned by UID 1000 (steven).
If you use sudo, the $HOME environment variable points to /home/steven.
Therefore kate finds the links in /home/steven/.kde pointing to the
directories of the error messages. OTOH, if you use kdesudo instead,
the environment variable $HOME is set to /root which is the home
directory of the user root. There kate finds the appropriate
directories which are actually owned by UID 0 (root) and therefore it
doesn't complain but starts normally.
You can see the difference between the environment variables with these
commands in a terminal:
sudo bash -c set >set1.txt
kdesudo "bash -c set" >set2.txt
diff -u set1.txt set2.txt >diff.txt
The first two commands write the environment variables to the files
set1.txt and set2.txt and the third command compares the environments
writing the output to diff.txt. Then kate opens that file and it shows
the difference in red / blue. The important part is the HOME variable
which is different. The other differences aren't important here.
Now, if you try to start kate with sudo instead of kdesudo it just
refuses to start because of the possible problems it may cause if you
want to start it without sudo later. Other programs may not complain
and simply use the (wrong) $HOME variable to find the path to
configuration files and change the ownership of the config files to
make them owned by root. That will of course bite you later when you
want to use the application as normal user. Therefore always use
kdesudo instead of sudo to start graphical applications as user root.
More information about the kubuntu-users