Ostatnio konfigurowaliśmy połączenie zdalne (SSH) do Raspberry Pi – dziś coś „dla wszystkich”, tj. niezależnie od tego, czy łączysz się zdalnie (SSH), czy korzystasz z klawiatury (i myszki) podpiętej bezpośrednio do Pi. Zajmiemy się personalizacją użytkowników w Pi, tj. utworzymy nowego użytkownika, skasujemy niepotrzebnego. Pokaże też, jak zmienić nazwę, jeśli zajdzie i taka konieczność…
Spis treści w artykule
Użytkownicy w systemie Linux na przykładzie Raspberry Pi (Raspbian/Debian)
Standardowo w Raspberry Pi (konkretnie w systemie Raspbian) domyślne konto użytkownika nazywa się „pi”, i jeśli Wam nie przeszkadza, tj. nie potrzebujecie jako nazwy używać swojego imienia, czy pseudonimy – nie ma raczej przeszkód, by pozostać przy tej nazwie.
Natomiast na pewno trzeba zmienić domyślne hasło (raspberry), głównie ze względów bezpieczeństwa. Warto też od razu ustawić własne hasło dla drugiego standardowo znajdującego się w systemie użytkownika, czyli dla konta „root”.
Hasło dla konta „root”
Zaczniemy od ustawienia hasła dla konta „root” („główne konto” w systemie Linux, taki administrator). W tym celu w oknie konsoli wpisujemy polecenie:
sudo passwd root
i naciskamy [ENTER], po czym wpisujemy hasło (Enter new UNIX password), jeszcze raz [ENTER] i ponownie to samo hasło (Retype new UNIX password) i [ENTER]
Zmiana powinna zakończyć się potwierdzeniem:
passwd: password updated successfully
Tworzymy nowego użytkownika
W moim wypadku (na potrzeby tego wpisu) będzie to użytkownik „patryk”, robimy to, korzystając z komendy:
sudo adduser patryk
I (standardowo) naciskamy klawisz [ENTER] by zatwierdzić.
Tak jak w przypadku ustawiania hasła dla konta „root”, tak i w tym wypadku obowiązuje zasada:
[nowe hasło] [ENTER] [jeszcze raz nowe hasło] [ENTER]
Z tą różnicą, że tutaj będziemy proszeni o podanie jeszcze kilku informacji, ale zazwyczaj nie ma takiej potrzeby i śmiało można przejść „na enterach”, na końcu tylko wpisując „y” dla potwierdzenia, że wszystko jest poprawnie:
Is the information coreect? [y]
Użytkownik „techniczny”
Może się jednak zdarzyć, że z jakiegoś powodu potrzebujemy użytkownika „w systemie”, ale taki użytkownik nie powinien mieć innych dostępów (np. na potrzeby Samby). W takim przypadku można stworzyć tzw. użytkownika systemowego, za pomocą polecenia:
sudo useradd -r nazwa_użytkownika
Nie zostanie utworzony katalog domowy, do tego taki użytkownik nie będzie mógł zalogować się do systemu.
SUDO
Użytkownik dodany, teraz dobrze byłoby mu nadać uprawnienia do korzystania z komendy „sudo””:
sudo (z ang. superuser do) – program stosowany w systemach operacyjnych GNU/Linux, Unix i podobnych, w celu umożliwienia użytkownikom uruchomienia aplikacji, jako inny użytkownik systemu. Najczęściej służy ono do uruchamiania aplikacji zarezerwowanych dla administratora zwanego rootem.
Dostęp do tego narzędzia kontroluje zazwyczaj plik /etc/sudoers, w którym wymienieni są wszyscy użytkownicy mogący używać sudo oraz programy, które w ten sposób mogą uruchomić. Edycja tego pliku pozwala kontrolować i zarządzać sudo.
Jeśli dany użytkownik nie powinien/nie potrzebuje korzystać z uprawnień administratora – pomijamy ten krok.
Zrobimy to, edytując plik „/etc/sudoers/” za pomocą takiej komendy:
sudo visudo
Kursorami przewijamy do miejsca, gdzie mamy taki zapis:
pi ALL=(ALL) NOPASSWD: ALL
i dopisujemy pod spodem:
nowy_użytkownik ALL=(ALL) NOPASSWD: ALL
W moim przypadku (użytkownik „patryk”) będzie to:
patryk ALL=(ALL) NOPASSWD: ALL
Oczywiście możliwości edycji (konfiguracji) za pomocą wpisów w tym miejscu jest sporo, a zaprezentowany powyżej przykład bazuje na domyślnej konfiguracji Raspbiana – taki użytkownik może wykonać dowolną komendę bez pytania o hasło, co jest wygodne.
W niektórych przypadkach warto rozważyć zastosowanie wariantu dość podobnego (dowolna komenda), z tym że przy pierwszym skorzystaniu z „sudo” w danej sesji pojawi się monit o hasło:
patryk ALL=(ALL) ALL
Na koniec trzeba zapisać zmiany, ja zazwyczaj robię to poprzez „wyjście”, czyli kombinację klawiszy CTRL+X (w nano, którego zazwyczaj używam), i na pytanie, czy zapisać zmiany wybieramy „Y”, po czym kasujemy „.tmp” z nazwy pliku:
File Name to Write: /etc/sudoers.tmp
Zmieniamy na:
File Name to Write: /etc/sudoers
i zatwierdzamy.
Może się zdarzyć, że w systemie nie będziecie mieli zainstalowanej aplikacji „sudo” i tym samym traficie na błąd:
-bash: sudo command not found
-bash: visudo command not found
W przypadku Raspberry Pi i Raspbiana jest to mało prawdopodobne, ale w przypadku niektórych dystrybucji (jak i obrazów dostępnych dla serwerów VPS) może się zdarzyć taka sytuacja. Wtedy wystarczy zalogować się do systemu jako root, i zainstalować pakiet/program „sudo”:
apt-get install sudo
Logujemy się jako (nowy) użytkownik
sudo shutdown -r now
Można też wylogować aktualnego użytkownika (czyli samego siebie) z systemu za pomocą komendy:
logout
Nawiązując do komentarza Krystiana, dodam, że jeśli łączymy się z Raspberry Pi zdalnie, np. za pomocą PuTTY – oczywiście można otworzyć kolejną sesję, bez zamykania aktualnej.
Po ponownym uruchomieniu możemy zalogować się na nowego użytkownika i zobaczyć czy wszystko działa:
Kasujemy (niepotrzebnego) użytkownika (pi)
Operację kasowania użytkownika – w tym przypadku „pi” – wykonamy takim poleceniem:
sudo deluser -remove-home pi
Przy okazji skasowaliśmy też katalog domowy użytkownika.
Wersja bez kasowania katalogu domowego:
sudo deluser pi
Zamiast kasować – możemy zablokować niepotrzebnego użytkownika (pi), może jeszcze kiedyś się przyda:
sudo passwd -l pi
Odblokowanie:
sudo passwd -u pi
Przy okazji jeszcze kilka komend (do przećwiczenia), które mogą się przydać, jeśli chodzi o zarządzanie użytkownikami:
Nowa grupa:
groupadd nazwa_grupy
Utworzenie użytkownika konkretnej grupy (np. „biuro” „recepcja”) użytkowników:
useradd -G nazwa_grupy nazwa_użytkownika
Zamian głównej grupy użytkownika:
usermod -g nazwa_grupy nazwa_użytkownika
Dodanie dodatkowej grupy dla użytkownika:
usermod -a -G nazwa_grupy nazwa_użytkownika
Kasowanie użytkownika z grupy:
deluser nazwa_użytkownika nazwa_grupy
Kasowanie grupy:
groupdel nazwa_grupy
Informacje o użytkowniku:
id nazwa_użytkownika
Lista użytkowników w systemie (jeden ze sposób na…):
cat /etc/passwd
I lekko zmodyfikowana wersja – tylko nazwa i katalog domowy:
sed 's/:[^:]*$//; s/:.*:/ /' /etc/passwd
Lista grup w systemie (jeden ze sposób na…):
cat /etc/group
I lekko zmodyfikowana wersja – tylko nazwa:
cut -d: -f1 /etc/group
Pamiętajcie, by poprzedzić polecenie komendą „sudo” jeśli nie wykonujecie jej z konta „root” (czyli zapewne zazwyczaj).
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
Tak, a następnie instalujemy open-ssh i cieszymy się, kiedy nasze hasło zostanie złamane i ktoś otrzyma dostęp do roota przez ssh. Hip-hip? hurra! ;) sudo z takimi ustawieniami dla wszystkich userów to ZŁO.
Przesadzasz… Z kilku powodów…
1. Nic nie stoi na przeszkodzie, by taki np. „power linux user” – zrobił to z konkretnymi regułami… A jak mimo „power” potrzebuje wsparcia, to jest link do Wiki z opisem, i Google też pomoże…
Wyjaśnienie niuansów/możliwości konfiguracji to temat na tyle szeroki, że wart oddzielnego wpisu, który gdzieś tam czeka na swoją kolej…
2. Kto napisał, że dla wszystkich? Tu jest, że zamiast OCZYWISTEGO użytkownika „pi” możemy mieć innego, co już samo w sobie podnosi bezpieczeństwo…
3. Nie tak łatwo złamać hasło… Chyba, że „admin:admin1” ;-)
4. Skoro „jesteś w stanie” złamać hasło do użytkownika np. „user1”, to domyślam się, że i dla użytkownika root będzie podobnie… I brak SUDO dla „user1” niewiele tu pomoże…
5. Trzeba mieć publiczny IP, do tego przekierować odpowiednie porty do Pi… A to już chyba na wstępie eliminuje wszystkich „mniej technicznych”. A do pracy jako HTPC czy „domowy NAS” nie potrzeba dawać Pi wejścia z zewnątrz…
6. Wreszcie – domyślnie użytkownik „pi”, który ma do tego oczywiste hasło „raspberry” ma też takie uprawnienia… I założę, się że na wielu Pi tak zostaje…
Ps. W Raspbianie SSH jest domyślnie aktywne, więc nie trzeba nic instalować czy konfigurować… I domyślnie jest wejście na „pi:raspberry”, tyle, że znowu wracamy do „Publiczne IP, przekierowanie portów, zmiana nazwy użytkownika i hasła”
Pozdrawiam
Dodam tylko, że nie trzeba restartować malinki po dodaniu użytkownika, by go sprawdzić :) Można uruchomić nową sesję putty i się zalogować.
Dodałem do wpisu, bo faktycznie też jest to (kolejna) metoda :-)
Witam serdecznie
Mam taki problem chcialbym na stałe wprowadzic zmiany w pliku sudoers.
Zapisuje zmiany w pliku, a po restarcie komputera na nowo musze wpisywac
konfiguracje dla usera ? Tak samo jest z CodeBlocks zmieniam ustawienia dla
higlighting ( podswietlanie skladni ) po restarcie kicha … prosze o pomoc
mój system to Debian Wheezy 7
Mariusz z Poznania
A jak dokonasz zmiany, to podczas zapisywania zwracasz uwagę na to, by zapisać plik bez domyślnie dodanego rozszerzenia „.tmp”?
Ew. połącz się z systemem np. poprzez WinSCP i dokonaj modyfikacji tego pliku w ten sposób…
Pozdrawiam
Witam serdecznie.
Wracając do tematu, tak edytuje plik za pomocą visudo, bo gdy otwieram plik w nano
to plik wydaje się być pusty ?!. Dodaje linie User ALL (ALL:ALL) ALL i zapisuje ale bez .tmp otrzymuje pytanie ze plik istnieje i czy potwierdzam nadpisywanie pliku ? zaznaczam tak i ok wszystko działa aż do momentu resetu lub wyłączenia kompa ?
Mariusz z Poznania
Tak się dzieje dlatego, że „visudo” to specyficzny rodzaj polecenia – otwiera w edytorze „vi” systemowy plik „sudoers”. By edytować ten plik w innym edytorze, np „nano” należy skorzystać z polecenia:
Może po zapisaniu pliku, a jeszcze przed restartem skorzystaj z polecenia:
A następnie:
I na koniec prawidłowe wyłączenie:
Udało się rozwiązać temat? u mnie tak samo się zaczęło dziać i nie wiem dlaczego.
Na żadnym swoim serwerze do tej pory nie trafiłem na taki przypadek, stąd nie bardzo mogę coś konkretnego Ci napisać, ale może spróbuj odinstalować i ponownie zainstalować „sudo”?
niestety sie nie udalo
Byśmy mogli wykluczyć problem z samym edytorem vi, spróbujcie zmienić domyślny edytor np. na nano, w nim dokonać modyfikacji: https://webinsider.pl/linux-debian-zmiana-domyslnego-edytora-tekstowego/
Mało prawdopodobne, by to było przyczyną, ale… zawsze to eliminacja podejrzanego ;-)
Jest kilkadziesiąt artykułów, które opisują jak utworzyć nowego użytkownika i nadać mu pełne uprawnienia, lecz nigdzie nie znalazłem opisu jak stworzyć użytkownika z ograniczeniami np do jednego folderu.
Można o informację jak to wykonać?
Możesz zerknąć do artykułu konfiguracja serwera SSH/SCP jako SFTP z ograniczeniami kont użytkowników (bezpieczniejsza alternatywa dla FTP), w którym pisałem, jak dokonać czegoś takiego dla połączenia SCP/SSH. Pogłębiając temat możesz zerknąć na Chroot. A być może warto sięgnąć po rozwiązania typu ACL (Access Control List) czy DAC (Discretionary Access Control). Możesz też poczytać (i ew. wdrożyć) MAC (Mandatory Access Control), czyli SELinux lub AppArmor.
Witam,
Zaczynam moją przygodę z malinką i skorzystałem z tego poradnika jak utworzyć nowego użytkownika. Nadałem mu uprawnienia zgodnie z opisem. W tej chwili chciałem zablokować użytkownika „pi” Po wykonaniu tej komendy (jestem zalogowany na nowym koncie użytkownika) dostaję informacje: passwd: password expiry information changed. Kiedy próbuję wykonać np. restart, raspberry informuje mnie, że: User pi is logged in on seat0.Please retry operation after closing inhibitors and logging out other users. Alternatively, ignore inhibitors and users with 'systemctl reboot -i’.
Nie bardzo wiem co powinienem zrobić. Przeszukałem internet i nie znalazłem żadnego rozwiazania.
Mój system to Raspbian.Loguję się przez ssh. Mam wygenerowane klucze RSA (wygenerowałem oddzielne klucze dla użytkownika „pi” – klucz publiczny w katalogu ..ssh; oraz klucz publiczny w nowy_użytkownik w katalogu ..ssh. Nie bardzo wiem, dlaczego „pi” nadal jest zalogowany. Po komendzie „whoami” – nowy_użytkownik.
Może zaloguj się na „pi” i wyloguj (logout). Ew. skorzystaj z polecenia, które masz sugerowane:
Jeśli to nie pomoże, to możesz zrestartować Malinę „z palca”, czyli poprzez chwilowe odcięcie zasilania.
Jakby co, to mamy też poradnik o łączeniu się po SSH z kluczem: https://webinsider.pl/linux-ssh-logowanie-z-certyfikatem/
A nawet z wykorzystaniem uwierzytelniania dwuskładnikowego: https:https://webinsider.pl/linux-ssh-scp-google-authenticator-2fa/
Dzięki za szybką odpowiedź. Sposób logowania jako „pi” i następnie wylogowania i jeszcze dodatkowo restart maliny przetestowałem kilka razy. Niestety nie pomagało. Znalazłem chyba przyczynę i metodę jak to wyłączyć. Problem był w autologowaniu użytkownika „pi”. Usunąłem „pi” jako autologin w pliku /etc/lightdm/lightdm.conf. Następnie logowanie na nowego użytkownika i już jako users nie pojawiał się „pi”. Więc tu chyba był problem.
Jednakże zastanawiam się czy jest metoda, aby zmienić nazwę użytkownika „pi” na „nowy_uzytkownik” z zachowaniem całej struktury plików? Po utworzeniu nowego użytkownika nie działają komendy np. zmiany katalogu – cd Desktop – odpowiedź plik nie istnieje. Zakładam, że dla „pi” jest utworzona cała struktura plików, natomiast dla nowego użytkownika tylko to co jest niezbędne. (nowy_uzytkownik z prawami jak root w sudo visudo).
No, jak miałeś ustawione automatyczne logowanie użytkownika „pi”, to faktycznie restart niewiele był w stanie pomóc ;-)
Jeśli utworzyłeś nowego użytkownika standardowym poleceniem, i nigdy się nim nie logowałeś do interfejsu graficznego, to najprawdopodobniej dlatego nie ma np. katalogu „desktop”. Jak się zalogujesz, to zostanie utworzony.
Jeśli jednak faktycznie chcesz się bawić w zmianę nazwy (moim zdaniem, jeśli nie musisz, to łatwiej utworzyć nowego) to zainteresuj się plikiem „/etc/passwd” i/lub poleceniem „usermod”.