Права доступа windows скриптом

Скрипт для назначения прав доступа к папке

Дорогие друзья , есть задача есть группа пользователей D и P, нужно для первой группы задать права на папку чтение выполнение но без возможности редактирования и удаления
а второй только чтение и просмотр содержимого папки без возможности редактить , и удалять
допустим папка наxодиться по пути С:/docs/papka/papka1/papka2

помогите написать скрипт для этой задачи если учитывать что таких папок 200 и лезть в каждую не очень хочется ((

Назначение папке прав доступа для всех
Доброе время суток, написал програму и теперь написал к ней установщик. Инсталятор запускается с.

Скрипт для настроек прав доступа к файлу
необходимо написать скрипт, который устанавливает некоторым образом(любым произвольным) права.

Проверка прав доступа к папке
Прошу помощи. Необходимо в указаном пути перебрать папки на доступ к ней юзера. string abc; .

Настройка прав доступа к папке на сервере
Господа помоги со скриптами При создании счетчика на ASP — счетчик пишет в папку с тестовым файлом.

Пример предоставления прав:

Для установки запрета:

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Нет прав доступа к сетевой папке
Два компьютера с windows xp sp3 в локалке На одном компьютере расшарено 2 папки. С другого.

Проверка прав доступа к папке (диску).
Меня интересует такой вопрос, как можно проверить возможно ли создать файл в папке. Можно конечно.

Журнал изменений прав доступа к общей папке
Мальчишки привет! 🙂 Тут возникла такая проблемка, у меня дома с соседями общая сетка под.

Изменение (сброс) прав доступа к локальной папке
Компьютер принадлежал домену На компе была папка, доступная по сети группе из домена. После смены.

Права доступа к папке/файлу для php скрипта в windows server 2016?

Столкнулся с неожиданной проблемой на windows server 2016.

Необходимо выбирать данные из баз данных созданных в access и записывать в соответствующие таблицы в MySQL.
Обрабатывать надо около 10 access баз.
Написал скрипты в php 7.
Установил в диспетчере событий windows server задачу на выполнение скрипта в терминале и интервал обхода первой access базы — все работает отлично.
Установил в диспетчере событий тоже самое для другой базы access, которая находится в этой же папке, выдает ошибку нет доступа к базе данных access.

Базы находятся на одном диске windows server 2016, папка с базами расшарена для работы сотрудниками других управлений.

Если аксесовскую базу скопировать в другую любую другую папку на диске, который не расшарен — все работает отлично.
—————

Для установления коннекта с аксесовской базой разбираю путь нахождения БД с помощью realpath().
Так вот в одной и той же папке по первой БД канонизирует путь, по второй — false.

Еще раз повторюсь — если вторую БД переписать в другую не расшареную папку — все работает отлично. Но такой вариант абсолютно не подходит — необходимо, чтобы базы были расшареными иначе весь смысл пропадает.
—————

Пробовал смотреть права доступа на папки:
если смотреть расшареную папку — выдает 0555 (возможно подключиться только к одной БД)
если смотреть обычную папку — выдает 0777

Читайте также:  Ошибка установки mac os date

—————
PHP выдает ошибку SQL state S1000 in SQLConnect in

—————
При обращении к первой БД закрываю подключение (odbc_connect)
Т.е. никаких подключение нет и все равно не работает.

У меня только один вариант остался — это проблема с правами доступа. Т.к. даже в realpath() прописано «Запускаемый скрипт должен иметь права запуска на всех директориях в проверяемой иерархии, иначе realpath() вернет FALSE».

Кто может сталкивался с подобными проблемами.
Как вы из решили?
Поделитесь, пожалуйста, опытом.

Управление NTFS разрешениями на папки и файлы из PowerShell

Для управления доступом к файлам и папкам в Windows на каждый объект файловой системы NTFS (каталог или файл) назначается специальный ACL (Access Control List, список контроля доступа). В ACL объекта задаются доступные операции (разрешения), которые может совершать с этим объектом пользователь и/или группы . В большинстве случаев администраторы Window для управления NFTS разрешениями на файлы и папки используют графический интерфейс File Explorer (свойства папки/файла -> вкладка Security/Безопасность) или консольную утилиту icacls. В этой статье мы рассмотрим способы управления разрешениями на объекты файловой системы NTFS из PowerShell. Вы можете использовать эти команды в скриптах и для автоматизации управлением NTFS разрешениями на файловых серверах Windows.

Встроенные командлеты для управления ACL в NTFS: Get-Acl и Set-Acl

В PowerShell v5 (Windows 10 / Windows Server 2016) для управления ACL имеется два отдельных встроенных командлета (входят в модуль Microsoft.PowerShell.Security):

  • Get-Acl — позволяет получить текущие ACL для конкретного объекта на файловой системе NTFS;
  • Set-Acl – используется для добавления/изменения текущих ACL объекта.

Мы не будем подробно останавливаться на этих встроенных командлетах, т.к. их функционал в большинстве случае недостаточен для управления NTFS разрешениями в реальных задачах. Рассмотрим лишь несколько типовых примеров их использования.

Выведем текущего владельца папки (файла) и список назначенных NTFS разрешений:

get-acl C:\Drivers\ |fl

Path : Microsoft.PowerShell.Core\FileSystem::C:\Drivers\
Owner : WORKSTAT1\root
Group : WORKSTAT1\Отсутствует
Access : NT AUTHORITY\Authenticated Users Allow Modify, Synchronize
NT AUTHORITY\SYSTEM Allow FullControl
BUILTIN\Администраторы Allow FullControl
BUILTIN\Пользователи Allow ReadAndExecute, Synchronize
WORKSTAT1\root Allow Modify, Synchronize
Audit :
Sddl : O:S-1-5-21-3650440056-3766451173-3310994491-1001G:S-1-5-21-3650440056-766451173-3310994491-513D:PAI(A;OICI;0x 1301bf;;;AU)(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;BU)(A;OICI;0x1301bf;;;S-1-5-21-3650440056-37664 51173-3310994491-1001)

Можно вывести только списки NTFS разрешений в более понятном формате:

С помощью следящей команды можно скопировать NTFS разрешения с одной папки и применить их на другую:

Get-Acl C:\Drivers | Set-Acl C:\Distr

Главная проблема при использовании Set-ACL – командлет всегда пытается сменить владельца ресурса, даже если вы просто хотите изменить NTFS разрешения. В результате, чтобы добавить права на объект нужно использовать такую конструкцию:

$path = «c:\drivers»
$user = «WORKSTAT1\user1»
$Rights = «Read, ReadAndExecute, ListDirectory»
$InheritSettings = «Containerinherit, ObjectInherit»
$PropogationSettings = «None»
$RuleType = «Allow»
$acl = Get-Acl $path
$perm = $user, $Rights, $InheritSettings, $PropogationSettings, $RuleType
$rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $perm
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path $path

Чтобы убрать NTFS доступ к папке для пользователя или группы:
$path = «c:\drivers»
$acl = Get-Acl $path
$rules = $acl.Access | where IsInherited -eq $false
$targetrule = $rules | where IdentityReference -eq «WORKSTAT1\user1»
$acl.RemoveAccessRule($targetrule)
$acl | Set-Acl -Path $path

Чтобы отключить наследование для папки из PowerShell:

$path = ‘C:\dist’
$acl = Get-ACL -Path $path
$acl.SetAccessRuleProtection($True, $True) # первый $True указывает, является ли данный каталог защищенным, второй $True – нужно ли скопировать текущие NTFS разрешения
Set-Acl -Path $path -AclObject $acl

Используем модуль NTFSSecurity для управления разрешениями из PowerShell

Как я уже говорил, встроенный модуль для управления ACL на объекты в PowerShell не самый удобный. Для управления NTFS правами на файлы и папки в Windows лучше использовать отдельный модуль их галереи PowerShell – NTFSSecurity. Последнюю версию модуля NTFSSecurity (4.2.4 на данный момент) можно установить командой Install-Module -Name NTFSSecurity , или скачать вручную (линк). При ручной установке достаточно распаковать содержимое архива модуля в каталог C:\Windows\System32\WindowsPowerShell\v1.0\Modules\NTFSSecurity (не забудьте разблокировать скачанные файлы).

Читайте также:  Скрытые параметры электропитания windows 10

Импортируйте модуль NTFSSecurity в сессию PowerShell:

Выведем список команд, доступных в модуле (доступно 36 командлетов):

Get-Command -Module NTFSSecurity

Выведем текущие NTFS разрешения на каталог:
Get-Item ‘c:\distr’ | Get-NTFSAccess

Как вы видите, текущие разрешения представлены в более удобной форме.

Чтобы предоставить конкретному пользователю и группе группе полные права на папку, выполните команду:
Add-NTFSAccess -Path C:\distr -Account ‘WORKSTAT1\confroom’,’BUILTIN\Администраторы’ -AccessRights ‘Fullcontrol’ -PassThru

Чтобы предоставить права только на верхнем уровне и не изменять разрешения на вложенные объекты (только на папку), используйте команду:

Add-NTFSAccess c:\data\public -Account corp\aaivanov -AccessRights Modify -AppliesTo ThisFolderOnly

Удалить назначенные NTFS разрешения:

Remove-NTFSAccess -Path C:\distr -Account ‘WORKSTAT1\confroom’ -AccessRights FullControl -PassThru

Следующей командой можно лишить указанную учетную прав на все вложенные объекты в указанной папке (наследованные разрешения будут пропущены):

Get-ChildItem -Path C:\distr -Recurse | Get-NTFSAccess -Account ‘WORKSTAT1\confroom’ -ExcludeInherited |Remove-NTFSAccess -PassThru

Следующей командой можно назначить учетную запись Administrator владельцем всех вложенных объектов в каталоге:

Get-ChildItem -Path C:\distr -Recurse -Force | Set-NTFSOwner -Account ‘Administrator’

Чтобы очистить все разрешения, назначенные на объекты каталога вручную (не будет удалены унаследованные разрешения):

Get-ChildItem -Path C:\distr -Recurse -Force | Clear-NTFSAccess

Включить NTFS наследование для всех объектов в каталоге:

Get-ChildItem -Path C:\distr -Recurse -Force | Enable-NTFSAccessInheritance

Чтобы вывести все разрешения, которые назначены вручную, исключая унаследованные разрешения:

dir C:\distr | Get-NTFSAccess –ExcludeInherited

Можно вывести разрешения, назначенные для определенного аккаунта (не путайте с эффективными разрешениями, речь о них ниже):

dir C:\distr | Get-NTFSAccess -Account corp\aaivanov

Проверка эффективных NTFS разрешений на объекты из PowerShell

Вы можете проверить эффективные NTFS разрешения на конкретный файл или папку с помощью командлета Get-EffectiveAccess . Допустим вы предоставили доступ на некоторую папку нескольким группам безопасности AD и теперь хотите понять, есть ли у конкретного аккаунта (SID) доступ к данной папке или нет. Как это сделать, не выводя состав групп AD, в которых входит его учетная запись? В этой ситуации как раз поможет функция проверки эффективные NTFS разрешений. Допустим, нужно проверить эффективные права на все вложенные папки в каталоге для пользователя confroom.

Get-ChildItem -Path c:\distr -Recurse -Directory | Get-NTFSEffectiveAccess -Account ‘WORKSTAT1\confroom’ | select Account, AccessControlType, AccessRights, FullName

Либо вы можете проверить эффективные разрешения на конкретный файл:

Полный доступ к любым папкам Windows. Инструкция.

Быстрая инструкция:

В командной строке от имени администратора выполнить команду:

TAKEOWN /f «Путь» /r /d y && ICACLS «Путь» /grant Группа:F /t

  • «Путь» — путь к файлу или папке, к которой будет получен полный доступ
  • Группа — группа, которой будут предоставлены полные права ( Users или Administrators )

Подробная инструкция:

1. Запустите командную строку cmd.exe с помощью администратора:

Путь к файлу: C:\Windows\system32\ cmd.exe

Чтобы запустить от имени администратора, кликните правой кнопкой мыши по файлу и выберите пункт Run as administrator (Запустить от имени администратора)

2. Разберем две команды:

TAKEOWN — сменяет владельца файла на вас

  • /f — параметр, после которого указывается путь к файлу
  • «Путь» — путь к файлу или папке, к которой будет получен полный доступ
  • /r — выполнит команду для всех файлов во всех папках и подпапках
  • /d — автоматически отвечает на запрос подтверждения операции
  • y [es] — разрешение на выполнение команды

ICACLS — изменяет параметры доступа к файлам (Свойства -> Безопасность)

  • «Путь» — путь к файлу или папке, к которой будут изменены параметры доступа
  • /grants — предоставляет определенные права доступа
  • Группа — группа, которой будут предоставлены права (впишите имя вашего профиля или группу Users или Administrators )
  • :F [ull] — разрешение полного доступа
  • /t — выполнит команду для всех файлов во всех папках и подпапках
Читайте также:  Диспетчер загрузки windows состояние 0xc0000225

3. Для упрощения можно объединить две команды в одну:

TAKEOWN /f «Путь» /r /d y && ICACLS «Путь» /grant Группа пользователей:F /t

Команду можно повторять много раз для разных файлов и папок

Также можно объединить много команд в один файл .bat

Права на файлы в Win7: меняем в текущем сеансе пользователя

Добрый день, уважаемые хабра-жители!
Предисловие: время от времени необходимо выставлять права на отдельные папки и файлы для пользователей на работе. В XP это делалось легко и просто (способ, если кто не знает, под катом), а вот с выходом Vista и Seven — старый проверенный друг подвел меня. Давайте узнаем, как можно быстро выставить права на отдельные папки и файлы в Windows под текущим пользователем. Экономим время!

Итак, прежде всего способ, который проходит в Windows XP:
Запускаете cmd с правами администратора (это runas /user:domain\login cmd если вдруг кто-то забыл и там вводите волшебную команду — explorer /separate.

В результате мы запустим проводник с администраторскими привилегиями. Выставляем права и радуемся своей находчивости.

Но пришло время перемен и в более новых системах эта команда запустит проводник от текущего пользователя.
Можно, конечно, выставлять права через администраторские шары со своего рабочего места, или запускать от себя другие файловые менеджеры… Но иногда выставить права нужно здесь и сейчас, а установка лишней программы на компьютер, которой придется пользоваться раз в месяц — это неправильно.

Итак, я нашел два способа побороть эту ситуацию: один правильный и интересный, второй быстрый и забавный. Начнем с первого.

Способ 1. Для любознательных и терпеливых

За разграничение прав проводника отвечает один из COM объектов. А именно — Elevated-Unelevated Explorer Factory.

Находится это чудо следующим образом:
Запускаете cmd с правами администратора — dcomcnfg и далее в настройке DCOM ищите параметр Elevated-Unelevated Explorer Factory.

и там ищите нашего спрятанного зверька:

Однако редактировать этот параметр вам скорее всего не дадут. Нет прав на изменение ветки реестра HKEY_CLASSES_ROOT\AppID\
Когда нас останавливали такие пустяки? Делаем себя владельцем, изменяем права и снова запускаем dcomcnfg
УРА! Мы можем теперь выставить параметр на вкладке Удостоверение — Запускающий пользователь.

Муторно немного, да? Можно сразу редактировать ключик реестра — HKEY_CLASSES_ROOT\AppID\\RunAs

  • значение Interactive User для текущего пользователя
  • удаление этого параметра для запускающего пользователя
  • имя пользователя для запуска проводника от какого-то конкретного пользователя

Возможно решить данный вопрос можно через политики, но увы -я такое не нашел, да и не применимо на работе у меня такое. Разве что приходит на ум батник на ключа реестра. Ну что же, первый способ мы осилили…

А теперь время магии.

Способ 2. Быстрый и веселый

Запускаем cmd от имени администратора, открываем блокнот, выбираем Открыть и отобразить все файлы и спокойно меняем права на файлы и папки.

Картинка, иллюстрирующая мои глаза в момент этого чудного открытия прилагается:

Благодарю за внимание!

UPD
Благодаря пользователю denis_g и нескольким другим линуксойдам, вспомнил, что давно читал про консольную команду управления правами доступа — CACLS
Раз ссылка на синтаксис
Два ссылка на синтаксис

Получается, добавление пользователя с правами на изменение делается так:

cacls PATH:\To\FILE /t /e /p username:C

Где переменные: /t — подкаталоги (для папок), /e — edit т.е. изменение существующих прав, /p — изменение пав пользователю (если нет — добавит), С — чтение.
Осторожно, сперва потренируйтесь, ибо можно снести в null все права на папку!

UPD2 у меня не заработал
Зажать SHIFT и выбрать «Запуск от имени другого пользователя» экзешника проводника…

Оцените статью