02.12.2018.

Izvršite naredbu kao drugi korisnik - pkexec














Kompletna sintaksa glasi: pkexec [ --user username ] PROGRAM [ ARGUMENTS ...], a pkexec omogućava ovlašćenom korisniku da izvrši program kao drugi korisnik. Ako korisničko ime nije određeno, tada će se program pokrenuti kao administratorski super korisnik, root. Kao i svaka druga PolicyKit aplikacija, pkexec će koristiti agent za potvrdu identiteta koji je registrovan za proces pozivanja, a ako agent nije dosupan, onda će pkexec registrovati sopstvenog agenta za automatsku proveru autentičnosti.

Izvršavanje programa od strane drugog korisnika je privilegovana funkcija. Podrazumevano je neophodno odobrenje i zahteva administratorsku autentikaciju. Pored toga, dijalog za potvrdu identiteta koji je predstavljen korisniku prikazuje ceo put do programa koji će se izvršiti, tako da korisnik zna šta će se dogoditi:
Kao pokazni primer je uzeta aplikacija Leafpad koju želimo pokrenuti kao root korisnik. Potrebno je kreirati fajl pod imenom npr.: org.lxde.leafpad.policy i ubaciti ga u folder na putanji: usr/share/polkit-1/actions. Fajl bi mogao da ima sadržaj kao kod koji sledi. Nakon toga, može se uspešno sprovesti naredba: pkexec leafpad

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

  <action id="org.lxde.pkexec.leafpad">
      <description>Run Leafpad as root</description>
      <description xml:lang="sr">Покрени Leafpad са кореним овлашћењима</description>
    <message>Authentication is required to run the Leafpad</message>
    <message xml:lang="sr">Потребна је потврда ради покретања Leafpad под кореним овлашћењем</message>
    <icon_name>leafpad</icon_name>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/leafpad</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>

</policyconfig>