Я использую ядро BIGMEM на Debian, сжимают. Я использовал non-BIGMEM ядро прежде также. Я не знаю ни о каких проблемах или глюках, и никакие изменения в системе не необходимы при переключении между BIGMEM и non-BIGMEM ядром. Конечно, только необходимо использовать ядро BIGMEM при выполнении ядра на 32 бита. Если Вы имеете какие-либо определенные проблемы, упоминаете их в вопросе.
мой ответ только связан со строкой
sudo jupiter=(ALL)NOPASSWD:/bin/<script>
С этой строкой Вы позволяете пользователю sudo
работать /bin/<script>
на хосте juptier
как любой пользователь без аутентификации. Я не думаю, что Вы хотите это.
Если я понял правильно, что Вы хотите пользователя www-data
выполниться /bin/<script>
как корень. В этом случае соответствующая строка похожа
www-data jupiter=(root) NOPASSWD:/bin/<script>
Теперь можно выполниться /bin/<script>
как www-data
с root
полномочия путем вызова
www-data:~ $ sudo /bin/<script>
или через shell_exec("sudo /bin/<script>")
в Вашем сценарии PHP (я надеюсь, что Вы заботились о проблемах безопасности).
Для получения дальнейшей информации посмотрите на man sudoers
или интерактивная версия sudoers.man. Для быстрого понимания я рекомендую смотреть на EXAMPLES
раздел.
Есть несколько способов ...
Самым простым, вероятно, является использование sudo, и это уже было описано.
Краткое описание параметра sudo:
Однако, если вы это сделаете, позвольте мне указать на опасность всего этого. Любой, кто может получить доступ к вашей странице, может делать все, что он должен делать - поэтому с помощью userdel они могут удалять пользователей (и, возможно, все их файлы), и в зависимости от того, как написан код, они могут обмануть его, позволив им запускать любую произвольную команду от имени root.
(Теперь при правильной настройке sudo может ограничивать их действия, как и правильно написанная программа (хотя написание безопасных setuid, CGI и php (которые используют shell_exec (), как и вы) может быть сложной задачей), но userdel может быть довольно разрушительным само по себе.)
Итак ...если вы это сделаете, по крайней мере убедитесь, что sudo (если вы используете sudo) настроен для запуска только тех команд, которые абсолютно необходимо запустить, и убедитесь, что ваша страница недоступна для всех - заблокируйте ее за пароль в Apache, например, и будьте особенно осторожны, если он находится непосредственно в Интернете, а не за корпоративным брандмауэром (но даже в этом случае - не доверяйте брандмауэру, чтобы он был безопасным). Также убедитесь, что другие люди, которым не доверяют, могут Не добавляйте программы php или CGI на этот хост, потому что они также смогут использовать эту строку в / etc / sudoers.
Поскольку вы используете php shell_exec (), будьте очень осторожны с аргументами, которые ваш код передает этой команде. Если вы позволите пользователю помещать туда все, что он хочет, он может заставить это делать все, что угодно.
Предположим, ваша команда - «userdel $ user» и $ user пришла непосредственно от пользователя этой веб-страницы. Если user = "foo; reboot". Если бы это было запущено от имени root ... ваш компьютер перезагрузился бы. Но даже если он не запускается от имени root, он может запускать код от имени пользователя apache, который может попытаться проникнуть в машину.
Тем не менее, как правильно дезинфицировать вводимые данные - это более длинная тема, чем на самом деле позволяет этот простой ответ - я не пытаюсь охватить эту тему целиком, просто коснусь ее.
sudoers
файл. Однако я теперь получаю сообщениеsudo: no tty present and no askpass program specified
. BTW: Я забыл % в своем первом сообщении. – skiddo 11.09.2012, 14:45requiretty
установлен в Вашем/etc/sudoers
? Для получения дополнительной информации посмотритеman sudoers
также. – user1146332 11.09.2012, 14:55requiretty
не установлен, но был 'символ в моемetc/sudoers
, потому что я забыл редактировать его сvisudo
. Это работает теперь.Спасибо. – skiddo 11.09.2012, 16:14