required
является отраженным свойством (например, id
, name
, type
и т. д.), поэтому:
element.required = true;
... где element
является фактическим элементом input
DOM, например:
document.getElementById("edName").required = true;
(только для полноты.)
Re:
Тогда значение атрибута не является пустой строкой или каноническим именем атрибута:
blockquote>edName.attributes.required = [object Attr]
Это потому, что
required
в этом коде является объектом атрибута , а не строка;attributes
являетсяNamedNodeMap
, значения которого являютсяAttr
объектами . Чтобы получить значение одного из них, вы можете посмотреть его свойствоvalue
. Но для атрибута boolean значение не имеет значения;Так что если
required
не были отражены, вы должны установить его, добавив атрибут:element.setAttribute("required", "");
... который является эквивалентом
element.required = true
. Вы очистите его, полностью удалив его:element.removeAttribute("required");
... что эквивалентно
element.required = false
.Но нам не нужно делать это с помощью
required
, поскольку это отражено.
Я думаю, что вы можете предоставить конкретный доступ к пользователю и команде с помощью visudo
примерно так:
nobody ALL = NOPASSWD: /path/to/osascript myscript.scpt
и с помощью php:
@exec("sudo /path/to/osascript myscript.scpt ");
, предполагая nobody
у пользователя работает apache.
php: создается консоль bash и выполняется 1-й скрипт, который вызывает sudo во второй, см. ниже:
$dev = $_GET['device'];
$cmd = '/bin/bash /home/www/start.bash '.$dev;
echo $cmd;
shell_exec($cmd);
#!/bin/bash
/usr/bin/sudo /home/www/myMount.bash $1
#!/bin/bash
function error_exit
{
echo "Wrong parameter" 1>&2
exit 1
}
..........
oc, вы хотите запустить скрипт с корневого уровня без привилегий root, чтобы создать и изменить файл / etc /sudoers.d/mount файл:
www-data ALL=(ALL:ALL) NOPASSWD:/home/www/myMount.bash
не забудьте chmod:
sudo chmod 0440 /etc/sudoers.d/mount
Запустите команду sudo visudo
, затем установите -%sudo ALL=(ALL:ALL)
на %sudo ALL=(ALL:ALL) NOPASSWD: ALL
, она будет работать.
Как запустить скрипт PHP с sudo
и опустить его в скрипт? Это также может заботиться о разрешениях для дочерних процессов.
sudo
будет означать запуск Apache с sudo
- или, скорее, просто предоставление возможностей Apache root. Это звучит опасно, но опять же, позволяя Apache вызывать sudo
без пароля, точно i> как опасный. На самом деле, вы, вероятно, не должны делать все, что вы делаете, как вы это делаете. Можете ли вы просто дать Apache надлежащее разрешение на выполнение действия без необходимости доступа к корневому каталогу? Это должно быть определенно возможно, если Apache каким-либо образом не изменит систему, что она не должна делать i>.
– Matchu
4 July 2010 в 02:12
%apache ALL=(ALL) NOPASSWD: ALL
– pop850
4 July 2010 в 03:42
Недавно я опубликовал проект, который позволяет PHP получать и взаимодействовать с реальной оболочкой Bash. Получите его здесь: https://github.com/merlinthemagic/MTS У оболочки есть pty (псевдотерминальное устройство, такое же, как и в ssh-сессии), и вы можете получить оболочку при необходимости, root. Не уверен, что вам нужен root для выполнения вашего скрипта, но при условии, что вы упомянули sudo, это вероятно.
После загрузки вы просто используете следующий код:
$shell = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1 = $shell->exeCmd('/path/to/osascript myscript.scpt');
Если кто-то все еще требует этого. Вы можете написать текстовый файл, скажем ~ ./. Sudopass / sudopass.secret, с корневым паролем. Скажем, пароль root - «12345». Вы создаете ~ ./. Sudopass / sudopass.secret только с 12345 в качестве содержимого:
12345
И затем вы делаете следующее:
exec('sudo -u root -S {{ your command }} < ~/.sudopass/sudopass.secret');
Не забудьте использовать это только в контролируемых средах.
Похоже, вам нужно настроить пароль sudo. Попробуйте:
%admin ALL=(ALL) NOPASSWD: ALL
Также закомментируйте следующую строку (в / etc / sudoers через visudo), если она есть:
Defaults requiretty