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