Создать сетевую папку на удаленном компьютере

Администраторам часто нужно(или просто хочется) выполнять настройки удаленно. Это позволяет не отрывать лишний раз от работы пользователя и укреплять знание принципов работы ОС.
Разберемся как создать на удаленном ПК сетевую папку используя PsExec

Создаем сетевую папку

Одновременно создать папку и назначить на нее права средствами CMD нельзя, поэтому предварительно создадим папку

psexec \\COMP2135 cmd "/c md C:\Users\Username\Test"

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

Делаем папку сетевой

psexec \\COMP2135 net share ShareFolder=C:\Users\Username\Test

Если теперь вы попробуете добавить папке права следующей командой,

psexec \\COMP2135 net share ShareFolder=C:\Users\Username\Test /grant:"user1",full /grant:"user2",change /grant:"user3",read

то получите сообщение о том, что

Общий доступ к этому имени уже открыт.

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

psexec \\COMP2135 net share Test /delete

и выдать доступ по новой, с уже заданными правами.

Upd: Добавление прав на сетевую папку средствами Powershell

Для этого можно использовать командлет из модуля SmbShare

Grant-SmbShareAccess -CimSession "ServerName" -Name "ShareName" -AccountName "Domain\Username$" -AccessRight Read -Confirm:$False

Проверить успех операции можно командлетом

Get-SmbShareAccess -Name "ShareName"
Назначение сетевых прав через Powershell

Необходимость в предварительном создания папки никуда не пропала

psexec -s \\COMP2135 powershell -command New-Item -ItemType Directory -Path C:\Users\Username\Test

Делаем папку общей и назначаем ей права сетевого доступа

psexec -s \\COMP2135 powershell -windowStyle hidden -command New-SmbShare -Name Test -Path C:\Users\Username\Test -FullAccess user1,user2 -ReadAccess user3
Назначение прав NTFS

Вспомним как назначаются права доступа через Powershell

# Считываем текущие параметры ACL для нашей папки
$acl = Get-Acl C:\Users\Username\Test

# Создаем набор разрешений, который мы назначим папке
$permission = "user1","fullcontrol","containerinherit,objectinherit","none","allow"

# Смотрим текущие ACE
$acl.Access

# ACE - Запись соответствия пользователя и его прав доступа для данного объекта

# Создаем объект ACE на основе ранее записанных разрешений
$ace = new-object security.accesscontrol.filesystemaccessrule $permission

# Вносим сделанные изменения в исходный ACL
$acl.setaccessrule($ace)
# Назначаем ACL на выбранную папку
$acl | set-acl C:\Users\Username\Test

Как видим, параметры доступа в Powershell не задаются одной строкой.
Поэтому для удаленного назначения прав NTFS стоит воспользоваться CMD утилитой icacls:

psexec \\COMP2135 icacls "C:\Users\Username\Test" /grant user1:F /Q

/Q — не выводить сообщения о успешной выполненных командах
user1:F — предоставить пользователю user1 полный доступ.
Так же допустимы варианты и другие варианты. Например:
R — доступ на чтение
W — доступ на запись

А более подробно про ACL можно прочитать в отдельно посвященной этой теме статье

Добавить комментарий

Ваш адрес email не будет опубликован.