37
9
What's difference between sudo
and gksudo
?
37
9
What's difference between sudo
and gksudo
?
27
sudo
asks for the password on the command line, and gksudo
pops up a dialog box for it.
@ephemient So besides the graphical prompt, is sudo -E
equivalent to gksudo
? – isomorphismes – 2015-02-26T13:55:09.030
3
the answer below seems far superior http://superuser.com/a/726249/112542
– johny why – 2015-05-25T17:17:00.1804
I want to emphasize that this is not the crucial difference at all, and this answer is quite misleading to newbies. The major difference is explained here: http://askubuntu.com/a/11766/81034 and the answer below (that @johnywhy linked to) goes a step beyond that to add some nuance to that. Please read the askubuntu question rather than relying on this misleading answer.
– sundar - Reinstate Monica – 2015-09-26T13:22:33.8706
gksu(do) also has its own configuration of which environment variables to pass through to the child, separate from su(do)'s own. For example, if your sudoers config specifies !keep_env, the lack of $DISPLAY may prevent graphical applications from running, but gksudo should work. You can find some details at http://git.debian.org/?p=users/kov/gksu-polkit.git%3Ba=blob%3Bf=common/gksu-environment.vala or http://live.gnome.org/gksu .
– ephemient – 2010-10-23T21:55:17.34731
gksudo
is a GTK-based frontend of sudo
(BTW, kdesudo
is a Qt-based frontend), however it (by default) handles more environmental variables(HOME
, XAUTHORITY
, etc.) than sudo
thus making running commands as root safer.
As far as I can see only @Logics answer is correct enough (@Ignacio Vazquez-Abrams's is not complete). Here is the try-to-avoid clarification to @Davros @knitti answer/comments (Please kindly remove/edit them when it's not needed):
sudo
, the UI used is NOT the only difference of the two commands. HOME
environment variable points to in the sudo
command in some system and situations). Not all GUI apps writes to your home directory and not all CLI apps don't, so the type of command isn't the key point. sudo
command to launch GUI apps as root (for viewing apps' console output as an example), however you need to handle HOME
(and others such as XAUTHORITY
, DISPLAY
, input-method-related-stuff, etc.) environmental variables correctly so that the launched app won't fail, lose functionality or do really-bad stuff. The following is my current recommendation for using sudo
sudo -H <rest of the command>
sudo
section 8 manual page) The -H ( HOME )
option requests that the security policy set the HOME
environment variable to the home directory of the target user (root by default) as specified by the password database. Depending on the policy, this may be the default behavior.sudo
caller's home directorysudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
sudo
command is not identical on all the systems and can be configured through visudo
command, please check out sudoers(5)
manpage for more info.2seems a much better explanation than the one that's getting all the votes. more thorough, more correct. even the OP replied "is that all?" to the answer that got all the votes. – johny why – 2015-05-25T17:16:08.817
2
Using regular sudo to run graphical programmes will on a rare occasion mess up permissions on some files. To be safe gksudo (or kdesudo as appropriate) should be used for running programmes with a GUI. I think this is a bug really, although I heard explanations that gksudo understands X server variables and sudo does not possibly leading to problems. Just as a tip; if you are running graphical programmes as root, instead of opening up one terminal for each programme you want to run, type ALT-F2 (alt and function key 2 at the same time), then type in the dialogue box that pops up "gksudo programme" without the quotes and programme replaced by the application you want to run.
2
sudo runs as the current user with elevated privileges. This has the potential of changing file permissions of certain user config files (relating to your graphical environment) when running graphical apps. You may find errors occurring when running these apps again without sudo.
gksudo (kdesudo under KDE) runs the apps as root user thus any file permissions touched are on root's files, not the users files. running these apps again without gksudo/kdesudo will always have the expected behavior.
0
The current answer is incorrect. According to the Ubuntu RootSudo wiki:
"You should never use normal sudo to start graphical applications as root. You should use gksudo (kdesudo on Kubuntu) to run such programs. gksudo sets HOME=~root, and copies .Xauthority to a tmp directory. This prevents files in your home directory becoming owned by root. (AFAICT, this is all that's special about the environment of the started process with gksudo vs. sudo)."
2There are four other answers; which one is incorrect? Isn't your answer essentially the same as the one by Davros? – fixer1234 – 2015-04-17T06:30:41.107
I was referring to the answer marked as correct. Yes, Davros is saying the same thing, but I added this because his did not contain a link to a source. – artis3n – 2015-04-17T16:42:14.140
1A better solution would be to propose an edit to that answer. Improving an answer is likely to be accepted (+2 rep), whereas essentially duplicating an answer is likely to attract downvotes. – fixer1234 – 2015-04-17T16:49:59.317
1Good question. Im learning Linux now (You can see that I haven<t found my keyboard layout yet) Haha! – r0ca – 2010-10-23T21:24:27.687