Zaloguj się jako użytkownik inny niż root w terminalu

18

To pytanie, które oczekiwałbym szybko uzyskać odpowiedź od Google. Jednak jakoś google zawodzi. Załóżmy, że jestem zalogowany do sesji terminalowej i chciałbym tymczasowo pracować jako inny użytkownik inny niż root, którego hasło znam bez opuszczania sesji. Gdy jestem zalogowany jako ten użytkownik, chcę katalog domowy itp. Dla tego użytkownika poprawnie skonfigurowany, dopóki się nie wyloguję. Jak mogę to zrobić?

próbowałem

su -- username

a następnie wpisanie hasła, nie spowodowało to żadnego błędu, ale nie widziałem żadnych widocznych zmian w wierszu polecenia, to wciąż mówiłby myname @ myhost. Katalog domowy również zawierał nazwę myname, a nie nowy login, który próbowałem zalogować jako.

Jestem - jak się teraz wydaje - dość niedoświadczony w Linuksie / Ubuntu, więc wszelkie informacje są mile widziane.

Andrew Savinykh
źródło

Odpowiedzi:

18

Do którego użytkownika chcesz się zmienić?

Problem polega na tym, że próbujesz „su” na użytkownika, który nie ma przypisanej powłoki. Większość użytkowników, takich jak mysql, puls itp., Utworzonych przez system lub niektóre pakiety podczas instalowania oprogramowania, nie ma przypisanej powłoki.

Możesz sprawdzić, czy użytkownik ma przypisaną powłokę, zaglądając do /etc/passwdpliku, po prostu spójrz na koniec wiersza każdego użytkownika, jeśli mówi, /bin/falseże oznacza to, że nie ma przypisanej powłoki, jeśli ma coś podobnego /bin/bashlub innego shell, powinieneś być w stanie „su” dla tego użytkownika.

Kiedy mówię „przypisana powłoka”, oznacza to po prostu, że ma „dostęp do powłoki”

jeśli jednak użytkownik nie ma dostępu do powłoki, zawsze możesz wykonywać polecenia tak jak ten użytkownik

 sudo -u user command
Sam
źródło
mimo to, jeśli użytkownik nie ma dostępu do powłoki, zawsze można wykonywać polecenia tego użytkownika za pomocą polecenia „sudo -u user user”
Sam
Dołącz -s /bin/bashdo supolecenia lub użyj, chsh -u username -s /bin/bashaby zmienić powłokę dla użytkownika. Uważaj na konsekwencje dla bezpieczeństwa.
gertvdijk
7

jeśli masz dostęp do sudo, polecam

sudo su username -

Robi to w zasadzie to samo, ale wymaga jedynie znajomości hasła, a nie innych użytkowników.

jednak jeśli masz hasło innych użytkowników:

su username - powinien działać dobrze.

zauważ 1 - i to na końcu.

Coteyr
źródło
W jakiś sposób oba opisane przez ciebie sposoby zachowują się dokładnie tak samo jak moje - polecenie jest przyjmowane bezbłędnie, ale katalog domowy jest nieprawidłowy, a podpowiedź mówi, że nadal jestem oryginalnym użytkownikiem. Jeśli wyloguję się później, wyloguję się całkowicie.
Andrew Savinykh
Ok, czy użytkownik jest zalogowany jako użytkownik zalogowany? Możesz zablokować logowanie się do konta, ustawiając jego powłokę na „prawda”, a to zrobi dokładnie tak, jak opisano. To kiedyś było używane na wielu kontach „systemowych”, takich jak „apache” i „ftp”. Aby sprawdzić sudo cat /etc/passwdNIE WKLEJ TUTAJ TUTAJ. Wystarczy spojrzeć na nią i upewnić się, że użytkownik ma prawdziwą powłokę jako ostatni kawałek swojej linii.
coteyr
1
na marginesie, bardziej odpowiednim sposobem na to jest ustawienie powłoki na „false”, co spowoduje zgłoszenie błędu. Chociaż niektóre systemy i konta nadal używają prawdy ze względów technicznych lub bezpieczeństwa psudo (w celu zaostrzenia smoka z wana-be-
hackers