🎙 Poslední aktualizace článku 2.9.2017. Pokud najdete nějaké rozdíly v aktuálním stavu, dejte vědět v komentářích, díky.
Při hraní s Raspberry jsem se dostal do pěkné šlamastiky, kdy jsem si totálně zablokoval možnost spouštět cokoliv pod root uživatelem, což je poměrně z dlouhodobého pohledu průšvih. Naštěstí se mi z toho podařilo dostat.
Rozbití souboru sudoers
Prvním předpokladem je mít zakázaný root účet, což jsem se dočetl je z bezpečnostního hlediska dobrý nápad.
Druhým je pak udělat v souboru sudoers nějakou chybu, čili validace tototo souboru bude selhávat.
Kombinací obojího pak nastává situace, kdy nejste schopni použit příkaz sudo a tak se přepnout na root uživatele pro úlohy kde je to nezbytně nutné.
Chyba vypadá nějak takto:
unifiadmin@raspberrypi:/etc$ sudo su
>>> /etc/sudoers: syntax error near line 22 <<<
sudo: parse error in /etc/sudoers near line 22
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
a nepomáhá ani náhrada pkexec za sudo:
unifiadmin@raspberrypi:/etc$ pkexec visudo
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/sbin/visudo' as the super user
Authenticating as: root
Password:
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
This incident has been reported.
Oprava souboru sudoers
Chvíli mi to dalo zabrat, než jsem zkombinoval několik návodů do takového, který by mohl pro můj případ fungovat – tedy kombinaci zakázaného root uživatele a chyby v sudoers – nicméně tady je.
Nejprve potřebujeme na Rasberry Pi nastartovat tzv. recovery mód. Do něj se dostaneme, jak nám už napovídá hláška při startu, pomocí držení Shift klávesy během bootování.
Jakmile jsme v recovery módu přepneme se pomocí Alt+F2 na konzolové přihlašovací okno a přihlásíme se jako root uživatel. Heslo by měli mít všichni stejné a je „raspberry“.
Ve výchozím stavu nebudeme mít systémový disk s linuxem připojený, takže si vypíšeme seznam disků pomocí:
fdisk -l
a opíšeme si název Linux partition, který pak dáme jako první parametr:
mount /dev/mmcblk0p7 /mnt2
Tím získáme přístup k našemu sudoers souboru a můžeme se přepnout do správného adresáře
cd /mnt2/etc
a budeme muset ještě změnit práva pro zápis
chmod 744 ./sudoers
Soubor zeditujeme pomocí editoru vi – uff, na ten si nikdy nezvyknu, ale naštěstí si vystačíme s příkazy „:i“ – zahájení editace, poté „esc“ – vyskočení z editace a „:w“ – zapsání změn“ a konečně „:q“ – ukončení vi.
Změníme ještě práva zpátky – jinak bychom dostali při bootu chybu a vůbec bychom si nepomohli:
chmod 444 ./sudoers
a posledním krokem už je jen reboot.
Add comment