Jak zmienić uprawnienia użytkownika pi sudo; jak dodać inne konta z różnymi uprawnieniami?


14

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


1
Czy którakolwiek z udzielonych odpowiedzi była pomocna? Czy ktoś z nich szukał odpowiedzi? Następnie zaznacz to jako odpowiedź.
Anders

Tak. Jeśli nadal jesteś zainteresowany, zaktualizowałem je do czerwca 2017 r. - pytanie zadano 4 lata i 2 miesiące temu i doprowadziło mnie do dzisiejszego rozwiązania problemu. Sprawdź odpowiedzi poniżej:
SDsolar

Odpowiedzi:


22

Aby wyjaśnić nieco: Nie ma „poleceń sudo”, istnieją tylko polecenia, które wymagają uprawnień roota do prawidłowego działania i sudojest to polecenie, aby uzyskać je dla jednego polecenia: sudowystarczy 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:

pi ALL=(ALL) NOPASSWD: ALL

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:

$ sudo adduser admin

Spowoduje to utworzenie użytkownika „admin”, podanie hasła, utworzenie katalogu domowego itp.

$ sudo adduser admin sudo
$ sudo adduser admin adm

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/sudoersktó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/logbez użycia sudoi kilka innych rzeczy). Nadal musisz go używać, sudogdy 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ę

$ sudo apt-get update
$ sudo apt-get upgrade

Pracuje. Jeśli tak, możesz cofnąć niektóre uprawnienia użytkownika „pi”, ponieważ masz pewność, że administrator ma odpowiednie uprawnienia:

$ sudo deluser pi sudo
$ sudo deluser pi adm

Wyrzuca to użytkownika „pi” z grupy użytkowników „sudo”.

$ sudo visudo

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”):

$ su - admin

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”:

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

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”!).


2
visudoto 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
earthmeLon

Lub możesz spróbować tego VISUAL=vim visudotylko na ten czas. Ale świetny przykład zmiany domyślnych programów, takich jak edytor.
Anders

6

Tak, możesz skonfigurować, sudoaby zezwolić użytkownikowi na uruchamianie określonych poleceń z dodatkowymi uprawnieniami. Możesz to zmienić w swoim /etc/sudoerspliku, ale wskazane jest, aby nie robić tego bezpośrednio, ale użyć sudo visudodo tego polecenia.

W domyślnej instalacji systemu powinieneś znaleźć taką linię:

pi ALL=(ALL) NOPASSWD: ALL

Mówi, sudoaby zezwolić użytkownikowi pina uruchamianie wszystkich domen jako rootużytkownik bez podawania hasła. Możesz zmienić ostatnią ALLi określić listę rozdzielonych przecinkami poleceń (z pełną ścieżką), które mogą być uruchamiane. W twoim przypadku powinieneś zmienić ten wiersz na:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

Pamiętaj, że istnieje jeszcze jedna linia sudoerswpływająca na piużytkownika:

%sudo   ALL=(ALL:ALL) ALL

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żytkownik pibę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 piz sudogrupy.

Po wprowadzeniu zmian w /etc/sudoerspliku możesz sprawdzić, czy naprawdę robi to, co chcesz, wywołując sudo -l -U pipolecenie.

Oczywiście możesz tworzyć różne konta i konfigurować, sudoersdając im dostęp do różnych poleceń.


1

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:

/etc/sudoers

a ostatni wiersz pliku to:

#includedir /etc/sudoers.d

Jest to katalog zawierający plik o nazwie

010_pi-nopasswd

który zawiera tę pojedynczą linię

pi ALL=(ALL) NOPASSWD: ALL

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) ALLnadal istnieje jako

Aby 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 sutrybie. Jeśli zapomniałeś hasła roota, możesz go zresetować z normalnego monitu, używając. sudo passwd rootNastępnie supolecenie zadziała i możesz zacząć stamtąd.


Właśnie to znalazłem za pośrednictwem Google - więc jeśli śledzę to, użytkownik nadal musi należeć do grupy sudoers, ale /etc/sudo.d kontroluje, jak często konkretny użytkownik jest proszony o hasło?
lonstar

1
Tak. Masz to. Członkostwo sudoerszwykle 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 upgradewywoł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 nigdy sudo apt-get update -y && sudo apt-get upgrade -ynie 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.
SDsolar

0

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/sudoersz:

pi ALL=(ALL) NOPASSWD: ALL

do

pi ALL=(ALL) PASSWD: ALL

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/sudoersbezpośrednio; użyj, sudo visudoaby 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 ...


3
Wspomnienie o przekroczeniu timestamplimitu czasu jest dobrym pomysłem. Domyślnie to 15 minut, BTW. Zauważ, że PASSWDjest to ustawienie domyślne (jeśli NOPASSWDnie zostało określone wcześniej na tej liście poleceń). Pamiętaj też, że /etc/sudoersmożna je edytować bez problemów, jeśli wiesz, co robisz. Użycie visudozmian 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.
Krzysztof Adamski

Myślę, że OP aktualizuje rzadko, że zawsze dostaje nowe jądro ... lub jakiś kolega powiedział mu, aby za każdym razem uruchamiał się ponownie, ponieważ nie chciał wyjaśniać, w jaki sposób OP może wykryć pakiet jądra na liście aktualizacji.
orithena

TNX dla tego komentarza, @Krzysztof. Poprawiłem w swojej odpowiedzi. I masz rację co do edycji. W rzeczywistości na moim komputerze 16.04 po prostu umieściłem linię pi bezpośrednio w pliku sudoers, ponieważ sudoers.d zawierał tylko plik readme. Zostawiłem to tylko dlatego, że przynajmniej uprawnienia pi są przetwarzane. (Moim ulubionym redaktorem jest VI / VIM, btw, ale czasami użyję leafpada lub Idle. Nie ponownie opanowałem emacsa - 15 lat to dużo czasu - i mogę zrobić znacznie więcej, szybciej, w vimie niż w emacsie , jak dotąd.) Jeszcze raz dziękuję.
SDsolar

0

Po prostu alternatywą do tego, co powiedział scruss, usuń /etc/sudoers.d/010_pi-nopasswdplik, uruchamiając sudo rm /etc/sudoers.d/010_pi-nopasswd. Znacznie łatwiej i bezpieczniej niż edycja głównego pliku sudoers, który może uszkodzić sudo.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.