Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 xp_cmdshell права на выполнение  [new]
Arl
Member

Откуда:
Сообщений: 90
Добрый день всем!

Есть небольшая самописная консольная программка (конвертер), которую надо запустить из sql-запроса.
Программка лежит в папке на диске E, на том же сервере, где крутится экземпляр sql.

При запуске вручную из cmd (с компьютера пользователя) программка запускается и отрабатывает нормально.
При запуске из скрипта - не работает.
DECLARE @i INT
EXEC @i = master.dbo.xp_cmdshell 'e:\1\1.exe e:\1\1.csv'
SELECT @i
-- результат: @i = 255

Я так подозреваю, что это связано с правами, под которыми запускается xp_cmdshell.
EXEC master.dbo.xp_cmdshell 'whoami'
-- результат: nt authority\network service

При этом я могу зайти в папку и прочитать содержимое, ошибок не возникает:
EXEC @i = master.dbo.xp_cmdshell 'dir e:\1\'

Если это таки проблемы с правами, то как дать xp_cmdshell права на выполнение программки?
22 янв 18, 09:39    [21125423]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell права на выполнение  [new]
Кусочек
Guest
Пробовали?

sp_xp_cmdshell_proxy_account
22 янв 18, 09:50    [21125456]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell права на выполнение  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Arl
Если это таки проблемы с правами, то как дать xp_cmdshell права на выполнение программки?
Или прокси-аккаунт, или дать права nt authority\network service (хотя странно, почему у него нет прав на локальную папку), либо поменять аккаунт для сиквела на тот, у которого будут права.
22 янв 18, 09:59    [21125490]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell права на выполнение  [new]
Arl
Member

Откуда:
Сообщений: 90
Спасибо за ответы.
Добавил sp_xp_cmdshell_proxy_account.
Результат тот же.
EXEC master.dbo.xp_cmdshell 'whoami'
-- результат: nt authority\network service

xp_cmdshell теперь по умолчанию запускается от имени пользователя,
указанного в sp_xp_cmdshell_proxy_account или это надо указывать при запуске?
22 янв 18, 11:59    [21125991]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell права на выполнение  [new]
Кусочек
Guest
Arl
Спасибо за ответы.
Добавил sp_xp_cmdshell_proxy_account.
Результат тот же.
EXEC master.dbo.xp_cmdshell 'whoami'
-- результат: nt authority\network service

xp_cmdshell теперь по умолчанию запускается от имени пользователя,
указанного в sp_xp_cmdshell_proxy_account или это надо указывать при запуске?


Учетная запись-посредник для процедуры xp_cmdshell
Когда ее вызывает пользователь, не являющийся членом предопределенной роли сервера sysadmin, процедура xp_cmdshell подключается к Windows с помощью имени учетной записи и пароля, которые хранятся в учетных данных с именем ##xp_cmdshell_proxy_account##. Если эти посреднические учетные данные не существуют, то процедура xp_cmdshell завершит выполнение с ошибкой.
22 янв 18, 12:07    [21126031]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell права на выполнение  [new]
гогол
Member [заблокирован]

Откуда:
Сообщений: 88
Arl
Спасибо за ответы.
Добавил sp_xp_cmdshell_proxy_account.
Результат тот же.
EXEC master.dbo.xp_cmdshell 'whoami'
-- результат: nt authority\network service

xp_cmdshell теперь по умолчанию запускается от имени пользователя,
указанного в sp_xp_cmdshell_proxy_account или это надо указывать при запуске?



А пароль при создании прокси верно указали?
22 янв 18, 13:25    [21126507]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell права на выполнение  [new]
Arl
Member

Откуда:
Сообщений: 90
Спасибо всем за ответы, разобрались.
На SQLserver добавили пользователя с "проверкой подлинности windows", этого же пользователя добавили в Proxy Account,
после этого все заработало.
EXECUTE AS LOGIN = 'user'
EXEC @i = master.dbo.xp_cmdshell 'e:\1\1.exe e:\1\1.csv'

ПС. Учетную запись-посредника добавлял с помощью команды
CREATE CREDENTIAL ##xp_cmdshell_proxy_account## WITH IDENTITY = 'user', SECRET = 'pass'
23 янв 18, 11:43    [21129691]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить