Если я вызову команду с аргументами, например, так:
bob@bob-pc:~$ command -arg1 -arg2
... могут ли другие пользователи просматривать аргументы, переданные команде?
Если я вызову команду с аргументами, например, так:
bob@bob-pc:~$ command -arg1 -arg2
... могут ли другие пользователи просматривать аргументы, переданные команде?
Ответы:
В общем, да, они это видят. Это изw
справочной страницы:
Для каждого пользователя отображаются следующие записи: имя для входа, имя tty, удаленный хост, время входа в систему, время простоя, JCPU, PCPU и командная строка их текущего процесса.
Будет отображена полная командная строка вашего текущего запущенного процесса. Вот почему вы не хотите предоставлять такие вещи, как пароли через аргументы командной строки.
XXXXXXXX
); Я хотел бы знать, как. Это может сделать что-то нехорошее, например, просто разветвляться и выдавать ложный аргумент; Я не уверен
В общем, аргументы командной строки видны всем. Например, как пользователь без полномочий root в OpenBSD, я вижу аргументы процессов, выполняющихся от имени пользователя root:
$ ps -U root -o command= |grep getty |head -n 1
/usr/libexec/getty std.9600 ttyC0
В Linux вы заметите, что все /proc/*/cmdline
файлы доступны для чтения.
Могут быть очень специфические настройки, в которых аргументы командной строки остаются закрытыми. Например, SELinux и Solaris могут скрывать процессы от других пользователей . Но если вы абсолютно не знаете, что находитесь в такой настройке, предположите, что аргументы командной строки являются открытыми.
На стандартных установках аргументы видны. Как уже упоминалось , процессы могут перезаписывать их в памяти, но не раньше, чем другие процессы смогут их увидеть.
Однако в набор патчей grsecurity входит патч, который изменяет его, поэтому только владелец процесса (и пользователь root) могут видеть аргументы, передаваемые процессу.