K této chybě dochází, kdykoli se pokusím pracovat s sudo
. Změnil jsem oprávnění /var/
složku na 777
a myslím, že to způsobuje chybu. Prosím, pomozte mi získat zpět funkční sudo
a /var
.
Nejlepší odpověď
Máte opravdu velký problém, ale ne skutečně z důvodů zde uvedených.
Změna oprávnění ve všech /var
bude pravděpodobné, že je všechny nedostanete zpět správně, protože nebudete vědět, jaká oprávnění každá soubor by měl mít . Později můžete mít problémy. V závislosti na okolnostech mohou vaše problémy souviset se zabezpečením.
Proto možná budete chtít zvážit přeinstalaci Ubuntu. Případně se můžete pokusit získat oprávnění ze souborů v jiném podobném nepoškozeném systému. Oprávnění jsou obvykle stejná. Obvykle. Vážnější problém je, že váš systém má pravděpodobně nějaké soubory v /var
které na druhém nejsou, takže pravděpodobně ne všechny oprávnění budou opravena.
Provádění administrativních úloh na stolním systému bez funkčního sudo
je však obvykle triviálně snadné.
Změna oprávnění zpět, když víte, jaká by měla být, je snadná a zřídka vyžaduje spuštění do režimu obnovení nebo z živého CD. Je to proto, že ačkoli to není široce známé, desktopové verze Ubuntu (a většina ostatních operačních systémů GNU/Linux v současnosti) mají dva způsoby nastavení pro provádění administrativních úkolů:
sudo
, což nebude fungovat, protože vyžaduje oprávnění v/var
abych byl správný.- PolicyKit, který má tendenci být tolerantnější vůči nesprávným oprávněním a obvykle stále funguje.
Zatímco my máme tendenci myslet na sudo
jako způsob, jakým provádíte akce jako root
na Ubuntu je PolicyKit ve skutečnosti způsob, jakým se většina, i když ne všechny, grafické nástroje stávají root
. (Je tomu tak již několik let.)
Ruční spouštění grafického programu pomocí PolicyKit je ve skutečnosti někdy významný podnik, protože grafické aplikace musí mít speciální konfigurační soubory, aby je PolicyKit byly ochotny spouštět. Ale terminální aplikace ne – je stejně snadné spustit textový příkaz pomocí PolicyKit jako pomocí sudo
.
Chcete-li to provést, zadejte pkexec
kde byste jinak zadali sudo
. (Neberou všechny stejné možnosti příkazového řádku, ale nejběžnější syntaxi pro sudo
je sudo command
a pkexec
funguje perfektně na svém místě.)
Takže, protože sudo
je nefunkční, nemůžete spustit:
sudo chmod 0755 /mnt/var/lib/sudo
sudo chmod 0700 /mnt/var/lib/sudo/<username>
Ale můžete spustit:
pkexec chmod 0755 /mnt/var/lib/sudo
pkexec chmod 0700 /mnt/var/lib/sudo/<username>
To je dobrý začátek a pravděpodobně to udělá sudo
zase pracovat. (Neopraví to všechny ostatní soubory v /var
, ačkoli.)
Související (ale ve většině případů ne identické) situace, kdy pkexec
je užitečné:
‣ Jak upravit neplatný soubor /etc/sudoers? Hází to chybu a nedovoluje mi to znovu upravit a opravit to
‣ omylem zablokován přístup k sudoers.d při pokusu o změnu konfigurace ushare
‣ 'sudo' nefunguje po změně oprávnění '/ adresář usr
‣ Jak opravit sudo po „chmod -R 777 /usr/bin“?, chyba sudo, je režim 0777, mělo by být 0440,
Jak opravit „sudo:/etc/sudoers je režim 0640, měl by být 0440?“
‣ Instalace ZFS změnila můj soubor sudoers
‣ Heslo pro sudo nefunguje („selhání ověření“)
‣ Proč nic nefunguje poté, co jsem náhodně změnil některá oprávnění k souboru?
‣ změnil oprávnění /etc v oneiric (ubuntu11.10) pomocí „sudo chmod 665 /etc“ nyní nelze použít sudo
‣ Jak spustím konkrétní příkazy sudo bez hesla? (jen když se něco pokazí)
‣ Nemohu zapisovat /etc/sudoers z živého CD Ubuntu (jen když se něco pokazí)