Однако[1130785] можно выжить без файловой системы, которая существует на любом постоянном носителе данных. Ваш образ [1130786]initramfs[1130787] может быть скомпилирован в самом ядре (или же помещен куда-нибудь, где к нему может получить доступ системный загрузчик). Технически образ, который записывается на носитель, является архивом, а не файловой системой; он становится таким только после загрузки. Если вы поместите все нужные вам двоичные файлы внутрь, то нет необходимости помещать их в файловую систему на носитель. Таким образом, вы можете гарантировать, что все необходимые файловые системы, которые система должна запускать, существуют только в памяти.
Конечно, недостатком является то, что поскольку все, что системе нужно, должно существовать в памяти, вы можете обнаружить, что у вас просто не хватает на то, что вы хотите сделать. Также вам будет трудно записать любые данные, которые вы хотите сохранить после перезагрузки.[1130376].
Проблема с этим, независимо от того, как вы нарезаете его, если безвисковой пользователь написать в файл сценария, Вы оставляете дверь открытой, чтобы позволить этому пользователю делать что-либо, поскольку в этом случае S / он может изменить сценарий. Тем не менее, нет необходимости делать это, так как он мог владеть корнем и установить 0700, если хотите.
, а не настройки SUID и Privilege Sudo для Apache
Вам не нужно настроить SUID на что-нибудь, и вы можете использовать Sudo, чтобы Apache можно выполнить только этот скрипт. Если Apache работает как пользователь httpd
, добавить в / etc / sudoers
:
httpd ALL = NOPASSWD: /foo/bar/scripts/foobar.sh
Замените фактический путь для сценария там. Затем вызов должен использовать sudo /foo/bar/scripts/foobar.sh
. Но это единственное, что пользователь httpd
будет разрешено это сделать.
См. Человек 5 Sudoers
для более подробной информации.
Единственный способ запуска сценариев, которые потребуют корневых привилегий через Apache, - предоставить Apache необходимый набор привилегий для внесения необходимых изменений.
Другой вариант (и это грязный обходной путь) состоит в том, чтобы выполнить запись Apache в файл и запустить демон на сервере, чтобы проверить те файлы, которые Apache записал, и предпринять действия на основе того, что было записано в файл Apache.
-121--146057- Если используется xbindkeys
и установлена утилита xdotool
, можно добавить следующие строки в ~/.xbindkeysrc
для включения win + left
и win + right
для перемещения текущего активного окна влево/вправо
"xdotool windowsize $(xdotool getwindowfocus) 50% 100% && xdotool windowmove $(xdotool getwindowfocus) 0 y"
Mod2+Mod4 + Left
"xdotool windowsize $(xdotool getwindowfocus) 50% 100% && xdotool windowmove $(xdotool getwindowfocus) 9999 y"
Mod2+Mod4 + Right
-121--19740- Если вы не хотите запускать Apache с корневыми правами (и не должны), то вы можете написать небольшую программу-обертку для сценария, который дает разрешения SUID ( chmod 4755
) и имеет root
в качестве владельца. Эта программа-оболочка может вызвать сценарий, который будет выполняться с соответствующими разрешениями. Никакие другие сценарии, таким образом, не будут «повышены», но, конечно, нужно позаботиться о том, чтобы содержимое сценария не могло быть изменено в любом случае.
Единственный способ запуска скриптов, требующих привилегий root через Apache, это дать Apache требуемый набор привилегий для внесения необходимых изменений.
Другой вариант (и это грязный обходной путь) - это запись Apache в файл и запуск демона на сервере, чтобы проверить те файлы, которые были записаны Apache, и предпринять действия, основанные на том, что было записано в файл Apache.