2

Sometimes I need to edit files in /etc. I know I can do this with the console (sudo mv some/file /etc/some/file, sudo nano /etc/some/file) etc, but I find this way a bit clunky. Call me spoiled, but I'm really used to GUI tools such as Nautilus and Gedit.

Distributions such as Ubuntu Mate or Mint make it easy: I can right click a folder and then a context menu appears with options such as "open as administrator". From then double-clicking a text file opens it in gedit with elevated privileges.

However, I can't find such an option in the default Unity version of Ubuntu:

enter image description here

Note:

  • I am aware of the question Ways to run Nautilus with elevated privileges , but the solution recommended here is to use gksudo, which no longer works
  • I suppose I can always do sudo gedit /etc/whatever, but - AFAIK - using sudo with GUI tools is heavily ill-advised
  • I recall some say that it is ill-advised to run GUI tools with elevated privileges at all. This doesn't seem to be the case, however, since some default GUI tools themselves ask for elevation, Ubuntu Software being perhaps one of the most prominent examples:

enter image description here

Is there a way to run Nautilus or Gedit with elevated privileges?

18
  • 2
    Does this answer your question? How to open Nautilus as admin in Ubuntu 19.04
    – muru
    Oct 22 at 14:39
  • 1
    The admin:// thing should also work with other GNOME utilities like gedit.
    – muru
    Oct 22 at 14:39
  • When I used Ubuntu I edited text files with 'sudo gedit' for a few years and never had an issue. Alternatively edit root text files with 'sudo nano', which I use more of now as it's a universal Linux text editor. 'gksudo' was replaced by (using gedit) gedit admin:///PathToRootFile. Oct 22 at 14:41
  • @muru This errors out: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failled: Unix process subject does not have uid set
    – gaazkam
    Oct 22 at 16:08
  • @PaulBenson See above.
    – gaazkam
    Oct 22 at 16:08
3

You can easily have a right-click menu that allows to open a file with root privileges by installing a package nautilus-admin. This nautilus extension adds two right-click menu options. One of these allows you to open a file as root for editing in gedit. The other entry allows you to open a nautilus window with root permissions.

The package is included in the standard Ubuntu repositories and can be installed with the command

sudo apt install nautilus-admin

It relies on the GNOME's admin backend, i.e., the effect is the same as if you would open the file from the command line with the admin:// URI, e.g.

gedit admin:///etc/fstab
1
  • 1
    Both nautilus-admin and admin:// error out: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failled: Unix process subject does not have uid set
    – gaazkam
    Oct 22 at 16:06
2

You can use pkexec instead of gksudo. My way of running eg. gedit with elevated privileges is to create a script, for example /usr/local/bin/su_gedit, with the following contents:

#!/bin/bash
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit $*

Then you can create a .desktop file for this script, for example /usr/share/applications/su_gedit.desktop (I have not tested if other location than /usr/share/applications will work), copying its contents from org.gnome.gedit.desktop and modifying appropriately, ie. changing the Name= and Comment= lines to whatever you want (for example Name=Root Text Editor and Comment=Edit text files with root privileges) and replacing gedit by /usr/local/bin/su_gedit in all Exec= lines.

After you do this, when right-clicking in Nautilus on a file that normally opens in gedit, and selecting "Open with a different program", you should see your "Root Text Editor" entry on the list. Even if it isn't there, if you click "Show all programs" button, you should be able to choose it.

Another way is to create a similar script that runs elevated gnome-terminal, and create a launcher for that script eg. in your GNOME panel or on the desktop. From that terminal, you can simply run gedit as root. That's what I usually do.

1
  • Not the simplest way, but... IT WORKS :)
    – gaazkam
    Oct 23 at 8:44
0

Nemo - is the default file manager shipped with Cinnamon Desktop. Nemo allows you to right-click anywhere in a given directory and "Open as Root."

A second window then opens with a blue "elevated privileges" banner.

Hope this helps!

note - (It sounds like you want to continue to use Nautilus - so disregard this advice if you're unwilling to switch to a different file manager.)

0

From the comments...

The proper and easiest way to start GUI applications with privs from the CLI is to use sudo -H.

example: sudo -H gedit /etc/filename

From the sudo man page...

 -H, --set-home
             Request that the security policy set the HOME environment
             variable to the home directory specified by the target
             user's password database entry.  Depending on the policy,
             this may be the default behavior.

So the -H flag makes sudo assume root's home directory as HOME instead of the current user's home directory. Otherwise some files in the user's home directory would become owned by the root, which may lead to various problems.

Note: excerpted from What does '-H' flag in 'sudo -H' mean?

The most common problem of using sudo without the -H option is the creation of a login loop.

This can occur because the following files get changed from your_username:your_username, to root:root...

-rw------- 1 your_username your_username 407910 Nov  2 08:56 .ICEauthority
-rw------- 1 your_username your_username     58 Jun 23  2017 .Xauthority
2
  • Do you have additional background on why this is the ~now~ recommended approach, while for years we have been told to never run graphical applications using sudo? Was the -H option recently added to sudo? Why does setting "the home directory specified by the target" resolve previous issue with executing GUI apps using sudo?
    – PJ Singh
    Oct 24 at 15:07
  • 1
    @PJSingh For a partial answer, see askubuntu.com/questions/1206020/what-does-h-flag-in-sudo-h-mean. The most common problem is login loops.
    – heynnema
    Oct 24 at 17:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.