Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как выполнить xp_cmdshell?
|
|||
|---|---|---|---|
|
#18+
Необходимо выполнить процедуру xp_cmdshell через пользовательскую процедуру. Явных прав на исполнение xp_cmdshell у залогинившегося пользователя нет, но пользовательская процедура создана sysadmin-ом. В ответ получаю сообщение "EXECUTE permission denied on object 'xp_cmdshell', database 'master', owner 'dbo'." Что не так? (SQL Server 2000) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2001, 09:31 |
|
||
|
Как выполнить xp_cmdshell?
|
|||
|---|---|---|---|
|
#18+
Я тоже сталкивался с такой проблемой, в конечном итоге пришлось дать права на выполнение данной процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2001, 09:50 |
|
||
|
Как выполнить xp_cmdshell?
|
|||
|---|---|---|---|
|
#18+
"When xp_cmdshell is invoked by a user who is a member of the sysadmin fixed server role, xp_cmdshell will be executed under the security context in which the SQL Server service is running. When the user is not a member of the sysadmin group, xp_cmdshell will impersonate the SQL Server Agent proxy account, which is specified using xp_sqlagent_proxy_account. If the proxy account is not available, xp_cmdshell will fail . This is true only for Microsoft® Windows NT® 4.0 and Windows 2000. On Windows 9.x, there is no impersonation and xp_cmdshell is always executed under the security context of the Windows 9.x user who started SQL Server." Т.е. выбираете учетную запись с правами которой будет стартовать xp_cmdshell для пользователей не sysadmin-ов и делаете так exec master..xp_sqlagent_proxy_account N'SET', N'agent_domain_name', N'agent_username', N'agent_password' NB! agent_password - case sensitive exec master..xp_sqlagent_proxy_account N'GET' - для проверки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2001, 10:17 |
|
||
|
Как выполнить xp_cmdshell?
|
|||
|---|---|---|---|
|
#18+
А как решить эту же проблему если стоит MS SQL Server 7.0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2001, 13:38 |
|
||
|
Как выполнить xp_cmdshell?
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, друзья. У меня уже получилось. Оказывается, процедура-обертка, вызывающая xp_cmdshell, должна находиться в той же базе, что и xp_cmdshell, то есть в базе master. Только в этом случае работает правило "ownership chain", дающее возможность обращаться к объектам, использующимся в процедуре, с правами владельца этой процедуры. To Glory: Спасибо,я знаю об этой возможности, но она у меня почему-то не работает. Вернее, раньше работала, но вследствие бесконтрольного изменения настроек(это в порядке самокритики) теперь уже и этот вариант не проходит, хотя вроде и прокси-аккаунту даны права сисадмина(и в NT и на SQL Server). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2001, 06:49 |
|
||
|
Как выполнить xp_cmdshell?
|
|||
|---|---|---|---|
|
#18+
"Оказывается, процедура-обертка, вызывающая xp_cmdshell, должна находиться в той же базе, что и xp_cmdshell, то есть в базе master." Скорее всего владелец "процедуры-обертки" должен быть пользователем и базы master. По крайней мере у меня для владельца dbo (для master и userdb это один и тот же login) все прекрасно работает и в том случае, если "процедура-обертка" и xp_cmdshell находятся в разных базах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2001, 06:58 |
|
||
|
Как выполнить xp_cmdshell?
|
|||
|---|---|---|---|
|
#18+
У вас, наверное, dbo - это сисадмин(по умолчанию логину sa соответствует пользователь dbo). А задача стояла предоставить права на выполнение xp_cmdshell(с определенными параметрами) обычным пользователям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2001, 07:17 |
|
||
|
Как выполнить xp_cmdshell?
|
|||
|---|---|---|---|
|
#18+
так я и говорю, что когда вы перенесли "процедуру-обертку" в базу master вы сделали владельца этой процедуры пользователем базы master. А можно просто сделать его пользователем базы master без переноса процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2001, 07:31 |
|
||
|
Как выполнить xp_cmdshell?
|
|||
|---|---|---|---|
|
#18+
Пардон, я невнимательно прочла Ваш предыдущий ответ. Да, владелец процедуры-обертки и есть сисадмин. Вопрос был в том, чтобы дать права обычным пользователям, не сисадминам, права на выполнение xp_cmdshell посредством процедуры-обертки с правами ее владельца. Процедура нужна в целях безопасности, чтобы не давать всем пользователям явных прав на выполнение xp_cmdshell. Процедура выполняет строго определенные действия (конкретно, dtsrun), и обычный пользователь БД не сможет, например, форматнуть диск в приступе праведного гнева на администратора БД. А у Вас, наверное, прокси-аккаунт настроен, раз обычные пользователи могут к xp_cmdshell из любой базы обращаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2001, 10:54 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32015173&tid=1825333]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 420ms |

| 0 / 0 |
