Почему бы не использовать 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
Немного подумав, я сделал это:
Начато с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 может быть запущен как обычно
Полный успех, задачи, которые ранее отказывались запускаться, начали загружаться и запускались без осложнений
Создайте подделку 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