gifts2017

Выполнение команд операционной системы на сервере баз данных ms sql без доступа к серверу

Опубликовал Сергей (avasl) в раздел Администрирование - Системное

Полезный набор команд для некоторых рабочих ситуаций

В работе возможна ситуация, когда нет доступа к административному терминалу сервера субд и нет физического доступа к нему. Но необходимо выполнить определенные комнды на сервере. Случай из практики - sql сервер и сервер 1С установлены на одной машине и необходимо перезапустить службу сервера 1С. Или необходимо создать определенное задание в таск-менеджере операционной системы и т.д.. В ряде случаев (зависит от настроек сервера) при наличии логина к sql server (с 2005) с ролью sysadmin, например "sa", можно получить доступ к командной строке системы и выполнять консольные команды с высокими привилегиями. Ниже описаны действия:

На рабочей станции запускается managment studio и выполняется запрос

EXEC sp_configure 'show advanced options', 1
GO


RECONFIGURE
GO


EXEC sp_configure 'xp_cmdshell', 1
GO


RECONFIGURE
GO

Подробнее http://technet.microsoft.com/ru-ru/library/ms190693.aspx http://technet.microsoft.com/ru-ru/library/ms175046.aspx

Нам важно, что "Процесс Windows, порожденный процедурой xp_cmdshell, имеет те же права защиты, что и учетная запись службы SQL Server." Теперь, в большинстве случаев, появится возможность выполнять команды системы сервера с высокими привилегиями. По соображениям безопасности после необходимо отключать данный параметр установкой значения 0.

Примеры запросов с полезными командами:

* копирование файла между каталогами сервера 

EXEC xp_cmdshell 'copy "C:\test\logcfg.xml" "C:\Program Files\1cv81\bin\conf\logcfg.xml" ';

* удаление файла на сервере

EXEC xp_cmdshell 'del "C:\Program Files\1cv81\server\srvribrg.lst" ';

* удаление каталога "reg_1541" вместе с его содержимым

EXEC xp_cmdshell 'rmdir /s /q "C:\Program Files\1cv81\server\reg_1541"';

* просмотр запущенных служб

EXEC xp_cmdshell 'net start';

* просмотр процессов

EXEC xp_cmdshell 'tasklist';

Если сервер 1С установлен на том же сервере:

* остановка службы сервера 1С

EXEC xp_cmdshell 'net stop "1C:Enterprise 8.1 Server (x86-64) Agent"';

* запуск службы сервера 1С

EXEC xp_cmdshell 'net start "1C:Enterprise 8.1 Server (x86-64) Agent"';

* остановка через ragent (запуск -start)

EXEC xp_cmdshell '"C:\Program Files\1cv81\bin\ragent.exe" -stop';

 

 

 

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Рудаков (fishca) 03.10.13 12:29
2. Сергей (avasl) 03.10.13 13:58
3. Евгений Пономаренко (Evgen.Ponomarenko) 03.10.13 16:43
(1) fishca, (2) avasl,

Ну чего вы так сразу? Между прочим - это ж просто дырища в системе безопасности! Я в свое время надругался над серверами соседнего филиала, получаешь доступ к операционной системе и ты король ;)
4. Сергей Рудаков (fishca) 04.10.13 14:33
Между прочим - это ж просто дырища в системе безопасности!

(3) это известно любому грамотному администратору SQL сервер.
(2) КЭП, если ты не понял, как раз ты ;)
5. Сергей (avasl) 04.10.13 14:51
6. Евгений Пономаренко (Evgen.Ponomarenko) 04.10.13 16:40
(4) fishca,
пардон, если вы имели в виду MS SQL сервер, то я говорил о DB Oracle.
К тому же этот пост полезен программистам... смотришь научат уму разуму не пуганных админов MS SQL.

Хотя часто бывает, что роль админа приходится выполнять и программисту. Так, что не стоит умничать сгоряча.
7. Станислав Копылов (ksuman) 11.10.13 05:04
Тоже мне открытие: эта фича была известна ещё со времен MS SQL 7.0
Защита стандартна: доступ к базам 1С только для отдельной учетной записи с типом db_owner, запрет доступа к другим базам. Изначально при создании базы этот пользователь имеют только привилегии "Database Creator". Сервер 1С под выделенной учетной записью, например: "V8ServerUser@yourdomain", не имеющей никаких прав в домене.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа