Ta odpowiedź powinna ci pomóc, nawet biorąc pod uwagę zmiany w pytaniu. W szczególności konto utworzone
--disabled-login
bez hasła i innych metod logowania , ale nadal powinno być możliwe korzystanie z sudo
(wyjaśnione poniżej) do uruchamiania poleceń lub powłoki jako użytkownik. Tak właśnie
root
konfiguruje się konto w Ubuntu.
Istnieje wiele problemów z poleceniem su - irssi
.
To polecenie próbuje uruchomić powłokę należącą do użytkownika o nazwieirssi
.
Nie powiedzie się, jeśli:
- Nie ma
irssi
użytkownika.
- Na
irssi
konto użytkownika jest wyłączone.
- Na
irssi
konto użytkownika zostanie wyłączone do interaktywnego logowania. Czasami konto może korzystać z usług takich jak FTP, ale nie może logować się normalnie, ustawiając powłokę na coś, co natychmiast zamyka /bin/false
. Następnie logowanie natychmiast się kończy, bez wiadomości.
- Wprowadzane hasło jest nieprawidłowe dla
irssi
użytkownika.
-
Flag czyni go tak powłoka symuluje wstępnej powłoki logowania - czyli tak naprawdę to bardzo podobnie jak na rejestrowanie irssi
. Bez -
flagi, jeśli su
polecenie się powiedzie, nadal będziesz mieć powłokę należącą do irssi
, ale zmienne środowiskowe, takie jak HOME
, pozostaną niezmienione.
Jeśli zamiast tego chcesz uruchomić program o nazwie irssi
, musisz wywołać su
inaczej:
su username - -c irssi
Jeśli pominiesz , będzie to to samo, co - próbuje uruchomić polecenie jako root.-c username
-c root
Alternatywnie możesz uruchomić powłokę, a następnie uruchomić polecenie :
- Uruchom powłokę za pomocą .
su username -
- W powłoce uruchom polecenie (
irssi
).
- Jeśli skończysz, opuść powłokę, uruchamiając
exit
.
Uruchamianie poleceń jako root
Jeśli chcesz uruchomić irssi
jako root
, su
nie jest to sposób. Logowanie do rootowania jest domyślnie wyłączone w Ubuntu, i rzadko jest powód, aby je ponownie włączyć . Jeśli włączyłeś root
logowanie, powinieneś być w stanie su
zostać root
. Włączenie root
konta nie jest konieczne, ponieważ niezależnie od tego, czy robisz, nadal możesz uruchamiać polecenia tak jak w root
przypadku sudo
.
Po uruchomieniu polecenia z sudo
, można umieścić w swoim hasłem, a nie hasło użytkownika w ramach którego tożsamość chcesz polecenie do uruchomienia. Tylko administratorzy mogą uruchamiać dowolne polecenia tak jak w root
przypadku sudo
(chyba że zmienisz konfigurację, sudo
aby inni mogli to zrobić oczywiście). Tak więc użytkownik, który nie ma uprawnień do administrowania systemem, nie może uruchamiać poleceń tak jak root
z własnym hasłem.
Aby uruchomić irssi
jak root
w sudo
:
sudo irssi
I chcesz wprowadzić swoje hasło po wyświetleniu monitu nie root
„s.
Z wyjątkiem wprowadzonego hasła działa to tak samo jak:
su -c irssi
Tyle że sudo
wersja może się powieść, ponieważ nie wymaga włączenia root
konta.
Podobnie jak w przypadku su
, możesz używać sudo
do uruchamiania poleceń jako inny, niebędący root
użytkownikiem . Aby uruchomić irssi
jak username
w sudo
:
sudo -u username irssi
Jeśli chcesz sudo
zachowywać się tak jak su -
w odniesieniu doHOME
- to znaczy, że chcesz użyć HOME
zmiennych środowiskowych użytkownika docelowego , możesz uruchomić sudo
z -H
flagą:
sudo -H irssi
sudo -H -u username irssi
Możesz zacząć całą powłokę sudo
, tak jak możesz su
. Oprócz tego, dla którego hasła zostało wprowadzone, polecenie to ma taki sam efekt jak su
:
sudo -s
To polecenie ma taki sam efekt jak su -
:
sudo -i
( i
Oznacza początkową powłokę logowania .)
Możesz także uruchomić powłokę jako inny użytkownik:
sudo -u username -s
sudo -u username -i
Dalsza lektura na sudo
Aby dowiedzieć się więcejsudo
, spójrz na:
Dlaczego gksu
działał, kiedy su
nie?
gksu
prawdopodobnie działał przez bieganiesudo
.
gksu
jest nakładką dla obu su
i sudo
. W Ubuntu domyślnie używa sudo
(ponieważ w Ubuntu su
zwykle nie jest używany do stania się root
i jest jedynie drugorzędnym sposobem, aby stać się innym, niebędącym root
użytkownikiem).
Możesz gksu
użyć su
jako nakładki, uruchamiając gksu --su-mode
.
Możesz dowiedzieć się, czy gksu
jest w su
trybie czy w sudo
trybie, i (jeśli chcesz) zmienić to ustawienie, uruchamiając gksu-properties
. Jest to ustawienie dla użytkownika.
Gdy gksu
jest w sudo
trybie, zachowuje się tak samo jak gksudo
.
Dalsza lektura na gksu
Analiza po rozwiązaniu
Ostatecznie okazało się, że możesz uruchomić niezbędne polecenie za pomocą:
sudo -u username irssi
(Która z technik wymienionych powyżej.)
Ostatecznie zgłosiłeś dwie informacje, które są wystarczające, aby wyjaśnić, dlaczego inne techniki zawiodły, ale się udało:
username
Konto zostało utworzone z --disabled-login
flagą, co sprawia, że mają żadnego hasła (i żadnych innych środków zalogowaniu). Brak hasła nie oznacza, że można zalogować się przy użyciu pustego hasła . Oznacza to, że żadne hasło nie jest wystarczające do uwierzytelnienia. W połączeniu z eliminacją innych środków uwierzytelnienia, środki username
te w ogóle nie mogą zostać uwierzytelnione.
su
Rozwiązania oparte na wszystkich rozwiązaniach są już dostępne. sudo
może jednak działać, ponieważ sudo
nie uwierzytelniasz się jako użytkownik, którego zamierzasz podszyć. Zamiast tego musisz być upoważniony do podszywania się pod nich i uwierzytelniaj się jako Ty (tzn. Wprowadź własne hasło, a nie ich).
Możliwe jest ustawienie hasła do konta, które usuwa barierę w logowaniu:
sudo passwd username
Jednak może istnieć dobry powód, dla którego użytkownik nie może się zalogować. Na przykład, jeśli ten użytkownik miałby możliwość logowania i zalogował się graficznie, pojawiłyby się złe problemy ze środowiska użytkownika lub przywileje, które byłyby słabo dostosowane do uruchamiania aplikacji X11 ? Jeśli ten użytkownik mógłby się zalogować, czy umożliwiłoby to zalogowanie się zdalnie jako ten użytkownik (w przypadku komputerów, na których udostępniono usługi sieciowe)?
Jeśli kiedykolwiek chcesz to wyłączyć:
sudo passwd -dl username
Powiązane: Ponowne wyłączenie root
konta po tymczasowym włączeniu.
username
Konto ma /bin/false
jako powłokę logowania.
Gdy taka powłoka bash
działa jako powłoka logowania, konfiguruje środowisko i wyświetla interaktywny monit, za pomocą którego można sterować maszyną.
/bin/false
Natomiast podczas uruchamiania nic nie robi i zgłasza awarię . ( /bin/true
nic nie robi i zgłasza sukces).
Polecenia false
i true
są przydatne w skryptach i do różnych celów testowych, ale także do wyłączania konta, aby gdy ktoś się zalogował, sesja logowania natychmiast się kończy. W ten sposób można włączyć hasło (lub inny sposób uwierzytelnienia), a ludzie mogą się zalogować, ale nie w celu uzyskania dostępu do powłoki . Na przykład, jeśli istnieje serwer FTP, nadal mogą uzyskać dostęp do swojego konta za pośrednictwem FTP. Jeśli istnieje serwer SSH, nie byliby w stanie uzyskać powłoki przez SSH, ale nadal mogliby używać sftp
i scp
przesyłać pliki.
Ponieważ username
„s logowanie shell był niefunkcjonalny, polecenia podoba , , i nie mógł pracować.su username
su - username
sudo -u username -s
sudo -u username -i
Ale polecenia, które nie dają powłoki, jak lub mogą nadal działać.sudo -u username command
su username -c 'command'
Ponieważ polecenia można uruchomić, to może zmienić powłokę logowania użytkownika do czegoś funkcjonalnego:
sudo chsh -s /bin/bash username
Jednak należy to również zrobić ostrożnie, ponieważ może istnieć dobry powód, aby wyłączyć interaktywne logowanie dla użytkownika.
Tutaj username
oba miały wyłączone hasło i „wyłączoną” powłokę. Brak działającego hasła uniemożliwił działanie wszystkich su
rozwiązań opartych na bazie, a brak działającej interaktywnej powłoki logowania uniemożliwił działanie wszystkich rozwiązań spawnujących powłokę (z wyjątkiem ręcznego wywoływania powłoki, jak ).sudo -u username bash
sudo -u username command
pozostało.