Я понимаю, что это почти идентично этот вопрос но большая разница в том, что методы, описанные в статье MSKB, НЕ РАБОТАЮТ для установленных служб Tomcat. Они работают для простых служб Windows, но не для служб Tomcat, которые нам нужно контролировать.
Есть еще идеи?
Изменить (подробности): если у меня есть 100 контейнерных служб Tomcat, должен ли я явно предоставлять это разрешение группе для каждой службы? Есть ли способ настроить группу DOMAIN, чтобы иметь разрешение на остановку / запуск 100 различных служб Tomcat на 15 машинах?
Изменить (дополнительная информация): мы используем Ant sshexec (jsch) и получаем ошибку Access Denied errorlevel 5 при вызове net stop service_name.
Я не уверен, что вы пытались сделать раньше, но вот что я только что сделал и добился успеха:
1) Загрузил установщик Tomcat 5.5.27 Windows Service и установил его.
2) Сбросил дескриптор безопасности службы TomCat5 с помощью "sc sdshow tomcat5", который показал мне:
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
Это довольно распространенный дескриптор безопасности для сервисов. Я видел это дословно на некоторых сервисах Microsoft. СИСТЕМА и встроенные администраторы имеют «полный контроль», «опытные пользователи» могут останавливать, запускать и приостанавливать службу, а «прошедшие проверку пользователи» могут запрашивать свойства службы (здесь я немного замалчиваю).
3) Я создал ограниченного пользователя по имени «bob» на своем компьютере, открыл командную строку «RUNAS» от имени него и получил его SID от «WHOAMI / ALL» (команда, которая используется в Windows Server 2003, но не в XP .. Не знаю про Vista и Windows 7 из головы). Я подтвердил, что Боб не может остановить / запустить службу Tomcat (используя «NET STOP tomcat5»). Я получил ту же ошибку, о которой вы сообщаете в своем сообщении.
4) В моей обычной командной строке администратора я выполнил следующее:
sc sdset tomcat5 D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;RPWPDT;;;S-1-5-21-1409082233-484763869-854245398-1009)
Эта строка SDDL дает Бобу SID (S-1-5-21-1409082233-484763869-854245398-1009) права на остановку, запуск и приостановку службы (RP, WP и DT соответственно).
5) Я вернулся к командной строке «Боб» и убедился, что теперь могу останавливать и запускать службу с помощью NET STOP и NET START.
Я бы рекомендовал создать группу, чтобы делегировать это право, поместить пользователя в эту группу, получить SID группы (с помощью WHOAMI или любого другого инструмента) и таким образом изменить дескриптор безопасности.
Я думаю, что использование групповой политики для изменения дескриптора безопасности будет работать нормально. Я видел случаи, когда некоторым службам не нравилось разрешение по умолчанию, которое модификация на основе групповой политики предоставляет службе (посмотрите эту публикацию о службе поиска Windows, если хотите понять, о чем я говорю: http://peeved.org/blog/2007/12/07), но по моему опыту это было необычно.
Если вам нужна дополнительная информация о дескрипторах безопасности для служб, взгляните на http://msmvps.com/blogs/alunj/archive/2006/02/13/83472.aspx и http://support.microsoft.com/kb/914392.
Вы можете настроить задание планировщика Windows для запуска команды. Задание планировщика может быть настроено для выполнения команды под учетными данными другого пользователя. Затем вы можете настроить безопасность задания, чтобы его мог выполнять только определенный набор пользователей.
Вам потребуются права администратора для создания запланированной задачи, но затем вы можете предоставить другим людям права на ее запуск. Несмотря на то, что это запланированная задача, вы можете настроить ее так, чтобы она выполнялась только по запросу.
Например, предположим, что вы создали задание (откройте Панель управления> Запланированные задачи, затем щелкните правой кнопкой мыши и выберите «Создать»> «Запланированная задача») под названием: StartTomcat.
Переходим во вкладку «Задача».
Задайте значения «Выполнить» и «Начать в» в командной строке, запускающей Tomcat. Также установите в строке «Запуск от имени» пользователя, которому разрешено запускать и останавливать Tomcat, и нажмите кнопку «Установить пароль ...», чтобы указать пароль пользователя. В заключение, удалять установите флажок в поле Включено, поскольку вы хотите запускать задание только по запросу.
Затем перейдите во вкладку «Безопасность».
Добавьте людей, которым вы хотите разрешить запускать задачу, и предоставьте им только Разрешения на «Чтение и выполнение» для задачи.
Наконец, создайте командный файл для выполнения задачи. Пакетный файл будет содержать строку:
schtasks / run / tn StartTomcat
Поместите пакетный файл в место, доступное для пользователей, которым необходимо его запустить. Можно даже поместить командный файл на отдельный компьютер, но вам потребуются некоторые дополнительные параметры в строке schtasks. Вы можете найти эти параметры в справке Windows.
Вам нужно выяснить, что делает эти службы Tomcat такими особенными, что обычные методы управления ими в Windows не работают. Как они не работают? Это просто проблема с отказом в доступе? Если так, ProcMon было бы очень полезно для выяснения, где именно должен быть предоставлен доступ.