Szybkie wyłączanie komputera we Fluxboksie

From FluxboxPL.org

Uwaga! Koniecznie przeczytaj tekst w całości przed dokonaniem jakichkolwiek modyfikacji



Mam nadzieję że nie muszę przypominać, iż musisz włączyć terminal (domyślnie *terma masz na samej górze w menu).

Wpisz su - a następnie swoje hasło roota, aby pracować jako administrator systemu.

Spis treści

Wersja krótsza: wykorzystanie chmod

Zrób

chmod +s /sbin/halt

Tłumacząc na nasze: pozwalasz użytkownikom na wykonywanie programu halt (notabene dowiązania do niego stanowią poweroff oraz reboot). Proste, ale zarazem nie do końca bezpieczne. Wystarczy bowiem połączyć się z Twoim komputerem, aby móc go zdalnie wyłączyć. Nie najlepsza perspektywa dla admin-wannabe.

Wersja pośrednia: wykorzystanie SGID

Jest to rozwiązanie łatwiejsze niż sudo, a jednocześnie bezpieczniejsze niż chmod. Jest dobrym rozwiązaniem dla tych osób, które administrują komputerem wieloużytkownikowym, nie świadczącym jednak usług sieciowych.

Cała sztuczka opiera się na stworzeniu grupy uzytkowników, którym wolno wyłączać komputer, i zezwolenie tym właśnie użytkownikom na uruchamianie programu halt.

groupadd ''poweroffers''

Co spowoduje utworzenie grupy o nazwie poweroffers.
Teraz należy dodać do grupy uzytkowników, gdyż wciąż jest ona pusta. Służy do tego program gpasswd który modyfikuje plik /etc/group.

gpasswd -M agata,marek,piotrek poweroffers

Dzięki czemu do wcześniej utworzonej grupy poweroffers zostaną dodani użytkownicy agata, marek i piotrek.
Składania gpasswd jest banalna. Po fladze -M, odpowiedzialnej za zdefiniowanie członków grupy, następują nazwy użytkowników oddzielone przecinkiem. Na samym końcu znajduje się nazwa grupy, której zmiana dotyczy.

Teraz należy zmienić grupę pliku halt. Służy do tego program chown

chown :poweroffers /sbin/halt

Program ten służy do zmiany właścicieli pliku. Wpierw należy podać nazwę nowego użytkownika i nowej grupy oddzielone dwukropkiem (gdy zostanie podane tylko jedno z tych, drugie nie ulegnie zmianie), na końcu plik, którego to dotyczy.

Wersja dłuższa: użycie sudo

Wpisz

visudo

aby móc edytować plik /etc/sudoers. Jeżeli powłoka twierdzi, że nie zna takiego polecenia, upewnij się, że masz zainstalowany pakiet sudo w systemie. Wykonaj jedno z poniższych poleceń (w zależności od menadżera pakietów, którego używasz; możliwe, że Twój nie jest uwzględniony - w takim wypadku skonsultuj się z jego dokumentacją aby dowiedzieć się, jak zainstalować pakiet):

yum install sudo
apt-get install sudo
emerge sudo
pacman -S sudo

visudo domyślnie używa vi jako edytora. Krótki spis używanych poleceń: i - wejście w tryb edycji [esc] (klawisz escape) - wyjście z trybu edycji :wq - wyjście z vi wraz z zapisaniem dokonanych zmian

Teraz dopisz linijki

User_Alias USERS=Nazwa_Uzytkownika  
Cmnd_Alias SHUTDOWN=/sbin/shutdown
USERS ALL=NOPASSWD:SHUTDOWN

Gdzie oczywiście Nazwa_Uzytkownika to nazwa użytkownika, któremu chcesz dać prawo wyłączania komputera. Najprawdopodobniej jesteś to Ty, jeżeli posiadasz współdzielony komputer, możesz dać takie prawo innym użytkownikom dopisując ich nazwy oddzielone przecinkiem.

Plik sudoers jest niezwykle pomocny w administrowaniu systemu z wieloma użytkownikami. Mówiąc najprościej jak umiem - określa co kto może wykonać. Musisz wiedzieć, że w systemach Uniksowych w celach bezpieczeństwa zwykły użytkownik ma bardzo ograniczone prawa - jedynie do swojego podwórka, jakim jest jego folder domowy. Plik sudoers może to zmienić - i nie chodzi tu o zwykłe zmienienie uprawnień plików. Sama składnia wygląda tak:

sudo (polecenie)

gdzie, co chyba jasne, polecenie jest poleceniem, jakie chcesz wykonać. Program najpierw sprawdza, czy użytkownik jest na liście w pliku sudoers. Jeśli jest analizuje polecenie w celu sprawdzenia, czy użytkownik może je wykonywać. Jeśli wszystko jest ok - wykonuje to. Często gesto po wydaniu polecenia sudo program poprosi o wpisanie hasła użytkownika będącego na liście sudoers. Bezpieczeństwo przede wszystkim.
Najpierw dodałeś linię zaczynającą się od ' User_Alias '. Dzięki temu program wie, że będziesz określał użytkownika - doda go do listy sudoersów. Następnie w tej samej linii określasz inną informację dla systemu - jak będziesz nazywał danego użytkownika. Ustawienie to dotyczy jedynie pliku sudoers.
Linijkę niżej dodałeś polecenie. Pierwszy człon informuje program, że będziesz określał jakiś program. Drugi człon składa się z nazwy, jaką będziesz się posługiwał w pliku sudoers i tego, co naprawdę oznacza dane wyrażenie.
I gwóźdź programu czyli przyznanie uprawnień. Najpierw określasz użytkowników - posługujesz się wcześniej zdefiniowaną wartością. Następnie określasz którzy z tej zmiennej mogą to robić. Potem mówisz programowi, że będą mogli coś wykonywać bez wpisywania hasła a na samym końcu definiujesz, czym to coś jest.

Wyjdź z programu zapisując zmiany.

Potwierdzenie wyłączenia

Niegłupim pomysłem jest dodanie zapytania, czy komputer na pewno ma zostać wyłączony. Dzięki temu można uniknąć przypadkowego wyłączenia.
Aby to zrobić, potrzeby jest program umożliwiający tworzenie wyskakujących okien rodem z Domyślnego Systemu Operacyjnego. Najbardziej popularne są xmessage, gxmessage, zenity i kdialog. Wszystkie z nich mają podobną składnię polecenia, różnią się głównie wyglądem. W poniższym przykładzie użyję xmessage, którego powinien mieć każdy użytkownik Fluxboksa.

Stwórz plik o nazwie shutdown.sh w swoim katalogu domowym. Wklej do niego poniższy kod:

#! /bin/sh
message="Czy na pewno chcesz wyłączyć komputer?"
if xmessage -nearmouse -buttons no:1,yes:0 "$message"; then
##  W zależności od uzywanej metody odkomentuj poniższą linijkę:
#    poweroff
##  dla metody krótszej lub pośredniej
##  albo
#    sudo shutdown -h now
##  dla metody dłuższej
fi

oraz nadaj mu atrybut wykonywalności

chmod u+x shutdown.sh

Dodawanie wpisu w menu Fluxboksa

Teoretycznie na tym etapie można zakończyć - użytkownik ma już prawo wyłączania komputera, do tego wymagane jest potwierdzenie tej operacji. Aby jeszcze bardziej ułatwić sobie życie, można dodać odpowiedni wpis w menu Fluxboksa.

Przejdź teraz do edycji pliku ~/.fluxbox/menu (ścieżka będzie się różnić, jeżeli wciąż pracujesz jako administrator).

Więcej o edytowaniu i składni pliku menu możesz przeczytać w artykule Konfiguracja Menu, więc ja ograniczę się jedynie do podania gotowego rozwiązania. Dopisz przed ostatnim [end]

[exec] (Wyłącz) {~/shutdown.sh}