Ještě bych chtěl doplnit takový malý postřeh s právy roota.
Juwa2 navrhoval
1. hddtemp vyžaduje root práva. Aby se nemusel přidávat do vyjímek v sudoers, je jednodušší mu práva změnit takto:
Kód: [Vybrat]
sudo chmod u+s /usr/sbin/hddtemp
Takovému řešení je lepší se vyhnout. Ne že by nefungovalo a je příjemně jednoduché. A bude jistě fungovat nějaký čas a možná i pořád. A to je ten kámen úrazu. Může a nemusí. Nevím jak je to u jiných distribucí avšak ubuntu si dost často mění při upgradu práva na ta původní daná systémem. To znamená, že jednoho dne po
sudo apt update
sudo apt upgradesi systém vrátí práva do defaultu a přestane to fungovat a pak chvilku trvá najít proč to nejde. Při hledání chyby naseká člověk větší paseku. Protože poslední na co by v té chvíli pomyslel, je změna práv do defaultu. Z toho důvodu tu máme soubor
/etc/sudoers. No jo, jenže jak jsem psal o příspěvek výše. Chyba se může vloudit a ani pak nemusí systém naskočit. A tak tu máme adresář
/etc/sudoers.d. Všimni si toho
.d na konci. A ten nám dovoluje si tam ty práva upravit jak potřebujem aniž by to systém přepsal a zároveň to systém musí akceptovat. Pár vyjímečných věcí v tomto adresáři je. A to práva k samotným souborům, ty musí být bezpodmíněčně 0440. Dále název souboru nesmí obsahovat znak
. (tečku) a ani znak
~(tilda/vlnovec). Abysme to nemuseli složitě kontrolovat a nastavovat, vymysleli tvůrci příkaz
visudo:
sudo visudo -f /etc/sudoers.d/mujers
Zkus si to a uvidíš jak je to vymakané a blbuvzdorné. Funguje to tak, že se tam něco napíše. Soubor se při uložení automaticky uloží s příponou
.tmp (v našem případě
mujers.temp) a proběhne syntaktická kontrola souboru. Pokud je vše ok soubor se automaticky přejmenuje na původně zadané jméno a je to. Pokud se tam vyskytne chyba, uživatel je upozorněn na jakém řádku má chybu a musí zvolit jak to vyřešit. Ještě jedna věc je tam důležitá a trochu matoucí. Znak
# na začátku řádku tradičně znamená komentář. Avšak ve spojení se slovem include
#include se jedná o céčkovou "funkci". Zpět k našemu příkladu. Spustíme
sudo visudo -f /etc/sudoers.d/mujers a přidáme tam řádek
pepan ALL=NOPASSWD: /usr/sbin/hddtemp, /usr/sbin/smartctl kde
pepan je uživatel kterého se mají ty práva týkat.
ALL na jakém stroji to platí, v tomto případě všude.
NOPASSWD: znamená nechtít heslo. A za dvojtečkou následují programy/skripty s jejich absolutní cestou oddělené čárkou. Od teď se dá
smartctl a
hddtemp spustit příkazem
sudo smartctl a
sudo hddtemp a nebude to chtít heslo. Což se nemusí někomu zrovna dvakrát líbit, přece jen bez toho sudo je to komfortnější. No, tak tu máme starý dobrý soubor
.bashrc v domovském adresáři. Do něho přidáme řádek
alias smartctl='sudo smartctl' a pak už jen napíšem do terminálu
source .bashrc
a funguje to. A protože *nixy mají i jiné možnosti, nemusí se otvírat textový editor. Stačí zadat do terminálu tuto posloupnost:
echo "alias smartctl='sudo smartctl'" >> ~/.bashrc
echo "alias hddtemp='sudo hddtemp'" >> ~/.bashrc
source ~/.bashrc
a ono to žije tak jak bylo zamýšleno
A bude to žít i po všemožných upgradech. Od teď uživatel spouští programy
smartctl a
hddtemp tak jak je napíše s právy roota.
Trochu rozeberu
echo "alias smartctl='sudo smartctl'" >> ~/.bashrc:
echo nemusím představovat. V tomto případě vyhodí na standardní výstup co máme v dvojitých uvozovkách. Pak tu máme počin
>>. To je přesměrování výstupu do souboru. Jedno "většítko"
> znamená co je před vlož do názvu souboru co je za. Pokud soubor neexistuje vytvoří se automaticky. Pokud existuje, je přepsán novým. Což není to pravé ořechové. A tak máme "zdvojené většítko"
>>. Jeho úkol je co přijme (co je před ním) to zapíše na konec souboru jehož název je za ním. V našem případě výstup z echa
alias smartctl='sudo smartctl' připojí na konec souboru
~/.bashrc. Příkaz
source ~/.bashrc udělá, že bez restartu či odhlášení a opětovného přihlášení uživatele, načte náš upravený soubor do systému a od teď se všechny změny v něm uplatní.
Ještě malý dodatek. Než začneš přidávat žádaný program do souboru v sudoers.d nejdříve si zjisti jaká je jeho absolutní cesta. Na to máme nástroj
which. Zadáme třeba
which smartctl
a máme jasno. Oni totiž ne všechny programy, které potřebují práva roota, se nachází v
/usr/sbin/. Například
mount se nachází v obyčejném
/usr/bin/.