Jak uzyskać uprawnienia do edycji plików konfiguracji systemu?

47

Nie mogę edytować i zapisywać plików konfiguracyjnych w systemie głównym (np . /etc/dhcp/dhcpd.config:); mówi tylko „odmowa uprawnień” lub opcja zapisu jest zablokowana w edytorze tekstu.

Jestem prawie pewien, że jestem użytkownikiem root, ale jak się upewnić? Jeśli jestem użytkownikiem root, jak to naprawić?

Matthew Wilson
źródło

Odpowiedzi:

42

Z którego edytora tekstu korzystasz? Jeśli jesteś użytkownikiem root i znasz hasło, spróbuj (w terminalu):

  • sudoedit /etc/dhcp/dhcpd.configjeśli używasz edytora terminalowego, takiego jak nanolub ssh'ing na serwerze.
  • gksudo <text editor here> /etc/dhcp/dhcpd.config jeśli używasz edytora opartego na GUI, takiego jak gedit

W obu przypadkach musisz najpierw podać hasło roota na żądanie.

W Ubuntu 14.04 i nowszych gksudonie jest domyślnie instalowany. Będziesz musiał zainstalować gksupakiet (z Centrum oprogramowania lub przez sudo apt-get install gksu), aby go uzyskać.

W Ubuntu 17.10 Wayland jest domyślny zamiast tradycyjnego serwera X, a uruchamianie edytorów graficznych, ponieważ root jest trudne. Zobacz Dlaczego gksu / gksudo lub uruchomienie aplikacji graficznej z sudo nie działa z Waylandem? dla szczegółów.

W Ubuntu 18.04 gksudonie jest dostępny w oficjalnych repozytoriach. Używać sudo -H <text editor>zamiast, albo protokół :admin://

gedit admin:///etc/dhcp/dhcpd.config
Christopher Kyle Horton
źródło
15

Jeśli nie chcesz używać terminala, możesz w ten sposób wywołać program GUI jako root (ten przykład dotyczy Gedit):

  1. Naciśnij Alt+, F2aby wyświetlić okno dialogowe Uruchom.
  2. Wpisz gksudopo nim nazwę pliku wykonywalnego programu (która może być inna niż nazwa wyświetlana przez GUI). Na przykład:

    gksudo gedit
    
  3. Hit Enter.
Scott Severance
źródło
10

Nie mogę wymyślić przypadku, w którym dostanie się root permission denied.

W 12.04 możesz to zrobić w następujący sposób: alt+ f2i wpisz gksudow polu, które wygląda następująco:

Dialog F2

Otrzymasz takie pole, a następnie wpisz gediti kliknij ok:

Wpisz gedit w oknie dialogowym Uruchom

Kliknij Open:

Otwórz zakładkę w gedit

Wystarczy przejść do pliku:

otwórz okno dialogowe plików

Gotowy

Ostrzeżenie: z jakiegoś powodu istnieje superużytkownik / root. Jest tak, że przez przypadek nie umieścisz czegoś złego lub niewłaściwego w strukturze czegoś ważnego. Powinieneś być bardzo ostrożny, że wszystko, co edytujesz jako root, jest poprawnym plikiem, który chcesz edytować ORAZ że Twoja składnia jest idealna. Jeśli do edycji dostępne są inne narzędzia, zaleca się ich użycie. Na przykład użyj visudo polecenia terminal zamiast edycji ręcznej /etc/sudoers.

Niektóre pliki, które mogą zostać pomylone, można łatwo odzyskać. Inne są względnie skomplikowane lub musisz użyć konsoli odzyskiwania i wielu wierszy poleceń.

Tak, wiersz poleceń konsoli odzyskiwania wydaje się trochę bardziej przerażający niż nawet to . Tylko bądź ostrożny.

RobotHumans
źródło
Konieczne może być zaktualizowanie tego w wersji 13.04 i nowszej. Niektóre rzeczy związane z gksu / gksudo uległy zmianie (nie jestem pewien, czy dotyczy to twojej odpowiedzi, czy nie).
Seth
Rozumiem, że sudo teraz magicznie eksportuje zmienne środowiskowe DISPLAY i gksu / gksudo zniknęły lub znikną. Jednak nie sprawdziłem.
RobotHumans
rootmożna uzyskać odmowę dostępu, jeśli plik został ustawiony jako niezmienny przy użyciu chattrlub czasami, jeśli dysk jest tylko do odczytu.
Chai T. Rex
6

Możesz sprawdzić, czy bieżąca powłoka działa jako root na kilka różnych sposobów

~/ > whoami
paul
~/ > sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > sudo id
uid=0(root) gid=0(root) group=0(root)

Inne odpowiedzi dają dobre sposoby na zwiększenie uprawnień roota, więc ich nie powtórzę. Zakładając, że to korzeń i nadal nie można edytować plik /etc/dhcp/dhcpd.config- wtedy bardzo prawdopodobnie ktoś lub jakiś program wykorzystał chattrprogram, aby niezmienne pliku.

Na stronie podręcznika chattr :

Pliku z atrybutem „i” nie można modyfikować: nie można go usunąć ani zmienić jego nazwy, nie można utworzyć łącza do tego pliku ani danych nie można zapisać do pliku. Tylko superużytkownik lub proces posiadający tę CAP_LINUX_IMMUTABLEzdolność może ustawić lub usunąć ten atrybut.

Możesz to sprawdzić za pomocą lsattr

lsattr /etc/dhcp/dhcpd.config

Jeśli rzeczywiście jest niezmienny, możesz to wyłączyć w następujący sposób:

chattr -i /etc/dhcp/dhcpd.config
pbr
źródło
3

Jeśli używasz Ubuntu 17.04 lub nowszej wersji, zaleca się użycie backendu administracyjnego gvfs . Po prostu dodaj admin://na początku pełnej ścieżki do pliku, którą chcesz otworzyć w aplikacji takiej jak Edytor tekstu lub aplikacje Pliki .

Na przykład, aby zmienić ustawienia rozruchu, otwórz

admin:///etc/default/grub

Jeśli używasz Ubuntu 17.10 z domyślnym Waylandem sudoi gksujak wspomniano w starszej odpowiedzi tutaj nie będzie działać.

Jeremy Bicha
źródło
2

Użyj swojego ulubionego edytora tekstu

Możesz użyć sudo -elub jego aliasu sudoeditw swoim ulubionym (graficznym!) Edytorze tekstu za pomocą VISUALzmiennej środowiskowej 1 :

VISUAL=gedit sudo -e /path/to/some-config-file.cfg

co jest równoważne z

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

Oczywiście można użyć dowolnego innego edytora, że chcesz, na przykład leafpad, katealbo subl.

Niektóre edytory oferują opcję wiersza polecenia, aby zawsze uruchamiać nowe wystąpienie, nawet jeśli jest ono uruchomione. Ponieważ sudoeditczeka na zakończenie procesu edytora w celu zastosowania zmian w edytowanym pliku, może to być konieczne, jeśli masz uruchomione inne instancje tego samego edytora:

  • Do użytku w GEdit VISUAL='gedit -s'.
  • Do użytku Kate VISUAL='kate -n'.

Zalety

  • Nie wymaga dodatkowych i / lub przestarzałych aplikacji.
  • Nie wymaga zmian zasad bezpieczeństwa, takich jak pkexec(dla których musisz edytować pliki… jako superużytkownik, dokładnie to, co ta odpowiedź próbuje rozwiązać).
  • Nie wymaga wykonywania potencjalnie niebezpiecznych aplikacji z podwyższonymi uprawnieniami.
  • Korzysta z konfiguracji aplikacji bieżącego użytkownika, ale bałagan z uprawnieniami dostępu do pliku konfiguracyjnego, takimi jak sudo -Hitp.
  • Nie wraca do danych konfiguracyjnych aplikacji rootużytkownika, które mogą wyglądać i zachowywać się akceptowalnie.

Niedogodności

  • Musisz nauczyć się nowego krótkiego polecenia.

1 EDITOR lub SUDO_EDITORteż pracuj, ale mają mniejszy priorytet lub są bardziej wyspecjalizowane. Szczegółowe informacje można znaleźć na stronie podręcznika .

David Foerster
źródło
0

Aby być bezpiecznym, cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup wykonaj kopię zapasową za pomocą i uruchomgksu gedit /etc/dhcp/dhcpd.config

Zamień na geditwybrany przez siebie edytor

dostaniesz taki monit

monit o hasło

Wpisz tutaj swoje hasło.

Otworzy się nowe okno, w którym możesz edytować swoją konfigurację.

Jeśli coś pójdzie nie tak, możesz przywrócić go z kopii zapasowej w folderze domowym.

Otrzymujesz „odmowę uprawnień” z powodu tego, jak Linux obsługuje uprawnienia.

Wszystko w $HOMEfolderze należy do użytkownika, podczas gdy prawie wszystko należy do roota.

/etc/dhcp/dhcpd.confPlik próbujesz dostępu należący do korzeni, a większość plików w /etc/należą do korzenia domyślnie ze względów bezpieczeństwa.

Nadal możesz edytować ten plik, podnosząc swoje uprawnienia.

Aby to zrobić, masz kilka sposobów:

  • użyj, suco oznacza użytkownika przełącznika. Bez żadnych atrybutów działa jako polecenie przejścia do konta root, ale musisz wprowadzić hasło użytkownika, do którego się przełączasz, a ponieważ root nie ma hasła domyślnie w Ubuntu (skutecznie wyłączając konto root) , to nie zadziała, chyba że ustawisz hasło roota, co nie jest zalecane.

  • za pomocą sudoktórego podnosi twoje uprawnienia tylko dla jednego polecenia. Jest to zwykle używane tylko w aplikacjach wiersza polecenia, takich jak edytory tekstu CLI vim, nanoitp

  • użycie, gksuktóre podnosi twoje uprawnienia tylko dla jednej komendy, ale w przeciwieństwie do tego sudojest używane w programach graficznych, takich jak edytory tekstowe GUI, takie jak gedit. używa graficznego monitu, aby ułatwić wprowadzenie hasła.

Amith KK
źródło
0
sudo < editor > < filelocation >

na przykład:

sudo -H gedit etc/dhcp/dhcpd.config
użytkownik392272
źródło