Как я могу выполнить сценарии оболочки Linux, которому нужно полномочие пользователя root от веб-страницы

[1130371] Я написал [1130782] ответ на связанный с этим вопрос[1130783], в котором подробно описывается, как концепция файла является ядром для работы Unix, и поскольку вы не можете иметь файл без какой-либо файловой системы, это означает, что он вам определенно нужен.

Однако[1130785] можно выжить без файловой системы, которая существует на любом постоянном носителе данных. Ваш образ [1130786]initramfs[1130787] может быть скомпилирован в самом ядре (или же помещен куда-нибудь, где к нему может получить доступ системный загрузчик). Технически образ, который записывается на носитель, является архивом, а не файловой системой; он становится таким только после загрузки. Если вы поместите все нужные вам двоичные файлы внутрь, то нет необходимости помещать их в файловую систему на носитель. Таким образом, вы можете гарантировать, что все необходимые файловые системы, которые система должна запускать, существуют только в памяти.

Конечно, недостатком является то, что поскольку все, что системе нужно, должно существовать в памяти, вы можете обнаружить, что у вас просто не хватает на то, что вы хотите сделать. Также вам будет трудно записать любые данные, которые вы хотите сохранить после перезагрузки.[1130376].

2
14.08.2016, 03:47
3 ответа

Проблема с этим, независимо от того, как вы нарезаете его, если безвисковой пользователь написать в файл сценария, Вы оставляете дверь открытой, чтобы позволить этому пользователю делать что-либо, поскольку в этом случае 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 для более подробной информации.

1
27.01.2020, 22:21

Единственный способ запуска сценариев, которые потребуют корневых привилегий через 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 в качестве владельца. Эта программа-оболочка может вызвать сценарий, который будет выполняться с соответствующими разрешениями. Никакие другие сценарии, таким образом, не будут «повышены», но, конечно, нужно позаботиться о том, чтобы содержимое сценария не могло быть изменено в любом случае.

0
27.01.2020, 22:21

Единственный способ запуска скриптов, требующих привилегий root через Apache, это дать Apache требуемый набор привилегий для внесения необходимых изменений.

Другой вариант (и это грязный обходной путь) - это запись Apache в файл и запуск демона на сервере, чтобы проверить те файлы, которые были записаны Apache, и предпринять действия, основанные на том, что было записано в файл Apache.

0
27.01.2020, 22:21

Теги

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