i3nagbar non-root shutdown

Teme vezane za ostala grafička okruženja (XFCE, LXDE, *box...)

Moderator/ica: Moderatori/ce

Odgovori
Avatar
PunkBastard
Postovi: 1975
Pridružen/a: 19 srp 2011, 22:39
Spol: M
OS: Debian 7 Wheezy
Lokacija: wonderland

i3nagbar non-root shutdown

Post Postao/la PunkBastard »

Pozdrav,
evo ja nisam dugo ništa pitao, sve sam ili sam riješavao ili nisam niti trebao pomoć ali ovoga puta nisam našao riješenje.

Koristim i3wm i kada želim isključiti računalo postavio sam shortcut koji zove i3nagbar sa opcijama shutdown i logout, naravno logout radi bez root privilegija, ali shutdown ne. Zna li tko kako mogu postaviti i3nagbar da zove shutdown bez root privilegija, pokušao sam izraditi programsku grupu za to i dati joj shutdown privilegije sa sudo, ali ne radi.

note: Ne želim dati useru privilegiju da gasi računalo, to bi značilo da root nije potreban ni za gašenje preko terminala ni bilo koji drugi scenarij. Želim da samo i samo i3nagbar osim root-a može gasiti računalo.
I don't want to be a human. I want to see gamma rays, I want to hear x-rays and I want to smell dark matter. I want to reach out with something other than this prehensile paws and feel the solar wind of a super nova flowing over me.
Avatar
jurastublic
Postovi: 1907
Pridružen/a: 16 tra 2011, 08:34
Spol: M
OS: Mint 10 LXDE itd...
Lokacija: i grupa Film

Re: i3nagbar non-root shutdown

Post Postao/la jurastublic »

Evo malo sam pogledao. Program shutdown je u vlasništvu roota pa su potrebne root privilegije (ili sudo). Ali možeš napraviti jednu skriptu koju će pokretati samo i3nagbar i samo njoj dati privilegiju da je sudo pokreće bez passworda.
Pošto ta skripta nije isto što i sam program shutdown, kod njega se ništa ne mijenja u privilegijama kad ga juzeri pokreću.

i3nagbar može pokretati skripte na način i3nagbar -b 'sudo skripta.sh' . Onda samo napraviš skriptu, staviš u nju samo "shutdown -P now" (ili /sbin/shutdown -P now ako nemaš taj path) i upišeš na kraju sudoersa (sa sudo visudo) nešto kao:

Kod: Označi sve

punkbuster ALL=(root) NOPASSWD: /home/punkbuster/skripta.sh
edit: i nezaboravi chmod +x skiptu
edit2: jao, vidim šta sam gore napisao pa ispravljam prije nego me razapnu:
"Program shutdown radi nešto s fajlovima koji su u vlasništvu roota a nemaju odobrene dozvole za tvog korisnika, pa su potrebne root privilegije itd..."
Avatar
PunkBastard
Postovi: 1975
Pridružen/a: 19 srp 2011, 22:39
Spol: M
OS: Debian 7 Wheezy
Lokacija: wonderland

Re: i3nagbar non-root shutdown

Post Postao/la PunkBastard »

Hvala,
pokušati ću, ali pokušao sam istu stvar bez skripte, samo da bash direktno pozove i3nagbar i nije radilo.
I don't want to be a human. I want to see gamma rays, I want to hear x-rays and I want to smell dark matter. I want to reach out with something other than this prehensile paws and feel the solar wind of a super nova flowing over me.
Avatar
jurastublic
Postovi: 1907
Pridružen/a: 16 tra 2011, 08:34
Spol: M
OS: Mint 10 LXDE itd...
Lokacija: i grupa Film

Re: i3nagbar non-root shutdown

Post Postao/la jurastublic »

Posebna skripta u ovom slučaju služi da odvoji program shutdown od svijeta tako da on ostane kakav je bio.
Kako kažu programeri: "Kad zaglaviš i nema izlaza, samo dodaj novi sloj apstrakcije." Ili kako istu stvar kažu građevinari: "Kad pod ne paše jer je podloga neravna, dodaj glazuru." (ako si fušer - samo naguraj kartona - a vidio sam to i u informatici u skupim programima)

Ja inače nemam i3 tako da ćeš ti bolje znati kako idu argumenti za nagbar.

Nije mi posve jasno je li to desktop kratica ili tipkovnička kratica. Ako je desktop onda bi moralo raditi u exec= liniji .desktop fajla:

Kod: Označi sve

bash -c "i3nagbar -b 'isključi računalo' 'sudo /home/punkbuster/skripta.sh'"
Ako je tipkovnička kratica, onda bindaj tu komandu u .config fajlu od i3wm.

Svejedno, za zanimaciju sam sada za svaki slučaj provjerio hoće li se očuvati ta indirekcija preko više komandi.
Napravio sam onu prvu skriptu, pa još jednu skriptu koja simulira i3nagbar i njoj poslao argumente.

prva skripta shootme.sh (i dodao je u sudoers kao iznimku):

Kod: Označi sve

#!/bin/bash
#stavio sam da otvara filemanagera umjesto shutdown zbog jednostavnijeg testiranja
thunar
#shutdown -P now
skripta i3nagbarsim.sh

Kod: Označi sve

#!/bin/bash
read -p "$1"
shift
eval "$@"
i onda sam u terminalu testirao sa:

Kod: Označi sve

sudo -k #namjesti sudo da pita za pswd da ne ostane slobodno od prethodnog sudo timera
bash -c "$HOME/i3nagbarsim.sh 'isključi računalo' 'sudo $HOME/shootme.sh'"
I kod mene to radi.
Odgovori