Какие многопользовательские операционные системы позволяют пользователю видеть текущую командную строку других пользователей?

13

Я читал справочную страницуunzip и столкнулся со следующим

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

Хотя меры предосторожности, заключающиеся в том, что пароли не вводятся в виде открытого текста (и их ввод в историю оболочки), конечно, верны, мне трудно поверить, что существуют операционные системы, где любой пользователь может видеть командную строку любого другого пользователь . Может ли кто-нибудь привести мне пример (включая устаревшие системы)?


Я считаю ps, topи т. Д. Являются ответом для UNIX.

4ae1e1
источник
драйвер клавиатуры)
STTR
@STTR Я мало знаю об оборудовании, поэтому я не уверен, что драйвер клавиатуры дает всем пользователям равный и полный доступ, но это, конечно, не ОС, и к ней не подключен tty.
4ae1e1
1
Просто обратите внимание: если вы хотите, чтобы команда не входила в историю bash, перед командой введите пробел.
Joshreesjones

Ответы:

4

Я полагаю, что в системах Unix / Linux использование lsofможет потенциально представлять взаимодействие с пользователем. Логика заключается в том, что lsofпоказывает список открытых файлов в системе. И, возможно, если кто-то разархивирует огромный файл, он все равно будет открыт достаточно долго, чтобы кто-то мог заметить, а затем посмотреть на активность. Черт, было бы довольно тривиально написать скрипт Bash и запускать его каждую минуту или около того с помощью задания cron для сбора текущего журнала активности открытых файлов.

Но это все еще звучит неверно для меня. Я имею в виду lsof, что таким образом потенциально можно получить что-то вроде встроенных паролей MySQL. Но я не на 100% уверен в том, сможет ли обычный пользователь без sudoправ / root видеть lsofдействия других пользователей.

JakeGould
источник
3
Ты определенно на правильном пути. Я думаю, что lsofпоказывает открытые файлы других пользователей, и вам не нужны повышенные привилегии (проверено на сервере моего учреждения). Точно так же psи topраскрыть командные строки других пользователей.
4ae1e1
1
Я также проверил man-страницы ps, topи lsofне нашел упоминания о привилегиях. Также есть вопрос: как сделать процесс невидимым для других пользователей? , Поэтому я думаю, что командные строки действительно видны всем в системах UNIX. Хм, большой сюрприз.
4ae1e1
Я узнал об этом, ttysnoopи, тем не conspyменее, я не уверен, требуют ли они привилегий суперпользователя.
Винаяк
Какие опции можно передать lsof, чтобы увидеть параметр командной строки? например, lsof -a +c0 /dev/nullя могу видеть длинное имя команды, но не параметр, переданный команде. Что я пропустил? :-)
Hastur
4

Unix позволяет "пс". Кроме того, в Unix обычно есть команда «w», которая показывает, какие пользователи работают. "w" может обычно отрубать команды в зависимости от размера терминала, но это может быть переопределено. (Один из простых способов - просто использовать более широкий терминал.)

Это, вероятно, также повлияет на несколько Unix-подобных систем (Linux, BSD, Solaris и т. Д.)

Я считаю, что Microsoft Windows также покажет это в диспетчере задач. Ну, может быть, это не так часто встречается в Windows Vista и управлении учетными записями пользователей, поскольку может потребоваться контроль учетных записей пользователей. Но в те времена, когда речь шла о WinXP / Server2003 и более ранних версиях, такие ограничения могли быть более слабыми. Есть причина, по которой NET USE начал поддерживать звездочку, а затем запрашивать пароль у пользователя. С:

WMIC /NODE:ComputerName PROCESS LIST

пользователь, вероятно, даже не должен находиться на одном компьютере, чтобы увидеть команду, которая выполняется. Случайно, я подозреваю, что несколько TaskList, TList и PSList (все распространяются бесплатно Microsoft), вероятно, также поддерживают возможность видеть, что происходит, независимо от того, какой пользователь работает. По крайней мере, пользователи с правами администратора, что чаще встречалось в операционных системах до Vista. (В Win9x общим стандартом было то, что все пользователи обладали правами администратора). Имейте в виду, что Info-Zip - документация, которую вы цитируете, - немного старше, чем WinXP. Я думаю, что он старше, чем Win95.

В старых многопользовательских системах секретность не была такой большой проблемой. Возможность видеть, что делает компьютер, в том числе команды, которые выполняли другие пользователи, вероятно, рассматривалась как положительная особенность, а не как отрицательное нарушение безопасности. Возможно, более применимый вопрос: существует ли какая-либо крупная многопользовательская ОС, которая не поддерживала возможность пользователям видеть, какие команды запускаются на компьютере?

Более безопасный подход - никогда не вводить конфиденциальные пароли в командную строку. Другой вариант может заключаться в том, чтобы поместить пароли в файл, а затем указать этот файл в командной строке. например:

type pwfile | command

По крайней мере, таким образом, разрешения, основанные на реализации файловой системы, вероятно, обеспечат некоторую защиту.

TOOGAM
источник
1
Чтобы увидеть процессы другого пользователя в Windows, вы должны быть администратором.
Моше Кац
4

Некоторые (и я полагаю, не все) способы увидеть команду zip -PThat_Password ...другого пользователя в Linux без прав root :

  • cat /proc/24695/cmdline если PID 24695 ...

    Zip-P That_Password

    Примечание: это без пробелов, но можно угадать пароль, однако

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

    Двоичный файл / proc / 24695 / cmdline соответствует

    хорошо, если это работает, catэто работает все остальное на основе текста ...

  • pgrep -a zipопция -a перечисляет полную командную строку, а также идентификатор процесса. (не всегда доступно на старой версии [например, <2008] pgrep)

    24695 zip -P That_Password

и, конечно, оп упомянул

  • 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 этот ответ с чем-то вроде

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

Hastur
источник
@JakeGould По крайней мере, в моих системах команда вроде cat /proc/24695/cmdlineдает вывод без пробелов ...
Hastur