Могут ли другие пользователи просматривать аргументы, переданные команде?


21

Если я вызову команду с аргументами, например, так:

bob@bob-pc:~$ command -arg1 -arg2

... могут ли другие пользователи просматривать аргументы, переданные команде?


Простой ответ «да», «нет» на этот вопрос противоречил бы содержанию и названию: P
kizzx2

@ kizzx2: исправлено.
Багамат

Ответы:


13

В общем, да, они это видят. Это изw справочной страницы:

Для каждого пользователя отображаются следующие записи: имя для входа, имя tty, удаленный хост, время входа в систему, время простоя, JCPU, PCPU и командная строка их текущего процесса.

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


Там нет способа отключить это?
Натан Осман

3
@ Джордж Есть, потому что rdesktop делает это как-то (аргумент пароля превращается в XXXXXXXX); Я хотел бы знать, как. Это может сделать что-то нехорошее, например, просто разветвляться и выдавать ложный аргумент; Я не уверен
Майкл Мрозек

13
В Linux процесс может перезаписать переданный ему массив аргументов. Это отражается в дереве процессов, видимом для других пользователей. Тем не менее, всегда есть время, когда они подвергаются воздействию и могут быть уязвимы к условиям гонки и времени атаки.
Mattdm

15

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

$ ps -U root -o command= |grep getty |head -n 1
/usr/libexec/getty std.9600 ttyC0

В Linux вы заметите, что все /proc/*/cmdlineфайлы доступны для чтения.

Могут быть очень специфические настройки, в которых аргументы командной строки остаются закрытыми. Например, SELinux и Solaris могут скрывать процессы от других пользователей . Но если вы абсолютно не знаете, что находитесь в такой настройке, предположите, что аргументы командной строки являются открытыми.


8

На стандартных установках аргументы видны. Как уже упоминалось , процессы могут перезаписывать их в памяти, но не раньше, чем другие процессы смогут их увидеть.

Однако в набор патчей grsecurity входит патч, который изменяет его, поэтому только владелец процесса (и пользователь root) могут видеть аргументы, передаваемые процессу.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.