Skip to content

Run TUN mode in Gnome Desktop Environment Without Password

Preparation

  • Installed and configured GUI.for.SingBox for it to run TUN mode without issues
  • The current user has sufficient privileges to run sudo
  • When launch GUI.for.SingBox manually or at system startup, Gnome prompts one or multiple dialog(s) asking for password
  • The OS uses systemd as init, please check for polkit service if the OS uses OpenRC and other init systems

Check If polkit Service Is Running

bash
systemctl status polkit

If the status is not active (running), run the following command:

bash
sudo systemctl enable --now polkit

Create a polkit Policy

  • The filename can be customized
bash
sudo vi /etc/polkit-1/rules.d/99-nopassword.rules
  • Add the following content, save it, and then quit the editor
javascript
polkit.addRule(function (action, subject) {
  if (
    (action.id == "org.freedesktop.resolve1.set-domains" ||
      action.id == "org.freedesktop.resolve1.set-default-route" ||
      action.id == "org.freedesktop.resolve1.set-dns-servers") &&
    subject.local &&
    subject.active &&
    subject.isInGroup("wheel")
  ) {
    return polkit.Result.YES;
  }
});

Add Current User to Wheel Group

  • Debian and its derivatives need to create the wheel group first, and then run the following command (remember to replace ${CurrentUser} with the actual current username):
bash
sudo usermod -G wheel ${CurrentUser}

Restart polkit Service and Apply the Changes

bash
sudo systemctl restart polkit
  • Or, restart the system

Notes and Citations

Appendix: Find Out action.id and Use Them for Other Applications

  • The following commands apply to GUI.for.Clash and other similar applications, and should also be working on other Desktop Environments. Replace the Create a Polkit Policy content with the actual returned values of action.id
bash
pkaction | grep domain
bash
pkaction | grep route
bash
pkaction | grep dns