Apache sudo (запуск программ от рута)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

deber
Сообщения: 4

Apache sudo

Сообщение deber »

Добрый день!

Есть перловый cgi скрипт.
В нем у меня запускаются команды на выполнение.

Есть такой sudoers:

Код: Выделить всё

root    ALL=(ALL) ALL
apache  ALL=NOPASSWD: /bin/mv; /bin/echo; /bin/touch


Объясните мне плз. почему работает команда

Код: Выделить всё

sudo /bin/touch test.txt


А эта команда не работает:

Код: Выделить всё

sudo /bin/echo '123' >> test.txt



Код: Выделить всё

#httpd -V
Server version: Apache/2.2.2
Server built:   Aug 11 2006 18:18:14
Server's Module Magic Number: 20051115:2
Server loaded:  APR 1.2.2, APR-Util 1.2.7
Compiled using: APR 1.2.2, APR-Util 1.2.7
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"


юзер апач и группа существуют. Все остальное работает без проблем.

Если надо показать еще какие-то настройки, то скажите - покажу.

ЗЫ Федора 6, Apache/2.2.2
Спасибо сказали:
Аватара пользователя
mczim
Сообщения: 665
ОС: Debian/Ubuntu

Re: Apache sudo

Сообщение mczim »

вроде как должно быть так в /etc/sudoers

Код: Выделить всё

apache ALL=(ALL) NOPASSWD:ALL


вот это вы из под пользователя апач делаете?

Код: Выделить всё

sudo /bin/echo '123' >> test.txt
Я странный...
Спасибо сказали:
deber
Сообщения: 4

Re: Apache sudo

Сообщение deber »

mczim писал(а):
27.09.2007 18:06
вроде как должно быть так в /etc/sudoers

Код: Выделить всё

apache ALL=(ALL) NOPASSWD:ALL

Не помогло.
Да и мой вариант на другом серваке работает.

вот это вы из под пользователя апач делаете?

Код: Выделить всё

sudo /bin/echo '123' >> test.txt


У меня есть страничка с кнопками. При нажатии разных кнопок выполняются различные команды.
Одна из них echo 'blablabla' >> file.txt

Кстати на страничке в это время отображается:
Bad file descriptor
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: Apache sudo

Сообщение Sleeping Daemon »

deber писал(а):
28.09.2007 10:16
mczim писал(а):
27.09.2007 18:06
вроде как должно быть так в /etc/sudoers

Код: Выделить всё

apache ALL=(ALL) NOPASSWD:ALL

Не помогло.
Да и мой вариант на другом серваке работает.

вот это вы из под пользователя апач делаете?

Код: Выделить всё

sudo /bin/echo '123' >> test.txt


У меня есть страничка с кнопками. При нажатии разных кнопок выполняются различные команды.
Одна из них echo 'blablabla' >> file.txt

Кстати на страничке в это время отображается:
Bad file descriptor

Может всё таки sudo /bin/echo 'blablabla' >> /path/file.txt ?
Спасибо сказали:
Аватара пользователя
megabrain
Сообщения: 10
ОС: FC8

Re: Apache sudo

Сообщение megabrain »

прикрути к апачу suExeс и выполняй спокойно команды от имени нужного юзера..

то что ты сделал это дыра.. особенно mv.. и не надо говорить что "я только локально" и тдтп
Спасибо сказали:
Аватара пользователя
wi:
Сообщения: 535
Статус: wi love linux
ОС: Open SuSE 11.0

Re: Apache sudo

Сообщение wi: »

Вот для примера, плюс там снизу функции по теме тоже есть.
http://www.php.net/manual/ru/function.exec.php
%s
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: Apache sudo

Сообщение gcc »

а где его найти suexec ?

и как массовые вируальный хосты загуртить apache 2.2.4
я не понял как mod_vhost_alias опеределит кто кто пользователь!!!!!? тоесть когда пишешь статически, то пишешь пользоватля и групу, а в mod_vhost_alias не надо писать ничего?
как правильно сделать нигде не нашел!!
скажите пожалуйста!!
SuexecUserGroup - не работает, опции не сущетсвует пишет!

Код: Выделить всё

# apachectl -V
Server version: Apache/2.2.4 (FreeBSD)
Server built:   Jul 27 2007 21:20:23
Server's Module Magic Number: 20051115:4
Server loaded:  APR 1.2.8, APR-Util 1.2.8
Compiled using: APR 1.2.8, APR-Util 1.2.8
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr/local"
 -D SUEXEC_BIN="/usr/local/bin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="/var/run/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="/var/log/httpd-error.log"
 -D AP_TYPES_CONFIG_FILE="etc/apache22/mime.types"
 -D SERVER_CONFIG_FILE="etc/apache22/httpd.conf"
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: Apache sudo

Сообщение gcc »

Код: Выделить всё

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
VirtualScriptAlias /never/found/%0/cgi-bin/


UseCanonicalName Off
VirtualDocumentRoot /usr/local/apache/vhosts/%0



как сделать чтобы видно было кто запускал скрипты?

в статической конфигурации если добавить

Код: Выделить всё

<VirtualHost *:80>
    ScriptAlias /cgi-bin/ ${hosting_preffix}/${user_name}/cgi-bin/
    ServerAdmin support@${domain_name}
    User ${user_name}
    Group ${user_name}
    DocumentRoot ${hosting_preffix}/${user_name}/www
    ServerName ${domain_name}
    ServerAlias www.${domain_name}
    # Директория пользователя
    <Directory "${hosting_preffix}/${user_name}/www">
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
      Order deny,allow
      Allow from all
    </Directory>
    DirectoryIndex index.php index.html index.htm index.shtml index.php3
    AddType application/x-httpd-php .php .php3
    Action  application/x-httpd-php /cgi-bin/php-cgi
    ErrorLog ${hosting_preffix}/${user_name}/log/error.log
    CustomLog ${hosting_preffix}/${user_name}/log/access.log common
</VirtualHost>


то пишет, что опции User нету!
а как правильно это сделать скажите пожалуйста, чтобы пользователи не видели каталоги друг друга или ндо всё перенести на /home ?
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: Apache sudo

Сообщение gcc »

СОБРАЛ!!!
/etc/make.conf

Код: Выделить всё

# apache22

# SSL - кому надо - включат - мне на этой машине не нужен
WITH_SSL=            YES
# Включение поддержки suExec
WITH_SUEXEC=            YES
# Корневая директория suExec
SUEXEC_DOCROOT=         /usr/home
# Cубдиректория пользователя
SUEXEC_USERDIR=        "/usr/home/*/cgi-bin"
# Файл лога suExec
SUEXEC_LOGFILE=         /var/log/httpd/suexec.log
APACHE_SUEXEC_LOG=/usr/local/var/log/httpd-suexec.log
APACHE_HARD_SERVER_LIMIT=yes
WITH_APACHE_PERF_TUNING=yes
APACHE_HARD_SERVER_LIMIT=1024
#PATCH_SUEXEC=YES



виртуальные хосты работают, если добавить в один:

Код: Выделить всё

   User myd
   Group myd

Код: Выделить всё

 pw useradd myd -c -L webuser -s /bin/csh -d /home/myd

Код: Выделить всё

 pw groupmod myd -m www


при запуске пишет вот это и не стартует

Код: Выделить всё

User cannot occur within <VirtualHost> section


что еще надо?



UPD
блин, когда фря обновляла она не обновила конфиги!!

Код: Выделить всё

LoadModule suexec_module modules/mod_suexec.so

+ еще вместо User вот так надо

Код: Выделить всё

SuexecUserGroup mydm mydm
Спасибо сказали: