Показать полную графическую версию : Не получается использовать cmd для выдачи прав пользователям на папку
RomanMirniy
12-09-2018, 11:24
Доброго дня!
Проблема такая. Используя cmd делаю что-то типа автоматического восстановления бекапа баз 1С после вируса шифровальщика(если такое произойдет), одной из частей этого батника является удаление старой папки с базой, а затем распаковка архива базы, в которой он создает точно такую же папку. И в этом месте я столкнулся с проблемой, что при распаковки папки права на нее не восстанавливаются, остаются только наследуемые от корня диска, а при добавлении пользователя Sergey и попытке дать ему полные права, даются только особые разрешения и виндой я могу читать, записывать удалять все в этой папке, но 1С видит блокировку базы. Делаю так:
ICACLS D:\SkladNew2018 /inheritance:d /T /L
ICACLS D:\SkladNew2018 /remove:g Sergey /T
ICACLS D:\SkladNew2018 /grant:r Sergey:(F) /T
ПС: Хотя поправка, через винду могу создать файл, удалить. Менять не могу
RomanMirniy
12-09-2018, 11:28
Получается вот так:
http://prntscr.com/ktg0c8
А мне нужно так:
http://prntscr.com/ktg11r
так себе вариант, а если кроме пользователя Sergey доступ к папке будет нужен еще и пользователю Vasya? Имхо проще один раз выдать папке правильные права руками, сделать бэкап прав через тот же icacls и при распаковке архива применять этот бэкап на распакованное файло. А еще лучше перед каждым бэкапом файлов делать бэкап прав и держать это дело вместе, дабы не маяться каждый раз с правкой батника.
бэкап
icacls D:\SkladNew2018 /save ACL.bak
восстановление
icacls /restore D:\SkladNew2018 ACL.bak
RomanMirniy, ну так не удаляйте саму директорию, а только её содержимое
RomanMirniy
12-09-2018, 12:07
Elven, с созданием и восстановлением файла DACL пробовал. Если как вы пишете - ошибка "первым должна стоять директория", а при восстановлении icacls D:\SkladNew2018 /restore ACL.bak проблемы: "Вызывающая сторона не обладает всеми необходимыми правами доступа."
RomanMirniy
12-09-2018, 12:25
Busla, вариант рабочий, спасибо, но все таки хотелось больше изучить о предоставлении пользователям прав через cmd, чем просто удалить внутрянку папки))
"Вызывающая сторона не обладает всеми необходимыми правами доступа." »
Если так, то нужно смотреть на права корневой директории, как вариант становиться владельцем папки до того как восстанавливать права (тоже через icacls, ключей на память не помню).
RomanMirniy
12-09-2018, 12:52
сли так, то нужно смотреть на права корневой директории, как вариант становиться владельцем папки до того как восстанавливать права (тоже через icacls, ключей на память не помню).
Так я владелец и диска D и самой папки, и файл и все запускается под моим профилем. Я уж думал что пишу как то не так. А почему не работает
ICACLS D:\SkladNew2018 /grant:r Sergey:(F) /T
в плане того, что права создаются, но не те, что надо
в плане того, что права создаются, но не те, что надо »
создаются те что указаны:
(F) - полный доступ
/T - ко всем вложенным.
Т.к. не указаны параметры отвечающие за наследование права и выставляются индивидуально для каждого файла/папки.
а есть еще вот такие параметры
(OI) - наследование объектами
(CI) - наследование контейнерами
(IO) - только наследование
(NP) - запрет на распространение наследования
(I) - наследование разрешений от родительского контейнера
И если для указанной папки задать права таким образом:
ICACLS D:\SkladNew2018 /grant:r Sergey:(OI)(CI)(F)
то вроде как должно сработать именно так как хочется. но, имхо, бэкап прав - стабильнее.
RomanMirniy
12-09-2018, 15:18
Спасибо огромное! Вот в каких надо было капать. А я на них и внимания не обращал) Так действительно помогло!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.