Które systemy operacyjne dla wielu użytkowników pozwalają użytkownikowi zobaczyć bieżący wiersz poleceń innych użytkowników?

13

Czytałem stronę podręcznikaunzip i natknąłem się na następujące

-P password
       use password to decrypt encrypted zipfile entries (if  any).   THIS
       IS  INSECURE!   Many  multi-user operating systems provide ways for
       any user to see the current command line of any other user; even on
       stand-alone systems there is always the threat of over-the-shoulder
       peeking.

Chociaż środki ostrożności związane z nie wpisywaniem haseł w postaci zwykłego tekstu (i kończeniem ich w historii powłoki) są oczywiście prawdziwe, trudno mi uwierzyć, że istnieją systemy operacyjne, w których każdy użytkownik może zobaczyć wiersz poleceń dowolnego innego użytkownik . Czy ktoś mógłby mi podać przykład (w tym starsze systemy)?


Wierzę ps, topitp są odpowiedzią na UNIX.

4ae1e1
źródło
sterownik klawiatury)
STTR
@STTR Wiem niewiele o sprzęcie, więc nie jestem pewien, czy sterownik klawiatury zapewnia wszystkim użytkownikom równy i pełny dostęp, ale z pewnością nie jest to system operacyjny i nie jest do niego podłączony tty.
4ae1e1
1
Tylko uwaga, jeśli chcesz, aby polecenie nie przechodziło do historii bash, poprzedź je spacją.
joshreesjones

Odpowiedzi:

4

Domyślam się, że w systemach Unix / Linux używanie lsofmoże potencjalnie ujawnić interakcję użytkownika. Logika lsofpokazuje listę otwartych plików w systemie. A może, jeśli ktoś rozpakuje ogromny plik, nadal będzie otwarty wystarczająco długo, aby ktoś mógł go zauważyć, a następnie zajrzy do aktywności. Cholera, napisanie skryptu Bash i uruchamianie go co około minutę za pomocą zadania cron w celu zebrania bieżącego dziennika aktywności otwartych plików byłoby dość proste.

Ale to wciąż brzmi dla mnie fałszywie. Mam na myśli, lsofże potencjalnie ujawnia w ten sposób coś takiego jak wbudowane hasła MySQL. Ale nie jestem w 100% pewien, czy normalny użytkownik bez sudopraw / root będzie w stanie zobaczyć lsofaktywność innych takich użytkowników.

JakeGould
źródło
3
Jesteś zdecydowanie na dobrej drodze. Myślę, że lsofpokazuje otwarte pliki innych użytkowników i nie potrzebujesz podwyższonych uprawnień (testowane na serwerze mojej instytucji). Podobnie psi topujawnij wiersze poleceń innego użytkownika.
4ae1e1
1
I dalej sprawdzone strony podręcznika o ps, topa lsof, a nie znalazł wzmiankę o przywileju. Jest też pytanie: jak uczynić proces niewidocznym dla innych użytkowników? . Sądzę więc, że wiersze poleceń są rzeczywiście widoczne dla wszystkich w systemach UNIX. Hmm, wielka niespodzianka.
4ae1e1
Dowiedziałem się o ttysnoop, a conspyjednak nie jestem pewien, czy nie wymagają one uprawnień roota.
Vinayak,
Które opcje do przekazania lsofpozwalają zobaczyć parametr wiersza poleceń? np. lsof -a +c0 /dev/nullwidzę długą nazwę polecenia, ale parametr nie został przekazany do polecenia. Co mnie ominęło? :-)
Hastur
4

Unix zezwala na „ps”. Ponadto Unix zwykle ma polecenie „w”, które pokazuje, które użytkownicy są uruchomione. „w” może często odcinać polecenia na podstawie wielkości terminala, ale można je zastąpić. (Jednym prostym sposobem może być po prostu użycie szerszego terminalu.)

Prawdopodobnie wpłynie to również na wiele systemów uniksopodobnych (Linux, BSD, Solaris itp.)

Wierzę, że Microsoft Windows pokazałby to również w Menedżerze zadań. Cóż, może jest to mniej powszechne w systemie Windows Vista i Kontroli konta użytkownika, ponieważ może być potrzebna Kontrola konta użytkownika. Ale w czasach na WinXP / Server2003 i wcześniejszych, takie ograniczenia mogły być bardziej luźne. Istnieje powód, dla którego NET USE zaczął obsługiwać gwiazdkę, a następnie monitował użytkownika o hasło. Z:

WMIC /NODE:ComputerName PROCESS LIST

użytkownik prawdopodobnie nie musi nawet znajdować się na tym samym komputerze, aby zobaczyć uruchamiane polecenie. Podejrzewam, że wiele TaskList, TList i PSList (wszystkie dystrybuowane swobodnie przez Microsoft) prawdopodobnie również obsługują możliwość zobaczenia, co się dzieje, niezależnie od tego, który użytkownik jest uruchomiony. Przynajmniej użytkownicy z uprawnieniami administratora, co było bardziej powszechne w systemach operacyjnych starszych niż Vista. (W Win9x ogólny standard był taki, że wszyscy użytkownicy mieli umiejętności podobne do Administratora.) Należy pamiętać, że Info-Zip, czyli dokumentacja, którą cytujesz, jest nieco starszy niż WinXP. Wydaje mi się, że jest starszy niż Win95.

W starszych systemach dla wielu użytkowników poufność nie była aż tak dużym problemem. Możliwość zobaczenia, co robi komputer, w tym poleceń wykonywanych przez innych użytkowników, była prawdopodobnie postrzegana jako pozytywna funkcja, a nie negatywne naruszenie bezpieczeństwa. Być może bardziej stosownym pytaniem jest: czy istnieje jakiś większy system operacyjny dla wielu użytkowników, który nie wspierałby użytkowników w sprawdzaniu, jakie polecenia są uruchamiane na komputerze?

Bezpieczniejszym podejściem jest nigdy nie umieszczać wrażliwych haseł w wierszu poleceń. Inną opcją może być umieszczenie haseł w pliku, a następnie określenie tego pliku w wierszu polecenia. na przykład:

type pwfile | command

Przynajmniej w ten sposób uprawnienia oparte na implementacji systemu plików zapewnią pewną ochronę.

TOOGAM
źródło
1
Aby zobaczyć procesy innego użytkownika w systemie Windows, musisz być administratorem.
Moshe Katz
4

Niektóre (i uważam, że nie wszystkie) sposoby Linuxa, aby zobaczyć polecenie zip -PThat_Password ...innego użytkownika bez uprawnień roota :

  • cat /proc/24695/cmdline jeśli PID to 24695 ...

    zip-P That_Password

    Uwaga: nie ma spacji, ale można odgadnąć hasło

  • grep -H -e "zip" /proc/[0-9]*/cmdline

    Dopasowania pliku binarnego / proc / 24695 / cmdline

    cóż, jeśli to działa cat, działa wszystko inne oparte na tekście ...

  • pgrep -a zipopcja -a wyświetla pełną linię poleceń oraz identyfikator procesu. (nie zawsze dostępne w starej wersji [np. <2008] z pgrep)

    24695 zip -P That_Password

i oczywiście wspomniana operacja

  • ps -aux | grep zip

    That_User 24695 1,9 0,0 15012 1192 pkt / 40 T 12:37 0:45 zip -P That_Password

  • top -c -b -n 1 | grep zip ta odpowiedź z czymś takim

    24695 That_User 20 0 15012 1192 820 T 0,0 0,0 0: 45,12 zip -P That_Password

Hastur
źródło
@JakeGould Przynajmniej w moich systemach polecenie takie jak cat /proc/24695/cmdlinedawanie danych wyjściowych bez spacji ...
Hastur
1
ps ax

w systemach Unix / Linux i podobnych.

ilkhd
źródło