GNU/Linux >> Linux の 問題 >  >> Linux

Linux で特定のプログラムにインストールされている RAM の量を偽造するにはどうすればよいですか?

偽の 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 の偽造から回復する


少し考えた後、私はこれを行いました:

nano /proc/meminfo で開始

MemTotal を変更しました 、 MemFreeMemAvailableSwapTotalSwapFree 必要な値に変更し、~./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 の一部

次に、ここの例を使用して RAM 情報を偽造しました /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 を起動できます

完全な成功、以前は実行を拒否したタスクがダウンロードを開始し、問題なく実行されました


Linux
  1. Unix / Linux でプロセスのパスを取得するにはどうすればよいですか

  2. /proc/[pid]/pagemaps および /proc/[pid]/maps | Linux

  3. シェル スクリプトによる解析に適した Linux ボックスの合計物理メモリ (RAM) を調べるにはどうすればよいですか?

  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Linux ramdisk (/dev/ram0 - /dev/ram15) の量とサイズを変更するにはどうすればよいですか?

  3. Linux ユーザーにとって Magic SysRq キーはどのように危険なのですか?

  1. Linux – / proc/mntを/proc/ mountsにリンクしますか?

  2. Linuxで特定のピンの割り込み/ GPIO番号を知る方法

  3. Linux で特定のプログラムのプロセス ID を設定する方法