偽の 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
を変更しました 、 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
の一部
次に、ここの例を使用して 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 を起動できます
完全な成功、以前は実行を拒否したタスクがダウンロードを開始し、問題なく実行されました