Назад | Перейти на главную страницу

sudo: apache перезапускает службу в CentOS

Мне нужно, чтобы мое веб-приложение перезапустило службу dansguardian (в CentOS), поэтому ему нужно запустить '/ sbin / service dansguardian restart'. У меня есть сценарий оболочки в / home / topological с именем apacherestart.sh, который выполняет следующие действия:

#!/bin/sh
id=`id`
/sbin/service dansguardian restart
r=$?
return $r

Это работает нормально (оператор журнала в сценарии для тестирования вывода в syslog, поэтому я знаю, что он работает) Чтобы запустить его, я помещаю это в / etc / sudoers:

User_Alias      APACHE=www
# Cmnd alias specification
Cmnd_Alias      HTTPRESTART=/home/topological/apacherestart.sh,/sbin/e-smith/db,/etc/rc7.d/S91dansguardian
# Defaults specification
# User privilege specification
root    ALL=(ALL) ALL
APACHE  ALL=(ALL) NOPASSWD: HTTPRESTART

Все идет нормально. Но сервис не перезагружается. Чтобы проверить это, я создал пользователя david и подставил uid / gid в / etc / passwd, чтобы он совпадал с www:

www:x:102:102:e-smith web server:/home/e-smith:/bin/false
david:x:102:102:David:/home/e-smith/files/users/david:/bin/bash

затем вошел в систему как Дэвид и попытался запустить apacherestart.sh. У меня возникает следующая проблема:

/etc/rc7.d/S91dansguardian: line 51: /sbin/e-smith/db: Permission denied

хотя S91dansguardian и db есть в списке команд sudoers.

Любые идеи?

На основании ответа Джо Х.

chmod a+rx /sbin/e-smith
chmod o+x /sbin/e-smith/db

Что такое скрипт e-smith? Кроме того, почему вы запускаете все это из Cmnd_Alias ​​вместо того, чтобы объединять его в скрипте apacherestart.sh?

Для меня это не похоже на сообщение об ошибке sudo - это похоже на стандартное сообщение о разрешениях.

Какие разрешения на /sbin/e-smith/db, и какова его строка shebang (и разрешения этой программы), если это сценарий?

Кроме того, как вы вызываете сценарий? Тот факт, что он упоминается в списке sudoers, не означает, что он будет волшебным образом особенным - вам действительно нужно вызвать его через sudo.