Как я могу подделать объем установленной оперативной памяти для определенной программы в Linux?

Почему бы не использовать sudoвместо su?

# path_value=/home/username/filename\$1.class
# echo "${path_value}"
/home/username/filename$1.class
# sudo -u username echo "${path_value}"
/home/username/filename$1.class
37
22.04.2020, 20:20
2 ответа

Немного подумав, я сделал это:

Начато сnano /proc/meminfo

Изменены MemTotal, MemFree, MemAvailable, SwapTotalи SwapFreeна нужные значения и сохранены в ~./meminfo

Дал пользователю boinc пароль sudo passwd boincи оболочку --sudo nano /etc/passwd, нашел строку boinc:x:129:141:BOINC core client,,,:/var/lib/boinc-client:/usr/sbin/nologinи изменил часть /usr/sbin/nologinна/bin/bash

Затем я подделал информацию об оперативной памяти, используя примеры отсюда Восстановление после подделки /proc/meminfo

unshare -m bash    #unshares mount spaces, for specific program "bash" only (and for whatever you want to launch from it)
mount --bind ~./meminfo /proc/meminfo      #substitutes real meminfo data with fake one

и подтвердил free, что это работает

          total        used        free         shared     buff/cache  available
Mem:     2321456       21456     2300000           0           0     2300000
Swap:     5000000     1000000     4000000

Затем переключился на пользователя su - boincи просто запустил программу с

boinc --check_all_logins --redirectio --dir /var/lib/boinc-client

BOINC Manager может быть запущен как обычно

Полный успех, задачи, которые ранее отказывались запускаться, начали загружаться и запускались без осложнений

9
19.03.2021, 02:27

Создайте подделку meminfoи установите ее поверх оригинала/proc/meminfo:

$ mkdir fake-meminfo && cd fake-meminfo
$ cp /proc/meminfo.
$ chmod +w meminfo
$ sed -Ei 's,^MemTotal:        [0-9]+ kB,MemTotal:        8839012 kB,' meminfo   # replace 8839012 with an amount of RAM you want to pretend you have
$ free -m  # check how much RAM you have now
              total        used        free      shared  buff/cache   available
Mem:           7655        1586        3770         200        2298        5373
$ sudo mount --bind meminfo /proc/meminfo                                 
$ free -m  # check how much RAM you pretend to have after replacing /proc/meminfo
              total        used        free      shared  buff/cache   available
Mem:           8631        2531        3800         201        2299        5403
$ sudo umount /proc/meminfo # restore an original /proc/meminfo
$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7655        1549        3806         200        2299        5410

Вы также можете запустить приведенные выше команды в пространстве имен монтирования, изолированном от остальная часть системы. Ссылки :Восстановление после подделки /proc/meminfo

54
19.03.2021, 02:27

Теги

Похожие вопросы