Próbuję użyć polecenia su, aby uruchomić aplikację jako inny użytkownik
W tym przypadku próbuję uruchomić irssi
blah@ubuntu: su - [username] irssi
(enter password)
blah@ubuntu:
(nothing happens)
blah@ubuntu: su - [username] -c irssi
(nothing)
Uruchamiam gksu i ustawiam te same parametry i działa, i nie pyta mnie o hasło użytkownika. Jaki jest problem? I jak to rozwiązać?
Należy zauważyć, że użytkownik został utworzony w ten sposób
adduser --system --disabled-login [username]
jeśli to robi jakąkolwiek różnicę ... westchnij.
irssi
ma problem i że polecenie su działa?Odpowiedzi:
Istnieje wiele problemów z poleceniem
su - irssi
.To polecenie próbuje uruchomić powłokę należącą do użytkownika o nazwie
irssi
.Nie powiedzie się, jeśli:
irssi
użytkownika.irssi
konto użytkownika jest wyłączone.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.irssi
użytkownika.-
Flag czyni go tak powłoka symuluje wstępnej powłoki logowania - czyli tak naprawdę to bardzo podobnie jak na rejestrowanieirssi
. Bez-
flagi, jeślisu
polecenie się powiedzie, nadal będziesz mieć powłokę należącą doirssi
, ale zmienne środowiskowe, takie jakHOME
, pozostaną niezmienione.Jeśli zamiast tego chcesz uruchomić program o nazwie
irssi
, musisz wywołaćsu
inaczej: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 :
su username -
irssi
).exit
.Uruchamianie poleceń jako
root
Jeśli chcesz uruchomić
irssi
jakoroot
,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 staniesu
zostaćroot
. Włączenieroot
konta nie jest konieczne, ponieważ niezależnie od tego, czy robisz, nadal możesz uruchamiać polecenia tak jak wroot
przypadkusudo
.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 wroot
przypadkusudo
(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 jakroot
z własnym hasłem.Aby uruchomić
irssi
jakroot
wsudo
: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:
Tyle że
sudo
wersja może się powieść, ponieważ nie wymaga włączeniaroot
konta.Podobnie jak w przypadku
su
, możesz używaćsudo
do uruchamiania poleceń jako inny, niebędącyroot
użytkownikiem . Aby uruchomićirssi
jakusername
wsudo
:Jeśli chcesz
sudo
zachowywać się tak jaksu -
w odniesieniu doHOME
- to znaczy, że chcesz użyćHOME
zmiennych środowiskowych użytkownika docelowego , możesz uruchomićsudo
z-H
flagą:Możesz zacząć całą powłokę
sudo
, tak jak możeszsu
. Oprócz tego, dla którego hasła zostało wprowadzone, polecenie to ma taki sam efekt jaksu
:To polecenie ma taki sam efekt jak
su -
:(
i
Oznacza początkową powłokę logowania .)Możesz także uruchomić powłokę jako inny użytkownik:
Dalsza lektura na
sudo
Aby dowiedzieć się więcej
sudo
, spójrz na:sudo
stronie (przez autorasudo
).man sudo
Dlaczego
gksu
działał, kiedysu
nie?gksu
prawdopodobnie działał przez bieganiesudo
.gksu
jest nakładką dla obusu
isudo
. W Ubuntu domyślnie używasudo
(ponieważ w Ubuntusu
zwykle nie jest używany do stania sięroot
i jest jedynie drugorzędnym sposobem, aby stać się innym, niebędącymroot
użytkownikiem).Możesz
gksu
użyćsu
jako nakładki, uruchamiającgksu --su-mode
.Możesz dowiedzieć się, czy
gksu
jest wsu
trybie czy wsudo
trybie, i (jeśli chcesz) zmienić to ustawienie, uruchamiającgksu-properties
. Jest to ustawienie dla użytkownika.Gdy
gksu
jest wsudo
trybie, zachowuje się tak samo jakgksudo
.Dalsza lektura na
gksu
sudo
”.man gksu
gksu
strona internetowa (przez twórcówgksu
).gksu
vs.gksudo
w Ubuntu.Analiza po rozwiązaniu
Ostatecznie okazało się, że możesz uruchomić niezbędne polecenie za pomocą:
(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, środkiusername
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:
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ć:
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
itrue
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
iscp
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:
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 wszystkichsu
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.źródło