Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Уже который день не могу решить проблему копирования/переноса файлов с помощью xp_cmdshell.

Сервер: Windows 2012 R2 Std
Сиквел: 2012 Std + SP1 + CU8

Сервис сиквела запущен из-под доменной учетки - domain\user. domain\user включен в группу локальных админов на сервере и админ на сиквеле.

Есть две папки: E:\Files\New и E:\Files\Old. У группы локальных админов все права на эти папки.
xp_cmdshell 'whoami.exe' 

возвращает domain\user.

xp_cmdshell запускает cmd-файл с командой копирования с одной папки в другую.
В результате ошибка - Access is denied.

При этом, если залогиниться на сервер под domain\user и выполнить командный файл - все проходит успешно.

Что я еще пропустил при настройке ?
25 фев 14, 11:51    [15624597]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Диск E локальный?
Не зашарен на ресурс?
25 фев 14, 12:10    [15624722]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
xp_cmdshell 'dir e:'

Что вернет?
25 фев 14, 12:11    [15624729]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
SQL2008
Диск E локальный?
Не зашарен на ресурс?


Конечно локальный.

SQL2008
xp_cmdshell 'dir e:'

Что вернет?


Возвращает список папок (там одна).
25 фев 14, 12:25    [15624793]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
aleks2
Guest
Zioma
Есть две папки: E:\Files\New и E:\Files\Old. У группы локальных админов все права на эти папки.

Zioma
Возвращает список папок (там одна).

Темните.
25 фев 14, 12:33    [15624848]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Только что еще попробовал копирование/перемещение прямо в сроке xp_cmdshell (не через командный файл) - отрабатывает, но только для тех файлов, в списке "секьюрити" которых есть domain\user.

Если там только domain\administrators, то ошибка. Но пользователь domain\user в группе domain\administrators, владельцем папок и файлов есть группа domain\administrators.

Ничего не понимаю ... :(
25 фев 14, 12:35    [15624866]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
aleks2
Zioma
Есть две папки: E:\Files\New и E:\Files\Old. У группы локальных админов все права на эти папки.

Zioma
Возвращает список папок (там одна).

Темните.

E:\Files
25 фев 14, 12:36    [15624875]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
aleks2
Zioma
Есть две папки: E:\Files\New и E:\Files\Old. У группы локальных админов все права на эти папки.

Zioma
Возвращает список папок (там одна).

Темните.


Это к чему? На диске Е одна папка - Files.
25 фев 14, 12:37    [15624886]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Glory
Member

Откуда:
Сообщений: 104751
Zioma
Если там только domain\administrators, то ошибка. Но пользователь domain\user в группе domain\administrators, владельцем папок и файлов есть группа domain\administrators.

Ничего не понимаю ... :(

Все как раз понятно - права на конкретный файл имеют больший приоритет, чем права на контейнер.
Кто и каким способом поместил файлы в эту директорию ?(какой-нибудь ssh с юникса ??)
25 фев 14, 12:39    [15624902]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Glory
Zioma
Если там только domain\administrators, то ошибка. Но пользователь domain\user в группе domain\administrators, владельцем папок и файлов есть группа domain\administrators.

Ничего не понимаю ... :(

Все как раз понятно - права на конкретный файл имеют больший приоритет, чем права на контейнер.
Кто и каким способом поместил файлы в эту директорию ?(какой-нибудь ssh с юникса ??)


Файлы - бэкапы, создаются SQL Server Agent'ом, сервис которого запущен из под учетки domain\user.
25 фев 14, 12:45    [15624962]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Glory
Member

Откуда:
Сообщений: 104751
Zioma
Файлы - бэкапы, создаются SQL Server Agent'ом, сервис которого запущен из под учетки domain\user.

Куда же тогда пропадает этот domain\user из владельцев файла ?
25 фев 14, 12:55    [15625077]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Zioma
Файлы - бэкапы, создаются SQL Server Agent'ом, сервис которого запущен из под учетки domain\user.

Прошу прощения за занудство, но проверьте, пожалуйста, что это действительно так!
SQL Server и SQL Agent могут быть запщены из под разных учетных записей.
25 фев 14, 12:57    [15625086]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
SQL2008
Zioma
Файлы - бэкапы, создаются SQL Server Agent'ом, сервис которого запущен из под учетки domain\user.

Прошу прощения за занудство, но проверьте, пожалуйста, что это действительно так!
SQL Server и SQL Agent могут быть запщены из под разных учетных записей.


Из под одной - domain\user. Пишу так, поскольку у нас длинные названия. Так проще.

Glory
Zioma
Файлы - бэкапы, создаются SQL Server Agent'ом, сервис которого запущен из под учетки domain\user.

Куда же тогда пропадает этот domain\user из владельцев файла ?


Владельцем (Owner) у всех папок и файлов один - локальная группа server\administrators (выше писал domain\administrators - обшибся). Но файл, созданный агентом (по всей видимости) еще имеет в списке Security и пользователя domain\user (кроме server\administrators).
Такие файлы копируются, если запустить xp_cmdshell 'copy from to'. Если запустить батник с командой копирования - ошибка!

Опять же, файлы в директории будут появляться не только от агента и надо обеспечить копирование/перемещение всех файлов.
Например, если я делаю бэкап вручную, то этот файл не копируется xp_cmdshell (там нет в списке пользователей этого domain\user).

При этом стандарными методами все прекрасно копируется/перемещается.

Раньше (не на 2012-ых продуктах) таких проблем не замечалось :(
25 фев 14, 13:29    [15625376]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Напрашивается вывод, что у пользователя domain\user существуют ограничения на доступ к этим папкам.
Они могут быть как явными, так и наследованными с родительских папок и дисков.
25 фев 14, 13:45    [15625549]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Решилось все путем назначения напрямую прав на все фйлы пользователю domain\user (бэкапы уже с ним идут, а на папки, cmd-файлы и логи выполнения вручную назначил).
Получается, что недостаточно что бы доменный пользователь был в группе локальных админов (которой даны все возможное права).

Всем спасибо за участие :)
25 фев 14, 14:25    [15625924]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Glory
Member

Откуда:
Сообщений: 104751
Zioma
Получается, что недостаточно что бы доменный пользователь был в группе локальных админов (которой даны все возможное права).

By default, an object inherits permissions from its parent object, either at the time of creation or when it is copied or moved to its parent folder. The only exception to this rule occurs when you move an object to a different folder on the same volume. In this case, the original permissions are retained.

Вы бы лучше разобрались, почему теряются права.
25 фев 14, 14:58    [15626261]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
kelevra.sergey
Member

Откуда:
Сообщений: 5
Zioma,

Можно вопрос меня тоже интресуют вопросы по поводу копирования файлов по маске с локалки на сетевую, у вас есть какие либо контакты ещё, скайп агент аська?
25 фев 14, 16:02    [15626845]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Glory
Zioma
Получается, что недостаточно что бы доменный пользователь был в группе локальных админов (которой даны все возможное права).

By default, an object inherits permissions from its parent object, either at the time of creation or when it is copied or moved to its parent folder. The only exception to this rule occurs when you move an object to a different folder on the same volume. In this case, the original permissions are retained.

Вы бы лучше разобрались, почему теряются права.


Права не теряются.
По сути вопрос сводился к: почему под пользователем domain\user в винде все батники копирования и т.д. выполнялись успешно, а выполнение тех же батников через xp_cmdshell приводило к ошибке Access is denied ?

kelevra.sergey
Zioma,

Можно вопрос меня тоже интресуют вопросы по поводу копирования файлов по маске с локалки на сетевую, у вас есть какие либо контакты ещё, скайп агент аська?


Есть почта в профиле, но я ее редко читаю на протяжении дня - секьюрность конторы, млин ... ;)
25 фев 14, 18:41    [15628305]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Glory
Member

Откуда:
Сообщений: 104751
Zioma
Права не теряются.

" отрабатывает, но только для тех файлов, в списке "секьюрити" которых есть domain\user.
Если там только domain\administrators, то ошибка. "
объясните тогда, как у файла, создаваемого domain\user, в директории, на которую domain\user имеет права, отсутствует этот самый domain\user в Security ?
25 фев 14, 20:55    [15629042]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Glory
объясните тогда, как у файла, создаваемого domain\user, в директории, на которую domain\user имеет права, отсутствует этот самый domain\user в Security ?


У файла, создаваемого domain\user, права на этот файл есть и никто не говорил, что его там нет.
Это вы предположили :)
Glory
Куда же тогда пропадает этот domain\user из владельцев файла ?


Я же начинал с того, что нашел причну ошибки Access is denied в случае использования xp_cmdshell: если на странице Security любого файла, участвующего в операциях, описанных в батнике (копирование/перемещение, лог-файл) должен быть пользователь domain\user, из под которого запущена служба сиквела.

Если в папке-источнике будут только бэкапы, созданные Агентом, то проблем не будет. Но на время "разработки" и выявления ошибки там оказались другие файлы: бэкапы Агента до перевода его под учетку domain\user, тестовые файлы, скопированные мной (учетка domain\user1).

Но все учетки, участвующие в процессе, состоят в группе local_server\administrators. Эта группа есть владельцем всей иерархии папок и файлов.

И если запускать батники копирования/перемещения прямо на сервере из под учеток domain\user или domain\user1 (моя собственная учетка), то абсолютно никаких ошибок нет, какие бы файлы там не лежали. Что и логично: пользователи в группе local_server\administrators.

Почему тогда появляется ошибка Access is denied при запуске того же батника с помощью xp_cmdshell, если у файла (файлов) явно не указан пользователь domain\user на закладке Security ?

Если бы ошибка была при прямом запуске команд, то я, ясен пень, сюда бы не обращался.
Вобщем проблема решена, но осадок остался - на системах Винь 2003/2008 такого тонкого тюнинга не требовалось, все эти xp_cmdshell-ы заводились с полпинка.
26 фев 14, 11:57    [15631286]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Glory
Member

Откуда:
Сообщений: 104751
Zioma
У файла, создаваемого domain\user, права на этот файл есть и никто не говорил, что его там нет.
Это вы предположили :)

Это было не предположение, а цитата из вашего сообщения 15624866

Zioma
Если в папке-источнике будут только бэкапы, созданные Агентом, то проблем не будет. Но на время "разработки" и выявления ошибки там оказались другие файлы: бэкапы Агента до перевода его под учетку domain\user, тестовые файлы, скопированные мной (учетка domain\user1).

Они не скопированы. Они перенесены.
Потому что при копировании в Security появится domain\user. А при переносе - не появится.
Вы наверное не прочитали мое сообщение.
26 фев 14, 12:02    [15631321]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Glory
Вы наверное не прочитали мое сообщение.

Скорее вы не читалимои сообщенния - они подлиннее будут (шутка)

Давай отойдем от того, как появляются права на файл и куда деваются.

Есть файл file.bak в папке E:\Files\New.
На файл и всю иерархию папок есть права (полные, full control) у группы local_server\administrators.
Есть пользователь domain\user. Пользователь в группе local_server\administrators, от имени этого пользователя запущены и сиквел и агент. Пользователь в группе sysadmin на сиквеле.
Есть батник, который копирует/перемещает файл file.bak из папки E:\Files\New в папку E:\Files\Old.

Теперь два варианта запуска батника:
а) из командной строки винды под пользователем domain\user
б) с помощью команды xp_cmdshell 'copy.bat' в SSMS

Почему в варианте а) нет ошибок, в варианте б) - ошибка Access is denied ?
Если бы была ошибка в варианте а), то я сюда не писал бы.
26 фев 14, 12:50    [15631799]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Glory
Member

Откуда:
Сообщений: 104751
Zioma
Давай отойдем от того, как появляются права на файл и куда деваются.

Круто.
Давайте не будем рассматривать причину проблемы.
Ну на этом пожалуй тогода и все
26 фев 14, 12:54    [15631836]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
Zioma
Теперь два варианта запуска батника:
а) из командной строки винды под пользователем domain\user
б) с помощью команды xp_cmdshell 'copy.bat' в SSMS

Почему в варианте а) нет ошибок, в варианте б) - ошибка Access is denied ?
Например, потому что domain\user был включен в local_server\administrators уже после запуска служб сиквела и агента.
26 фев 14, 13:09    [15631982]     Ответить | Цитировать Сообщить модератору
 Re: xp_cmdshell + copy = Access is denied  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
invm
Например, потому что domain\user был включен в local_server\administrators уже после запуска служб сиквела и агента.


А что, по сути, это менят? Права выданы на local_server\administrators и любой пользователь, включенный в эту группу получает доступы, выданные этой группе.
И это подтверждается работой в самой винде под пользователем domain\user - всё копируется/перемещается/выполняется.

Но вот для xp_cmdshell необходимо явное "указание" пользователя domain\user.
Я не хочу, конечно, разводить тут полемику, но если кто-то толком объяснит ситуацию, описанную здесь 15631799, то буду очень благодарен.

Glory
Круто.
Давайте не будем рассматривать причину проблемы.
Ну на этом пожалуй тогода и все


Уважаемый Glory, при все уважении, вы несколько погарячились в своих выводах.
Причина моей проблемы не выполнения xp_cmdshell в том, что отсутсвуют явные права на файлы у domain\user, а не в том, почему их нет.
26 фев 14, 14:01    [15632415]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить