Ponieważ czasami używam mojego Pi przez SSH, nauczyłem się, że zezwalanie SSH na dostęp do poleceń sudo jest niebezpieczne. Dlatego planuję wyłączyć to zezwolenie w najbliższej przyszłości. Ale kiedy instaluję pakiety, zwykle muszę ponownie uruchomić komputer. Obecnie jest to dozwolone tylko przez administratora.
sudo reboot
Czy istnieje sposób, w jaki mogę edytować uprawnienia użytkownika pi, aby umożliwić mu ponowne uruchomienie (i zainstalowanie) pakietów?
Czy mogę mieć wiele kont z różnymi uprawnieniami?
Dzięki
Odpowiedzi:
Aby wyjaśnić nieco: Nie ma „poleceń sudo”, istnieją tylko polecenia, które wymagają uprawnień roota do prawidłowego działania i
sudo
jest to polecenie, aby uzyskać je dla jednego polecenia:sudo
wystarczy uruchomić dane polecenie jako root (przeczytaj „sudo” jako imperatyw zdanie „superuser, zrób coś!”). Reguły, w których użytkownicy mogą to robić, są zapisane/etc/sudoers
. W domyślnej instalacji Raspbian domyślny użytkownik „pi” ma uprawnienia z tej linii:Oznacza to: „Użytkownik 'pi' na WSZYSTKICH hostach może przełączyć się na WSZYSTKICH użytkowników i NIE musi wpisywać swojego PASSWD podczas używania WSZYSTKICH poleceń (czytaj: dowolne)”. (Użyłem tutaj szalonej gramatyki, aby zachować kolejność linii .. uwaga na temat sposobu rozróżnienia hostów: w ten sposób ten sam plik sudoers może być dystrybuowany na wiele komputerów w sieci, więc administrator sieci ma mniej pracy) .
Być może możliwość uruchamiania poleceń przy użyciu sudo bez wydawania hasła administratora jest powodem, dla którego uważasz, że używanie sudo przez SSH jest niebezpieczne (nie słyszałem o ogólnym problemie z robieniem tego ... więc czy mógłbyś wyjaśnić, jakie niebezpieczeństwo masz dokładnie na myśli?).
Pewnie, że możesz mieć wielu użytkowników z różnymi uprawnieniami. Ale obawiam się, że używanie sudo wciąż jest najlepszym sposobem na zarządzanie tymi uprawnieniami.
Mam więc nadzieję, że ten mały przepis jest tym, czego potrzebujesz:
Spowoduje to utworzenie użytkownika „admin”, podanie hasła, utworzenie katalogu domowego itp.
Spowoduje to umieszczenie użytkownika „admin” w grupach użytkowników „sudo” i „adm”. A ponieważ w Linuksie zarządza się uprawnieniami poprzez dodawanie użytkowników do grup użytkowników, daje to użytkownikowi „administratorowi” wszystkie potrzebne mu uprawnienia i uprawnienia. Jest w nim wiersz,
/etc/sudoers
który pozwala każdemu użytkownikowi należącemu do grupy użytkowników „sudo” wykonać dowolne polecenie jako root; a tego uprawnienia potrzebujemy administratorowi (dodanie go do „adm” pozwala mu odczytać niektóre pliki dziennika/var/log
bez użyciasudo
i kilka innych rzeczy). Nadal musisz go używać,sudo
gdy jesteś zalogowany jako administrator - ale teraz sudo wciąż pyta o hasło administratora, ilekroć nie korzystałeś z sudo przez około pięć minut.Teraz wyloguj się i zaloguj jako użytkownik „admin”. Sprawdź pogodę
Pracuje. Jeśli tak, możesz cofnąć niektóre uprawnienia użytkownika „pi”, ponieważ masz pewność, że administrator ma odpowiednie uprawnienia:
Wyrzuca to użytkownika „pi” z grupy użytkowników „sudo”.
Spowoduje to uruchomienie edytora, który umożliwia edycję
/etc/sudoers
. Umieść hash tag (#
) przed wierszem rozpoczynającym się od „pi”, komentując go (lub po prostu usuń). Następnie zapisz i zamknij edytor, visudo natychmiast ponownie załaduje reguły uprawnień. Teraz użytkownik „pi” nie może już używać sudo.Następnie możesz ponownie zalogować się jako użytkownik „pi”. Jeśli kiedykolwiek chcesz przełączyć się na administratora dla niektórych poleceń, użyj
su
(„zmień użytkownika”):Jeśli chcesz dodać więcej użytkowników: użyj
sudo adduser <name>
jak wyżej, a następnie sprawdź listę grup użytkowników, które posiada użytkownik „pi”:Użyj,
sudo adduser <username> <groupname>
aby dodać nowego użytkownika do kilku z tych grup użytkowników, umożliwiając mu korzystanie z dźwięku, przyspieszonego wideo, urządzeń podłączanych itp. Jeśli nie masz pewności, dodaj go do wszystkich tych grup użytkowników (ale nie do „sudo”!).źródło
visudo
to polecenie, które użyje domyślnego edytora do edycji pliku sudoers. Edycja tego pliku bez niego może być uciążliwa i nie jest zalecana. Możesz zmienić preferowanego edytora, wydającsudo update-alternatives --config editor
VISUAL=vim visudo
tylko na ten czas. Ale świetny przykład zmiany domyślnych programów, takich jak edytor.Tak, możesz skonfigurować,
sudo
aby zezwolić użytkownikowi na uruchamianie określonych poleceń z dodatkowymi uprawnieniami. Możesz to zmienić w swoim/etc/sudoers
pliku, ale wskazane jest, aby nie robić tego bezpośrednio, ale użyćsudo visudo
do tego polecenia.W domyślnej instalacji systemu powinieneś znaleźć taką linię:
Mówi,
sudo
aby zezwolić użytkownikowipi
na uruchamianie wszystkich domen jakoroot
użytkownik bez podawania hasła. Możesz zmienić ostatniąALL
i określić listę rozdzielonych przecinkami poleceń (z pełną ścieżką), które mogą być uruchamiane. W twoim przypadku powinieneś zmienić ten wiersz na:Pamiętaj, że istnieje jeszcze jedna linia
sudoers
wpływająca napi
użytkownika:Ten wiersz pozwala wszystkim użytkownikom w grupie
sudo
(%
znak przed nazwą oznacza, że jest to nazwa grupy zamiast nazwy użytkownika) uruchamiać WSZYSTKIE hasła, pod warunkiem, że znają swoje WŁASNE hasło . Jeśli opuścisz ten wiersz, użytkownikpi
będzie mógł uruchomić wszystkie inne polecenia, ale zostanie poproszony o podanie hasła.Jeśli chcesz temu zapobiec, możesz usunąć tę linię lub usunąć użytkownika
pi
zsudo
grupy.Po wprowadzeniu zmian w
/etc/sudoers
pliku możesz sprawdzić, czy naprawdę robi to, co chcesz, wywołującsudo -l -U pi
polecenie.Oczywiście możesz tworzyć różne konta i konfigurować,
sudoers
dając im dostęp do różnych poleceń.źródło
Maj 2018 r., Jest to nadal dokładne koncepcja, ale procedura uległa zmianie w późniejszych wersjach:
Po pierwsze, pliki powinny być edytowane bezpośrednio w vi, nano lub leafpad lub emacs - w zależności od tego, który jest twoim ulubionym edytorem tekstu.
Nazwa użytkownika pi nie jest wymieniona w tym pliku:
a ostatni wiersz pliku to:
Jest to katalog zawierający plik o nazwie
który zawiera tę pojedynczą linię
Co powoduje, że nie monituję o żadne polecenie sudo, dopóki jestem zalogowany jako użytkownik pi. (zauważ, że składnia musi być dokładnie w ten sposób)
To jest świetne.
Linia grupy
%sudo ALL=(ALL:ALL) ALL
nadal istnieje jakoAby odpowiedzieć na pierwszą część pytania:
Kiedy przeniosłem plik /etc/sudoers/sudoers.d/010_pi-nopasswd na wyższy poziom katalogu, aby błąd dołączenia nie powiódł się, a następnie odczekałem 15 minut, spowodowałem, że mój system Raspbian zapytał o moje hasło po użyciu sudo, po prostu jak kiedyś mój system Ubuntu 14.04 LTS.
Potem, kiedy przeniosłem go z powrotem tam, gdzie należy, nawet po 10 minutach już mnie nie podpowiadał.
Ponowne uruchomienie nie jest konieczne. Voila, bez pytania o hasło podczas korzystania z sudo
Mój system testowy lubuntu 14.04 LTS ma taką samą konfigurację, z tym wyjątkiem, że plik 010_pi-nopasswd nie był obecny. lubuntu został zainstalowany z pi jako użytkownik root. Podpowiadało mi to za każdym razem, gdy używałem sudo, a potem nie pytało mnie przez 10 minut później.
Dodałem ten sam plik do systemu Ubuntu, tak jak skonfigurowano Raspbian (pamiętaj, aby chmod 0440 na tym pliku, gdy jesteś jeszcze w tym 10-minutowym oknie) - i
Voila, nie pyta mnie już o moje hasło, gdy jestem zalogowany jako pi nawet po 15 minutach.
Ponownie zmiana następuje natychmiast, bez konieczności ponownego uruchamiania.
Oto odpowiedź z maja 2018 r. Na temat wyłączania i włączania monitowania o użycie polecenia sudo po zalogowaniu się jako użytkownik root pi. W ten sam sposób można skonfigurować innych użytkowników i grupy.
- UPDATE dla Ubuntu 16.04 LTS Ten system jest również bardzo podobny. Jednak największą różnicą jest to, że 16.04 ma znacznie ściślejsze uprawnienia do plików, więc praca musi być wykonana w
su
trybie. Jeśli zapomniałeś hasła roota, możesz go zresetować z normalnego monitu, używając.sudo passwd root
Następniesu
polecenie zadziała i możesz zacząć stamtąd.źródło
sudoers
zwykle odbywa się w momencie tworzenia użytkownika. Przykład użycia: Zauważysz, że wspólny ciąg poleceńsudo apt-get update && sudo apt-get upgrade
wywołuje sudo dwa razy, ale denerwuje, że może się zatrzymać i poprosić o hasło ponownie przed aktualizacją. Więc ustawiłem mój, aby nigdysudo apt-get update -y && sudo apt-get upgrade -y
nie pytał o moją nazwę logowania (pi), a także używał, więc nie przestanie też prosić o OK, aby wprowadzić spore zmiany. Aby uczynić go bardziej uniksowym. Rób to, o co proszę, a nawet jeśli odejdę, chcę, żeby to się skończyło.Bezpieczniej jest zezwolić sudo na dostęp przez SSH, niż zezwolić dowolnemu użytkownikowi na instalowanie pakietów. Jeśli naprawdę się o to martwisz, zmień linię
/etc/sudoers
z:do
Oznacza to, że przy pierwszym użyciu sudo w dowolnej sesji pojawi się monit o hasło, a po kilku minutach ponownie. Nie możesz edytować
/etc/sudoers
bezpośrednio; użyj,sudo visudo
aby to zrobić.Wygląda na to, że Krzysztof wskoczył z odpowiedzią właśnie tam. Czy na pewno chcesz ponownie uruchomić komputer za każdym razem, gdy instalujesz nowe pakiety? Jeśli nie instalujesz nowego jądra lub oprogramowania układowego, niewiele więcej wymaga ponownego uruchomienia. Mamy tutaj wysokiej jakości system operacyjny ...
źródło
timestamp
limitu czasu jest dobrym pomysłem. Domyślnie to 15 minut, BTW. Zauważ, żePASSWD
jest to ustawienie domyślne (jeśliNOPASSWD
nie zostało określone wcześniej na tej liście poleceń). Pamiętaj też, że/etc/sudoers
można je edytować bez problemów, jeśli wiesz, co robisz. Użycievisudo
zmian w pliku tymczasowym uniemożliwiających automatyczne zapisanie pliku w środku zmiany (co może wprowadzić błędy składniowe i / lub problemy z bezpieczeństwem), blokuje ten plik przed wieloma jednoczesnymi edycjami i wykonuje kilka kontroli składni przed zapisaniem pliku.Po prostu alternatywą do tego, co powiedział scruss, usuń
/etc/sudoers.d/010_pi-nopasswd
plik, uruchamiającsudo rm /etc/sudoers.d/010_pi-nopasswd
. Znacznie łatwiej i bezpieczniej niż edycja głównego pliku sudoers, który może uszkodzić sudo.źródło