gksu
is basically a graphical frontend for sudo that allows graphical command to be run without the need to run an X terminal emulator and using su directly. It's effectively just a GTK+ skin for the superuser commands.
So if you wanted to run a GUI based program as root, you would invoke it with gksu cmd
, rather than sudo cmd
, which is used for invoking console programs as root.
Both files point to the same place:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudo
is symlinked to gksu
. But this doesn't mean they do the same things, far from it.
Applications can detect the command used to run it. This is typically argv[0]
in C-style languages or $0
in Bourne-style shell scripts. The application can look at that and in this case, actually it changes how it works. The first indication of this is in the man gksu
page:
gksu is a frontend to su and gksudo is a frontend to sudo.
If you look in the source (apt-get source gksu
) for run_mode
, you'll see how it detects this:
{ /* support gksu_sudo_run */
gchar *myname = g_path_get_basename (argv[0]);
if (!strcmp(myname, "gksudo"))
run_mode = SUDO_MODE;
g_free (myname);
}
You can override this with the --su-mode
/-w
and --sudo-mode
/-S
arguments (so you can run equivalent commands without needing the gksudo
symlink... But that's up to you.
If you want to know how these "modes" really differ, there's only a bit of escaping in gksu
. You need to follow it into libgksu
. This is the library that actually checks permissions before handing off to the system.
If no mode is specified (eg you call gksu
without arguments) by the time it reaches libgksu
, it will check Gconf (as Stefano points out) and if it still can't decide, it'll default to the su
mode.
Best Answer
Taken from here:
Please note that this is primarily about configuration files. If you run Nautilus as
root
, even withgksu
/gksudo
, and you create a file or folder anywhere with it (including in your home directory), that file or folder will be owned byroot
. But if you run Nautilus (or most other graphical applications) asroot
withsudo
, they may save their configuration files in your home directory (rather thanroot
's home directory). Those configuration files may be owned byroot
and inaccessible when you're not running as root, which can severely mess up your settings, and may even keep some applications from working altogether.The solution, once you have made this mistake, is to find the configuration files and delete them or
chown
them back to belonging your non-root
user. Many such files start with a.
or are contained in a directory that starts with a.
. Some are located inside the.config
folder in your home directory. To see files and folders that start with a.
in Nautilus, press Ctrl+H (this shows hidden files.) To see them withls
, use the-a
(or-A
) flag.To find if there are files not owned by you in your home directory, you can use the following command in a terminal:
which will list all files under the home directory not owned by the user.