Quali sistemi operativi multiutente consentono a un utente di vedere la riga di comando corrente di altri utenti?


13

Stavo leggendo la manpage diunzip e mi sono imbattuto nel seguente

-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.

Mentre la precauzione di sicurezza di non digitare le password in chiaro (e di farle finire nella cronologia della shell) è ovviamente vera, trovo difficile credere che ci siano sistemi operativi là fuori dove qualsiasi utente può vedere la riga di comando di qualsiasi altro utente . Qualcuno potrebbe darmi un esempio (inclusi i sistemi legacy)?


Credo ps, topecc. Sono la risposta per UNIX.


driver tastiera)
STTR

@STTR Conosco poco l'hardware, quindi non sono sicuro che il driver della tastiera offra a tutti gli utenti un accesso uguale e completo, ma questo non è certamente un sistema operativo e non è collegato ad esso.
4ae1e1,

1
Solo una nota, se vuoi impedire a un comando di entrare nella storia di bash, precedi il comando con uno spazio.
joshreesjones,

Risposte:


4

La mia ipotesi sarebbe che sui sistemi Unix / Linux l'utilizzo lsofpotrebbe potenzialmente esporre l'interazione dell'utente. La logica è che lsofmostra un elenco di file aperti sul sistema. E forse se uno sta decomprimendo un file enorme allora sarebbe ancora aperto abbastanza a lungo da essere notato da qualcuno e poi dare un'occhiata alle attività. Cavolo, sarebbe abbastanza banale scrivere uno script Bash ed eseguirlo ogni minuto o giù di lì tramite un processo cron per raccogliere un registro in corso di attività di file aperto.

Ma questo mi sembra ancora falso. Voglio dire lsof, potenzialmente espone qualcosa come le password MySQL in linea in questo modo. Ma non sono sicuro al 100% se un utente normale senza sudoi diritti / root sia in grado di vedere lsofattività di altri utenti in quel modo.


3
Sei decisamente sulla buona strada. Penso che lsofmostri i file aperti di altri utenti e non hai bisogno di privilegi elevati (testati sul server della mia istituzione). Allo stesso modo, pse toprivelare le righe di comando di altri utenti.
4ae1e1,

1
Ho inoltre controllato le pagine di manuale di ps, toped lsofe ho trovato alcuna menzione di privilegio. C'è anche questa domanda: come rendere un processo invisibile agli altri utenti? . Quindi immagino che le linee di comando siano davvero visibili a tutti sui sistemi UNIX. Hmm, grande sorpresa.
4ae1e1,

Ho scoperto ttysnoope conspycomunque non sono sicuro che richiedano o meno i privilegi di root.
Vinayak,

Quali sono le opzioni da passare a quelle lsofche consentono di vedere il parametro della riga di comando? con es lsof -a +c0 /dev/null. sono in grado di vedere il nome del comando lungo ma non il parametro passato al comando. Cosa mi sono perso? :-)
Hastur

4

Unix consente "ps". Inoltre, Unix ha comunemente un comando "w" che mostrerà ciò che gli utenti stanno eseguendo. "w" potrebbe comunemente tagliare i comandi in base alla dimensione del terminale, ma ciò può essere ignorato. (Un modo semplice potrebbe essere quello di utilizzare solo un terminale più largo.)

Ciò probabilmente influirà anche su più sistemi simili a Unix (Linux, sistemi BSD, Solaris, ecc.)

Credo che Microsoft Windows lo mostrerebbe anche nel Task Manager. Bene, forse è meno comune con Windows Vista e Controllo dell'account utente, poiché potrebbe essere necessario il controllo dell'account utente. Ma ai tempi su WinXP / Server2003 e precedenti, tali restrizioni potrebbero essere state più lassiste. C'è un motivo per cui NET USE ha iniziato a supportare un asterisco e quindi a richiedere all'utente una password. Con:

WMIC /NODE:ComputerName PROCESS LIST

un utente probabilmente non ha nemmeno bisogno di essere sullo stesso computer per vedere un comando che viene eseguito. Personalmente, sospetto che molti di TaskList, TList e PSList (tutti distribuiti liberamente da Microsoft) probabilmente supportano anche la possibilità di vedere cosa sta succedendo, indipendentemente da quale utente stia eseguendo. Almeno, utenti con privilegi di amministratore, che erano più comuni sui sistemi operativi pre-Vista. (In Win9x, lo standard generale era che tutti gli utenti avevano abilità simili all'amministratore.) Tieni presente che Info-Zip, che è la documentazione che stai citando, è un po 'più vecchia di WinXP. Offhand Penso che sia più vecchio di Win95.

Con i vecchi sistemi multiutente, la segretezza non era così grave. Essere in grado di vedere cosa sta facendo il computer, inclusi i comandi in esecuzione da altri utenti, è stato probabilmente visto come una caratteristica positiva, non una violazione negativa della sicurezza. Forse una domanda più applicabile è: esiste qualche sistema operativo multiutente che non supporta gli utenti in grado di vedere quali comandi vengono eseguiti sul computer?

L'approccio più sicuro è di non mettere mai password sensibili su una riga di comando. Un'altra opzione potrebbe essere quella di inserire le password in un file e quindi specificare quel file sulla riga di comando. per esempio:

type pwfile | command

Almeno in questo modo, le autorizzazioni basate sull'implementazione del filesystem probabilmente offriranno una certa protezione.


1
Per vedere i processi di un altro utente su Windows, devi essere un amministratore.
Moshe Katz,

4

Alcuni (e credo non tutti) modi di Linux per vedere il comando zip -PThat_Password ...di un altro utente senza privilegi di root :

  • cat /proc/24695/cmdline se il PID è 24695 ...

    zip-P That_Password

    Nota: è senza spazi ma è possibile indovinare la password

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

    Corrispondenze file binario / proc / 24695 / cmdline

    bene se funziona catfunziona tutto il resto basato sul testo ...

  • pgrep -a zipl'opzione -a elenca la riga di comando completa e l'ID processo. (non sempre disponibile nella versione precedente [ad es. <2008] di pgrep)

    24695 zip -P That_Password

e naturalmente la op menzionato

  • ps -aux | grep zip

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

  • top -c -b -n 1 | grep zip quella risposta con qualcosa del genere

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


@JakeGould Almeno sui miei sistemi il comando come cat /proc/24695/cmdlinedare output senza spazi ...
Hastur

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.