Доступ к папке windows по smb

Если вы из Windows 10 или 11 не можете открыть сетевые папки на других сетевых устройствах (NAS, Samba сервера Linux) или на компьютерах со старыми версиями Windows (Windows 7/ XP /2003), скорее всего проблема связана с тем, что в вашей версии Windows отключена поддержка устаревших и небезопасных версий протокола SMB (используется в Windows для доступа к общим сетевым папкам и файлам). В современных версиях Windows 10 и в Windows 11 по-умолчанию отключен протокол SMBv1 и анонимный (гостевой) доступ к сетевым папкам по протоколу SMBv2 и SMBv3.

Microsoft планомерно отключает старые и небезопасные версии протокола SMB во всех последний версиях Windows. Начиная с Windows 10 1709 и Windows Server 2019 (как в Datacenter так и в Standard редакциях) в операционной системе по умолчанию отключен протокол SMBv1 (помните атаку шифровальщика WannaCry, которая как раз и реализовалась через дыру в SMBv1).

Конкретные действия, которые нужно предпринять зависят от ошибки, которая появляется в Windows при доступе к общей сетевой папке и от настроек удаленного SMB сервера, на котором хранятся общие папки.

Содержание:

  • Вы не можете получить гостевой доступ к общей папке без проверки подлинности
  • Вашей системе необходимо использовать SMB2 или более позднюю
  • Нет доступа к сетевой папке, у вас нет прав доступа
  • Дополнительные способы проверки доступа к сетевой папке в Windows

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

Начиная с версии Windows 10 1709 (Fall Creators Update) Enterprise и Education пользователи стали жаловаться, что при попытке открыть сетевую папку на соседнем компьютере стала появляться ошибка:

Вы не можете получить доступ к этой общей папке, так как политики безопасности вашей организации блокируют гостевой доступ без проверки подлинности. Эти политики помогают защитить ваш компьютер от небезопасных или вредоносных устройств в сети.
An error occurred while reconnecting Y: to
\\nas1\share Microsoft Windows Network: You can’t access this shared folder because your organization’s security policies block unauthenticated guest access. These policies help protect your PC from unsafe or malicious devices on the network.

Вы не можете получить доступ к этой общей папке, так как политики безопасности вашей организации блокируют гостевой доступ без проверки подлинности

При этом на других компьютерах со старыми версиями Windows 8.1/7 или на Windows 10 с билдом до 1709, эти же сетевые каталоги открываются нормально. Причина в том, что в современных билдах Windows 10 (начиная с 1709) по умолчанию запрещен сетевой доступ к сетевым папкам под гостевой учетной записью по протоколу SMBv2 (и ниже). Гостевой (анонимный) доступ подразумевают доступ к сетевой папке без аутентификации. При доступе под гостевым аккаунтом по протоколу SMBv1/v2 не применяются такие методы защиты трафика, как SMB подписывание и шифрование, что делает вашу сессию уязвимой против MiTM (man-in-the-middle) атак.

При попытке открыть сетевую папку под гостем по протоколу SMB2, в журнале клиента SMB (Microsoft-Windows-SMBClient) фиксируется ошибка:

Log Name: Microsoft-Windows-SmbClient/Security Source: Microsoft-Windows-SMBClient Event ID: 31017  

Rejected an insecure guest logon.

Данная ошибка говорит о том, что ваш компьютер (клиент) блокирует не аутентифицированный доступ под аккаунтом guest.

Чаще всего с этой проблемой можно столкнуться при использовании старых версий NAS (обычно для простоты настройки на них включают гостевой доступ) или при доступе к сетевым папкам на старых версиях Windows 7/2008 R2 или Windows XP /2003 с настроенным анонимным (гостевым) доступом (см. таблицу поддерживаемых версий SMB в разных версиях Windows).

Microsoft рекомендует изменить настройки на удаленном компьютере или NAS устройстве, который раздает сетевые папки. Желательно переключить сетевой ресурс в режим SMBv3. А если поддерживается только протокол SMBv2, тогда нужно настроить доступ с аутентификацией. Это самый правильный и безопасный способ исправить проблему.

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

  • NAS устройство – отключите гостевой доступ в настройках вашего NAS устройства (зависит от модели);
  • Samba сервер на Linux — если вы раздаете SMB папку с Linux, добавьте в в секции [global] конфигурационного файла smb.conf строку:
    map to guest = never

    А в секции с описанием сетевой папки запретить анонимный доступ:
    guest ok = no
  • В Windows вы можете включить общий доступ к сетевым папкам и принтерам с парольной защитой в разделе Control Panel\All Control Panel Items\Network and Sharing Center\Advanced sharing settings. Для All Networks (Все сети) в секции “Общий доступ с парольной защитой” (Password Protected Sharing) измените значение на “Включить общий доступ с парольной защитой” (Turn on password protected sharing). В этом случае анонимный (гостевой) доступ к папкам будет отключен и вам придется создать локальных пользователей, предоставить им доступ к сетевым папкам и принтерам и использовать эти аккаунты для сетевого доступа к общим папкам на этом компьютере.. Windows 10 Включить общий доступ с парольной защитой

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

Этот способ нужно использовать только как временный (!!!), т.к. доступ к папкам без проверки подлинности существенно снижает уровень безопасности ваших данных.

Чтобы разрешить гостевой доступ с вашего компьютера, откройте редактор локальных групповых политик (gpedit.msc) и перейдите в раздел: Конфигурация компьютера -> Административные шаблоны -> Сеть -> Рабочая станция Lanman (Computer Configuration ->Administrative templates -> Network (Сеть) -> Lanman Workstation). Включите политику Enable insecure guest logons (Включить небезопасные гостевые входы).

Windows 10 политика Включить небезопасные гостевые входы

Обновите настройки групповых политик в Windows с помощью команды:

gpupdate /force

В Windows 10 Home, в которой нет редактора локальной GPO,вы можете внести аналогичное изменение через редактор реестра вручную::

HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters “AllowInsecureGuestAuth”=dword:1

Или такими командами:

reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters /v AllowInsecureGuestAuth /t reg_dword /d 00000001 /f
reg add HKLM\Software\Policies\Microsoft\Windows\LanmanWorkstation /v AllowInsecureGuestAuth /t reg_dword /d 00000001 /f

Вашей системе необходимо использовать SMB2 или более позднюю

Другая возможная проблема при доступе к сетевой папке из Windows 10 – поддержка на стороне сервера только протокола SMBv1. Т.к. клиент SMBv1 по умолчанию отключен в Windows 10, то при попытке открыть шару или подключить сетевой диск вы можете получить ошибку:

Не удалось выполнить сопоставление сетевого диска из-за следующей ошибки.
Вы не можете подключиться к общей папке, так как она небезопасна. Эта общая папка работает по устаревшему протоколу SMB1, который небезопасен и может подвергнуть вашу систему риску атаки.
Вашей системе необходимо использовать SMB2 или более позднюю версию.
You can’t connect to the file share because it’s not secure. This share requires the obsolete SMB1 protocol, which is unsafe and could expose your system to attack. Your system requires SMB2 or higher.

Эта общая папка работает по устаревшему протоколу SMB1, который небезопасен и может подвергнуть вашу систему риску атаки. Вашей системе необходимо использовать SMB2 или более позднюю версию

При этом соседние устройства SMB могут не отображаться в сетевом окружении и при открытии сетевых папок по UNC пути может появляться ошибка 0x80070035.

Сообщение об ошибки явно указывает, что сетевая папка поддерживает только SMBv1 для доступа к файлам. В этом случае нужно попытаться перенастроить удаленное SMB устройство для поддержки как минимум SMBv2 (правильный и безопасный путь).

Если сетевые папки раздает Samba сервер на Linux, вы можете указать минимально поддерживаемую версию SMB в файле smb.conf так:

[global]
server min protocol = SMB2_10
client max protocol = SMB3
client min protocol = SMB2_10
encrypt passwords = true
restrict anonymous = 2

В Windows 7/Windows Server 2008 R2 вы можете отключить SMBv1 и разрешить SMBv2 так через реестр:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 –Force

В Windows 8.1 отключите SMBv1, разрешите SMBv2 и SMBv3 и проверьте что для вашего сетевого подключения используется частный или доменный профиль:

Disable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol"
Set-SmbServerConfiguration –EnableSMB2Protocol $true

Если ваше сетевое устройство (NAS, Windows XP, Windows Server 2003), поддерживает только протокол SMB1, в Windows 10 вы можете включить отдельный компонент SMB1Protocol-Client. Но это не рекомендуется!!!

Если удаленное устройство требует использовать SMBv1 для подключения, и этот протокол отключен в вашем устройстве Windows, в Event Viewer появляется ошибка:

Log Name: Microsoft-Windows-SmbClient/Security
Source: Microsoft-Windows-SMBClient
Event ID: 32000
Description:  SMB1 negotiate response received from remote device when SMB1 cannot be negotiated by the local computer.

Запустите консоль PowerShell и проверьте, что SMB1Protocol-Client отключен (
State: Disabled
):

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

Включите поддержку протокола SMBv1 (потребуется перезагрузка):

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

powershell - Enable-WindowsOptionalFeature SMB1Protocol-Client

Также вы можете включить/отключить SMBv1 в Windows 10 и 11 из меню
optionalfeatures.exe
-> SMB 1.0/CIFS File Sharing Support –> SMB 1.0/CIFS Client.

включить клиент smbv1 в windows 11

В Windows 10 1709 и выше клиент SMBv1 автоматически удаляется, если он не использовался более 15 дней (за это отвечает компонент SMB 1.0/CIFS Automatic Removal).

В этом примере я включил только SMBv1 клиент. Не включайте компонент SMB1Protocol-Server, если ваш компьютер не используется устаревшими клиентами в качестве сервера для хранения общих папок.

После установке клиента SMBv1, вы должны без проблем подключиться к общей сетевой папке или принтеру. Однако, нужно понимать, что использование данного обходного решения не рекомендовано, т.к. подвергает снижает уровень безопасности.

Нет доступа к сетевой папке, у вас нет прав доступа

При подключении к сетевой папке на другом компьютере может появится ошибка:

Нет доступа к \\ComputerName\Share. Возможно у вас нет прав на использование этого сетевого ресурса. Обратитесь к системному администратору этого сервера для получения соответствующих прав доступа.
Network Error
Windows cannot access \\PC12\Share
You do not have permissions to access \\PC12\Share. Contact your network administrator to request access.

windows не открывается сетевая папка нет доступа

При появлении это ошибки нужно:

  1. Убедиться, что пользователю, под которым вы подключаетесь к сетевой папке, предоставлены права доступа на сервере. Откройте свойства общей папке на сервере и убедитесь что у вашего пользователя есть права доступа.
    Проверьте разрешения сетевой шары на сервере с помощью PowerShell:
    Get-SmbShareAccess -Name "tools"

    Затем проверьте NTFS разрешения:
    get-acl C:\tools\ |fl

    проверьте разрешения доступа на сетевую папку с помощью powershell
    Если нужно, отредактируйте разрешения в свойствах папки.
  2. Проверьте, что вы используете правильные имя пользователя и пароль для доступа к сетевой папки. Если имя и пароль не запрашиваются, попробуйте удалить сохраненные пароли для доступа к сетевой папке в диспетчере учетных записей Windows. Выполните команду
    rundll32.exe keymgr.dll, KRShowKeyMgr
    и удалите сохраненные учетные данные для доступа к сетевой папке.очистити сохраненные пароли для доступа к сетевым папкам
    При следующем подключении к сетевой папки появится запрос имени и пароля. Укажите имя пользователя для доступа к папке. Можете сохранить его в Credential Manager или добавить вручную.

Дополнительные способы проверки доступа к сетевой папке в Windows

В этом разделе указаны дополнительные способы диагностики при проблема с открытием сетевые папок в Windows:

Как включить SMB 1 в WindowsПротокол SMBv1 в последних версиях Windows по умолчанию отключен, однако в некоторых случаях может потребоваться его включение: как правило, речь идёт о необходимости подключения устаревшего оборудования и компьютеров.

В этой инструкции подробно о том, как включить протокол SMB1 на сервере и клиенте в Windows 11 и Windows 10. Примечание: указанный протокол в настоящее время считается небезопасным и без необходимости включать его не следует.

Включение компонента SMB 1.0

Прежде всего, в новых версиях Windows 11/10 потребуется включить отключенный по умолчанию компонент для поддержки SMBv1, для этого:

  1. Нажмите клавиши Win+R на клавиатуре, введите appwiz.cpl и нажмите Enter.
  2. В открывшемся окне в списке слева нажмите «Включение или отключение компонентов Windows». Включение или отключение компонентов Windows
  3. Включите компонент «Поддержка общего доступа к файлам SMB 1.0/CIFS» и нажмите «Ок». Включение компонентов SMB 1 в Windows 11 и Windows 10
  4. Дождитесь установки необходимых компонентов и перезагрузите компьютер.

Также вы можете включить компонент с помощью команды PowerShell:

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

После того, как компонент был установлен, может потребоваться включить использование протокола SMB1 для сервера или клиента — в Windows 11 и 10 это выполняется отдельно.

Проверка и включение SMB 1 на клиенте

Для проверки состояния клиентской части протокола SMB1 в Windows 11 и Windows 10 используйте PowerShell или командную строку, запущенную от имени администратора и следующую команду:

sc.exe qc lanmanworkstation

Если в разделе «Зависимости» отсутствует запись mrxsmb10, протокол 1-й версии отключен. Для его включения можно использовать команды:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto

Включить клиент SMB 1 в командной строке

То же самое можно проделать в редакторе реестра:

  1. В разделе
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10

    для параметра Start установить значение 2

  2. В разделе
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation

    изменить параметр DependOnService, добавив в него строку mrxsmb10 Включить клиент SMB 1 в реестре

После внесения изменений в реестре, перезагрузите компьютер.

На сервере

Чтобы проверить состояние сервера SMB1 в Windows 11/10 используйте команду

PowerShell Get-SmbServerConfiguration | Select EnableSMB1Protocol

Если в результате вы увидите значение True, использование протокола включено.

Получить информацию о конфигурации SMB 1 сервера в PowerShell

При значении False вы можете включить его с помощью команды:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

Для включения SMBv1 на сервере в реестре, измените значение параметра DWORD с именем SMB1 на 1 в разделе реестра

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Включить сервер SMB 1 в реестре

Внимание: по умолчанию параметр отсутствует в этом разделе реестра (при его отсутствии считается, что серверный протокол SMB1 включен). При необходимости вы можете его создать.

Внеся изменения в реестр, выполните перезагрузку компьютера.

Настройка SMB на Windows 10/11 (чтобы файлы с ПК были доступны при подключении с других устройств)

Григорий Ревуцкий

Вернуться в Основной раздел.
Вернуться в Альтернативный FAQ по Dune HD.

Содержание:

  • Способ №1. Настройка общего доступа
  • Способ №2. Использование протокола SMB1

Способ №1. Настройка общего доступа

Вернуться к содержанию.

Прежде всего, перед тем как использовать протокол SMB на Windows 10, вы должны узнать имя устройства или его IP — адрес.

1. Введите в командной строке cmd и нажмите ENTER.

2. Чтобы узнать свой IP — адрес, в появившемся окне введите команду ipconfig, нажмите Enter и обратите внимание на строчку IPv4-адрес.

3. Щелкаем правой кнопкой мыши по ярлыку Компьютер и нажимаем Свойства.

4. Найдите имя вашего компьютера в Панели управления.

5. Нажмите на «Изменить параметры, далее, выбираем вкладку «Имя компьютера» — Изменить. Меняем имя компьютера и нажимаем «ОК».

6. Открываем панель управления (открываете меню Пуск, вводите в поиске «панель управления» и нажимаете ENTER).

7. Нажмите на пункт Учётные записи пользователей.

8. Выберете пункт «Внести изменения в мою учетную запись в настройках ПК».

9. Создайте учетную запись общего доступа.

10. Теперь, для предоставления общего доступа (расшаривания) к нужной вам папке, вы можете использовать имя папки по умолчанию, либо же другое имя.

Способ №2. Использование SMB1

Вернуться к содержанию.

Из-за политики безопасноти, поддержка SMB1, в Windows 10, по-умолчанию, отключена, однако, данный протокол подключения, является довольно удобным в использовании, так как, не требует обязательного использования пароля (в своей сети, на мой взгляд, он только мешает) при использовании через гостевой доступ. К тому же, до сих пор, с этим протоколом совместимо большее количество устройств.

К счастью, включить SMB1 несложно: в Windows 10 существует отдельный модуль, позволяющий подключать различные компоненты.

1. Откройте «Пуск» и перейдите в меню «Параметры».

2. Выберете, в данном разделе, пункт «Приложения».

3. В категории «Приложения и возможности» переместитесь в самый низ и нажмите «Программы и компоненты».

4. В левой панели нажмите на «Включение и отключение компонентов Windows».

5. Отыщите в меню директорию «Поддержка общего доступа к файлам SMB 1.0/CIFS», разверните ее и активируйте все подпапки, включая и главную категорию. Далее, нажмите ОК.

Важно: сервер нужен, чтобы ваши расшаренные папки отображались при подключении с другого устройства, например, приставки. Клиент же нужен, чтобы компьютер видел приставку (на котрой тоже должен быть запущен smb-server). Поэтому, ставим галочку и там, и там.

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

После перезагрузки, на вкладке «Сеть» – «Компьютер» должны появится все доступные устройства в вашей сети.

На Windows 11, в категории Сеть и интернет, в дополнительных параметрах общего доступа, не забудьте отключить общий доступ с парольной защитой (по-умолчанию, он включен).

После активации SMB1, для подключения с других устройств , например, tv box, вам останется просто расшарить нужные папки (например, папки с фильмами). Для этого, щелкните правой клавишей мыши на папке, которую вы хотите сделать общей, в свойствах, выберите «разрешить общий доступ к папке», а далее, нужно выбрать какие разрешения будут у гостя: только чтение или запись-чтение. Я, как правило, использую запись — чтение, чтобы иметь возможность удалить с жёсткого диска на компьютере просмотренный фильм, прямо с приставки.

В верхней строке, выберите Все или Гость и надмите Добавить, тем самым, вы добавите их в список пользователей. Там же выставляется и уровень разрешений.

Вернуться к содержанию.

Перейти в Основной раздел.
Перейти в Альтернативный FAQ по Dune HD.

Telegram — канал по Dune HD

Время на прочтение
14 мин

Количество просмотров 198K

Для чего в большинстве случаев в организации нужен сервер? Active Directory, RDS, сервер печати и еще куча мелких и крупных сервисов. Самая заметная всем роль, пожалуй, это файловый сервер. С ним люди, в отличие, от других ролей работают осознаннее всего. Они запоминают в какой папке что лежит, где находятся сканы документов, где их отчеты, где факсы, где общая папка, в которой можно все, куда доступ только одному из отделов, куда другому, а о некоторых они вообще не догадываются

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

Доступ к общим ресурсам на сервере осуществляется, как все прекрасно знают, по протоколу SMB уже 3.0. Доступ по сети к папкам можно ограничивать SMB и NTFS-разрешениями. SMB-разрешения работают только при доступе к общей папке по сети и не имеют никакого влияния на доступность той или иной папки локально. NTFS-разрешения работают, как по сети, так и локально, обеспечивая намного больше гибкости в создании прав доступа. SMB и NTFS разрешения работают не отдельно, а дополняют друг друга, по принципу наибольшего ограничения прав.

Для того, чтобы отдать папку в общий доступ в Server 2012 в группе SMB Share Cmdlets, появился командлет New-SMBShare. На примере этого командлета мы увидим все возможности, доступные при создании общей папки, кроме кластерных конфигураций (это отдельная большая тема).

Создание новой общей папки выглядит очень просто:

net share homefolder=s:\ivanivanov /grant:"admin",full /grant:"folderowner",change /grant:"manager",read /cache:programs /remark:"Ivanov"

или

new-smbshare homefolder s:\ivanivanov –cachingmode programs –fullaccess admin –changeaccess folderowner –readaccess manager –noaccess all –folderenumerationmode accessbased -description "Ivanov"

Разбираемся:

-name

имя общей папки в сети, может отличаться от имени папки на локальном компьютере. Имеет ограничение в 80 символов, нельзя использовать имена pipe и mailslot.

-path

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

-cachingmode

настройка автономности файлов в общей папке.

Что такое автономный файл?

Автономный файл – это копия файла, находящегося на сервере. Эта копия находится на локальном компьютере и позволяет работать с файлом без подключения к серверу. При подключении изменения синхронизируются. Синхронизируются в обе стороны: если вы сделали изменения в своем автономном файле – при следующем подключении файл на сервере будет изменен; если кто-то сделал изменения на сервере – то ваша локальная копия будет изменена. Если изменения произошли в обоих файлах сразу – получаем ошибку синхронизации и придется выбирать, какую версию сохранить. Для совместной работы использовать эту возможность я бы не стал, но если для каждого пользователя наделать шар и ограничить доступ для других чтением, без возможности записи получаем следующие плюшки:

  • Работа не зависит от сети – может сгореть свитч, может перезагружаться сервер, может оборваться провод или выключиться точка доступа – пользователь работает со своей копией, не замечая, что у вас там какая-то авария, при восстановлении сетевого подключения его работа уходит на сервер.
  • Пользователь может работать работу где угодно: на даче, в автобусе, в самолете – в тех местах, где подключение к VPN по каким-то причинам недоступно.
  • Если даже пользователь работает через VPN, но подключение или очень медленное, или постоянно обрывается – проще работать с автономной копией и синхронизировать изменения, чем пытаться что-то сделать на сервере.
  • Пользователь сам может выбирать что и когда синхронизировать, если дать ему такую возможность.

Принимает следующие значения:

  • none – файлы недоступны автономно, для доступа к файлам нужен доступ к серверу
  • manual – пользователи сами выбирают файлы, которые будут доступны автономно
  • programs – все в папке доступно автономно (документы и программы (файлы с расширением *.exe, *.dll))
  • documents – документы доступны, программы нет
  • branchcache – кэширование вместо локального компьютера пользователя происходит на серверах BranchCache, пользователи сами выбирают автономные файлы

-noaccess, -readaccess, -changeaccess, -fullaccess

разрешения общего доступа (share permissions).

У этих разрешений есть одно большое преимущество – они очень простые.

-noaccess secretary,steward – секретарше и завхозу нечего делать в общих папках бухгалтерии
-readaccess auditor – аудитор, проверяющий работу бухгалтерии может видеть имена файлов и подпапок в общей папке, открывать файлы для чтения, запускать программы.
-changeaccess accountant – бухгалтеры в своей общей папке могут создавать файлы и подпапки, изменять существующие файлы, удалять файлы и подпапки
-fullaccess admin – fullaccess это readaccess+changeaccess плюс возможность изменять разрешения.

При создании общей папки автоматически применяется наиболее ограничивающее правило – группе «Все» дается право на чтение.

Эти разрешения применяются только для пользователей, получивших доступ к общей папке по сети. При локальном входе в систему, например в случае терминального сервера, и секретарша и завхоз увидят в бухгалтерии все, что пожелают. Это исправляется NTFS-разрешениями. SMB-разрешения применяются ко всем файлам и папкам на общем ресурсе. Более тонкая настройка прав доступа осуществляется также NTFS-разрешениями.

-concurrentuserlimit

c помощью этого параметра можно ограничить максимальное число подключений к папке общего доступа. В принципе, также можно использовать для ограничения доступа к папке, дополняя NTFS-разрешения, только надо быть точно уверенным в необходимом количестве подключений.

-description

описание общего ресурса, которое видно в сетевом окружении. Описание – это очень хорошая вещь, которой многие пренебрегают.

-encryptdata

шифрование

В SMB до версии 3.0 единственным способом защитить трафик от файлового сервера клиенту был VPN. Как его реализовать зависело полностью от предпочтений системного администратора: SSL, PPTP, IPSEC-туннели или еще что-нибудь. В Server 2012 шифрование работает из коробки, в обычной локальной сети или через недоверенные сети, не требуя никаких специальных инфраструктурных решений. Его можно включить как для всего сервера, так и для отдельных общих папок. Алгоритмом шифрования в SMB 3.0 является AES-CCM, алгоритмом хеширования вместо HMAC-SHA256 стал AES-CMAC. Хорошая новость в том, что SMB 3.0 поддерживает аппаратный AES (AES-NI), плохая новость в том, что Россия не поддерживает AES-NI.

Чем грозит включение шифрования? Тем, что работать с зашифрованными общими папками смогут только клиенты, поддерживающие SMB 3.0, то есть Windows 8. Причина опять же, максимально допустимое ограничение прав пользователей. Предполагается, что администратор знает, что он делает и при необходимости даст доступ для клиентов с другой версией SMB. Но так как SMB 3.0 использует новые алгоритмы шифрования и хеширования трафик клиентов с другой версией SMB шифроваться не будет, нужен VPN. Пустить всех клиентов на файловый сервер с включенным шифрованием поможет команда

set-smbserverconfiguration –rejectunencryptedaccess $false

В конфигурации по умолчанию (запрещен нешифрованный трафик к зашифрованным общим папкам), при попытке доступа к папке клиента с версией SMB ниже 3.0 на клиенте мы получим «Ошибку доступа». На сервере в журнал Microsoft-Windows-SmbServer/Operational будет добавлено событие 1003, в котором можно будет найти IP-адрес клиента, пытавшегося получить доступ.

Шифрование SMB и EFS – это разные вещи, никак не связанные друг с другом, то есть его можно применять на FAT и ReFS томах.

-folderenumerationmode

Это Access-Based Enumeration. С включенным Access-Based Enumeration пользователи, не имеющие доступа к общей папке, просто не увидят ее на файловом сервере и будет меньше вопросов, почему у меня нет доступа к той или этой папке. Пользователь видит свои доступные папки и не пытается лезть в чужие дела. По умолчанию – выключено.

  • accessbased – включить
  • unrestricted – выключить

-temporary

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

NTFS-разрешения

С помощью NTFS-разрешений мы можем более детально разграничить права в папке. Можем запретить определенной группе изменять определенный файл, оставив возможность редактирования всего основного; в одной и той же папке одна группа пользователей может иметь права изменения одного файла и не сможет просматривать другие файлы, редактируемые другой группой пользователей и наоборот. Короче говоря, NTFS-разрешения позволяют нам создать очень гибкую систему доступа, главное самому потом в ней не запутаться. К тому же NTFS-разрешения работают, как при доступе к папке по сети, дополняя разрешения общего доступа, так и при локальном доступе к файлам и папкам.

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

Основные разрешения

Полный доступ (fullcontrol) – полный доступ к папке или файлу, с возможностью изменять права доступа и правила аудита к папкам и файлам

Изменение (modify) – право чтения, изменения, просмотра содержимого папки, удаления папок/файлов и запуска выполняемых файлов. Включает в себя Чтение и выполнение (readandexecute), Запись (write) и Удаление (delete).

Чтение и выполнение (readandexecute) – право открывать папки и файлы для чтения, без возможности записи. Также возможен запуск выполняемых файлов.

Список содержимого папки (listdirectory) – право просматривать содержимое папки

Чтение (read) – право открывать папки и файлы для чтения, без возможности записи. Включает в себя Содержание папки / Чтение данных (readdata), Чтение атрибутов (readattributes), Чтение дополнительных атрибутов (readextendedattributes) и Чтение разрешений (readpermissions)

Запись (write) – право создавать папки и файлы, модифицировать файлы. Включает в себя Создание файлов / Запись данных (writedata), Создание папок / Дозапись данных (appenddata), Запись атрибутов (writeattributes) и Запись дополнительных атрибутов (writeextendedattributes)

Дополнительные разрешения

Я ставил на папку только 1 из 14 разрешений и смотрел, что получается. В реальном мире, в большинстве случаев хватает основных разрешений, но мне было интересно поведение папок и файлов с максимально урезанными правами.

Траверс папок / выполнение файлов (traverse) – право запускать и читать файлы, независимо от прав доступа к папке. Доступа к папке у пользователя не будет, (что находится в папке останется загадкой) но файлы в папке будут доступны по прямой ссылке (полный, относительный или UNC-путь). Можно поставить на папку Траверс папок, а на файл любые другие разрешения, которые нужны пользователю для работы. Создавать и удалять файлы в папке у пользователя не получится.

Содержание папки / Чтение данных (readdata) – право просматривать содержимое папки без возможности изменения. Запускать и открывать файлы в просматриваемой папке нельзя

Чтение атрибутов (readattributes) – право просматривать атрибуты (FileAttributes) папки или файла.
Просматривать содержимое папки или файлов или изменить какие-либо атрибуты нельзя.

Чтение дополнительных атрибутов (readextendedattributes) – право просматривать дополнительные атрибуты папки или файла.

Единственное, что я смог найти по дополнительным атрибутам – это то, что они используются для обеспечения обратной совместимости с приложениями OS/2. (Windows Internals, Part 2: Covering Windows Server 2008 R2 and Windows 7). Больше мне о них ничего не известно.

Создание файлов / запись данных (writedata) – дает пользователю возможность создавать файлы в папке, в которую у него нет доступа. Можно копировать файлы в папку и создавать в папке новые файлы. Нельзя просматривать содержимое папки, создавать новые папки и изменять уже существующие файлы. Пользователь не сможет изменить какой-либо файл, даже если он является владельцем этого файла – только создавать.

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

Проверка

C созданием подпапок все понятно:

ni c:\testperms\testappend –itemtype directory

отработает, как ожидается — создаст в недоступной для просмотра пользователем папке testperms подпапку testappend. Попробуем добавить строку в конец файла – сэмулируем ведение какого-нибудь лога.

newevent >> c:\testperms\user.log
Отказано в доступе.

Хм… В CMD не работает. А если так.

ac c:\testperms\user.log newevent
ac : Отказано в доступе по пути "C:\testperms\user.log".

А по конвейеру?

"newevent" | out-file c:\testperms\user.log -append
out-file : Отказано в доступе по пути "C:\testperms\user.log".

И так не работает.

Начинаем сеанс черной магии: используем класс File, метод AppendText. Получаем объект лога.

$log = [io.file]::appendtext("c:\testperms\user.log")
Исключение при вызове "AppendText" с "1" аргументами: "Отказано в доступе по пути "c:\testperms\user.log"."

Думаю, что AppendAllText пробовать уже не стоит

$log = [io.file]::appendalltext("c:\testperms\user.log","newevent")
Исключение при вызове "AppendAllText" с "2" аргументами: "Отказано в доступе по пути "c:\testperms\user.log"."

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

Нам нужно пересмотреть концепцию: давайте будем не получать объект лога, а создадим новый, в котором зададим все интересующие нас параметры. Нам нужно что-то где мы можем явно указать права доступа. Нам нужен FileStream, а конкретнее нам поможет FileStream Constructor (String, FileMode, FileSystemRights, FileShare, Int32, FileOptions). Нужны следующие параметры:

  • Путь к файлу – понятно
  • Как открывать файл – открыть файл и найти конец файла
  • Права доступа к файлу – дозапись данных
  • Доступ для других объектов FileStream – не нужен
  • Размер буфера – по умолчанию 8 байт
  • Дополнительные опции — нет

Получается примерно так:

$log = new-object io.filestream("c:\testperms\user.log",[io.filemode]::append,[security.accesscontrol.filesystemrights]::appenddata,[io.fileshare]::none,8,[io.fileoptions]::none)

Работает! Объект лога мы создали, попробуем туда что-нибудь записать. Метод FileStream.Write принимает входящие значения в байтах. Перегоняем событие, которое мы хотим записать, в байты – класс Encoding, метод GetEncoding (нам не нужны кракозябры на выходе) и GetBytes (собственно, конвертирование)

$event = "Произошло новое событие."
$eventbytes = [text.encoding]::getencoding("windows-1251").getbytes($event)

Параметры FileStream.Write:
Что писать; откуда начинать писать; количество байт, которые нужно записать
Записываем:

$log.write($eventbytes,0,$eventbytes.count)

Проверяем.

gc c:\testperms\user.log
gc : Отказано в доступе по пути "C:\testperms\user.log ".

Все нормально, у пользователя нет прав на просмотр написанного. Перелогиниваемся под администратором.

gc c:\testperms\user.log
Произошло новое событие.

Все работает.

Папке, в которой находится файл кроме разрешения Создание папок / дозапись данных должно быть еще выдано разрешение Содержание папки / Чтение данных. На файл хватает только Создание папок / дозапись данных с отключенным наследованием. Полностью оградить пользователя (а пользователем может быть и злоумышленник) от файлов, в которые он должен что-то писать не получится, но с другой стороны, кроме списка файлов в папке, пользователь ничего не увидит и не сможет сделать.

Вывод из этого простой: в батниках реализовать безопасное логирование чего-либо не получится, PowerShell спасает умение работать c .NET объектами.

Запись атрибутов (writeattributes) – разрешаем пользователю изменять атрибуты файла или папки. Вроде все просто. Но вот только что ответить на вопрос: «Фотографии моих котиков занимают почти все место в моем профиле и у меня не остается места для деловой переписки. Я бы хотел сжать папку с котиками, но у меня требуют прав администратора. Вы же говорили, что у меня есть право менять атрибуты папок. Это же атрибут? Почему я не могу его поменять?»

Да, пользователю с правом записи атрибутов можно менять почти все видимые атрибуты файлов и папок, кроме атрибутов сжатия и шифрования. Технически, пользователю дается право выполнять функцию SetFileAttributes. А сжатие файлов выполняется функцией DeviceIOControl, которой нужно передать параметр FSCTL_SET_COMPRESSION и сжатие файлов является далеко не единственной ее работой. С помощью этой функции мы можем управлять всеми устройствами и их ресурсами в системе и, наверное, дать пользователю это право на выполнение этой функции означает сделать его администратором.

С шифрованием история похожа: функция EncryptFile, которая как раз и отвечает за шифрование, требует, чтобы у пользователя были права Содержание папки / Чтение данных, Создание файлов / Запись данных, Чтение атрибутов, Запись атрибутов и Синхронизация на объект. Без них ничего не получится.

Запись расширенных атрибутов (writextendedattributes). Ну это тех, которые используются для обратной совместимости с приложениями OS/2, ага. Ну, а еще в расширенные атрибуты файла C:\Windows\system32\services.exe с недавних пор начали записывать троянов (ZeroAccess.C). Может быть стоит их отключать на самом верхнем уровне? На этот вопрос я не могу дать ответ, теоретически – может быть и стоит, практически в продакшене – я не пробовал.

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

Допустим, есть каталог товаров, в который пользователи заносят данные. Есть родительская папка Catalog, внутри подпапки по алфавиту, от A до Z, внутри них какие-нибудь наименования. Наименования меняются каждый день, что-то добавляется, что-то изменяется, что-то устаревает и устаревшую информацию нужно удалять. Но будет не очень хорошо, если кто-нибудь по запарке или злому умыслу грохнет весь каталог K, что очень возможно, если у пользователей есть право Удаление. Если забрать у пользователей право Удаление, то администратору можно смело менять работу, потому что он весь день будет выполнять запросы на удаление того или иного наименования.

Вот тут и включается Удаление подпапок и файлов. На всех буквах алфавита отключается наследование и пользователям добавляется право Удаление подпапок и файлов. В итоге, в папке catalog пользователи не смогут удалить ни одну букву, но внутри букв могут удалять все, что угодно.

Удаление (delete). Здесь все просто. Удаление — это удаление. Не работает без права Чтение.

Чтение разрешений (readpermissions) дает право пользователю просматривать разрешения на папке или файле. Нет права – пользователь не видит разрешения на вкладке «Безопасность»

Смена разрешений (changepermissions) – разрешает пользователю менять разрешения, по сути делает пользователя администратором папки. Можно использовать, например, для делегирования полномочий техподдержке. Без права чтения разрешений не имеет никакого смысла. Смена разрешений не подразумевает смену владельца папки.

Смена владельца (takeownership) – для начала, кто такой владелец. Владелец – это пользователь, создавший файл или папку.

Особенностью владельца является то, что у него есть полный доступ к созданной папке, он может раздавать разрешения на свою созданную папку, но что важнее – никто не может лишить владельца права изменять разрешения на его папку или файл. Если Вася создал папку, дал полный доступ Пете, а Петя зашел и грохнул доступ пользователей к папке вообще и Васи в частности, то Вася без особого труда может восстановить статус-кво, так как он является владельцем папки. Изменить владельца папки Петя не сможет, даже если у него есть разрешение Смена владельца. Более того, даже Вася не может изменить владельца, несмотря на то, что папку создал он. Право Смена владельца относится только к группе Администраторы или Администраторы домена.

Но если Петя внутри Васиной папки создал файл и не дал Васе доступа к нему, то Васе остается только думать и гадать, что же внутри этого файла такого секретного. Вася не сможет изменить права доступа к файлу, потому что владельцем файла является Петя. Также Вася не сможет изменить владельца файла – изменение владельца подконтейнеров и объектов также является привилегией группы Администраторы, к которой Вася не относится. Единственный оставшийся у Васи вариант – смотреть на Петин файл внутри своей папки.

Управляем

В CMD для управления разрешениями используется хорошо всем известная icacls. В PowerShell управление NTFS-разрешениями выглядит примерно так:

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

$acl = get-acl c:\testperms

Соорудить строку с правами с помощью класса System.Security.AccessControl.FileSystemAccessRule. Можем задать следующие параметры:

  • группа/имя пользователя – для кого делаем ACL
  • разрешение – ACE (принимает значения, указанные в посте)
  • применяется к – в GUI это выпадающий список в дополнительных параметрах безопасности. На самом деле принимает всего 3 значения: none (только к этой папке), containerinherit (применяется ко всем подпапкам), objectinherit (применяется ко всем файлам). Значения можно комбинировать.
  • применять эти разрешения к объектам и контейнерам только внутри этого контейнера (чекбокс в GUI) – также 3 значения: none (флажок снят), inheritonly (ACE применяется только к выбранному типу объекта), nopropagateinherit (применять разрешения только внутри этого контейнера).
  • правило – разрешить (allow) или запретить (deny)

Строка с правами по умолчанию будет выглядеть так:

$permission = “contoso.com\admin”,”fullcontrol”,”containerinherit,objectinherit”,”none”,”allow”

Сделать новую ACE с определенными выше разрешениями

$ace = new-object security.accesscontrol.filesystemaccessrule $permission

И применить свежесозданную ACE к объекту

$acl.setaccessrule($ace)
$acl | set-acl c:\testperms

Применяем на практике

Вооружившись знаниями о SMB и NTFS разрешениях, комбинируя их можно создавать правила доступа абсолютно любой сложности. Несколько примеров:

Тип SMB-разрешения NTFS-разрешения
Папка для всех (Public) Пользователи – Чтение/запись Пользователи – Изменение
Черный ящик. Пользователи скидывают конфиденциальные отчеты, предложения, кляузы – руководство читает. Пользователи – Чтение/запись
Руководство – Чтение/запись
Пользователи – Запись, применяется Только для этой папки. Предполагается, что запись файла в эту папку – билет в один конец, так как удобного способа редактирования без права Просмотр содержимого папки сохраненных в этой папке файлов не существует (удобного для пользователей способа записи в такую папку, кстати, тоже не существует). А просмотр нарушает конфиденциальность.

Руководство – Изменение.

Приложения Пользователи – Чтение Пользователи – Чтение, Чтение и выполнение, Просмотр содержимого папки.

Естественно, некоторые приложения могут требовать дополнительных прав для своей работы. Но в общем случае, например, хранение системных утилит для диагностики (того же SysInternals Suite) этого вполне хватает.

Профили пользователей Каждому пользователю – Чтение/запись на его папку Каждому пользователю – Изменение на его папку.

Разрешения в Windows – противоречивая штука. С одной стороны – основные разрешения довольно просты и покрывают 90% случаев. Но когда начинает требоваться более тонкая настройка: разные группы пользователей, одна папка, требования безопасности к общим папкам – то разобраться с дополнительными разрешениями, наследованиями и владельцами бывает довольно сложно.

Надеюсь, я не запутал никого еще больше.

Использован материал из:
MSDN
Technet

Всем привет! Сегодня столкнулся с такой проблемой. При построении локальной сети с двумя компьютерами первый (Windows 10) наотрез отказывается видеть другой комп (Windows 7). Все настройки я произвел правильно и открыл общий доступ. Но как потом оказалось, вся проблема в специальном сетевом протоколе SMB 1. Дело в том, что это старый протокол, который работает на олдскульных ОС. И он есть в десятке, но на последних обновлениях операционной системы Microsoft решила его отключить (во имя безопасности).

SMB Windows 10: настройка и как включить SMB1 и SMB2

Симптомы достаточно простые. Вы выполнили все нужные настройки, заходите в раздел сети, а там ничего кроме вашего маршрутизатора не отображается. Бывает такое, что компьютер вы видите, и даже можете на него зайти, но вот при попытке открыть расшаренную папку можно лицезреть вот такое вот сообщение:

«Вы не можете подключиться к общей папке, так как она небезопасна. Эта общая папка работает по устаревшему протоколу SMB1, который не безопасен и может подвергнуть вашу систему риску атаки.»

SMB Windows 10: настройка и как включить SMB1 и SMB2

Может быть еще вот такой текст ошибки: «Не удалось выполнить сопоставление сетевого диска из-за следующей ошибки». Ну и дальше все в том же духе.

SMB Windows 10: настройка и как включить SMB1 и SMB2

Кстати, некоторые старые роутеры, также исползают устаревший SMB1 протокол – поэтому если у вас еще наблюдается проблема с доступом к жесткому диску или флешке, которые подключены к роутеру, то дальнейшие инструкции вам также будут полезны. Что мы будем делать? – нам нужно просто включить протокол SMBv1, и проблема будет решена. Поехали!

Содержание

  1. Включения SMB1 на Windows 10
  2. Проверка настроек
  3. Включение SMB2
  4. Ничего не помогло, папку или компьютер не видно, ничего не работает
  5. Задать вопрос автору статьи

Открываем меню «Пуск» и в поисковой строке вводим «Включение и отключение компонентов Windows». Можете просто ввести не полное слово «компонент». Вы также можете зайти туда через «Панель управления» (нажимаем кнопки «Win» и «R» – вводим команду: control). Далее заходим в «Программы и компоненты» и слева выбираем тот же самый пункт с отключением и включением компонентов.

SMB Windows 10: настройка и как включить SMB1 и SMB2

Находим раздел с упоминанием нашего любимого протокола и включаем в папке все галочки. В самом конце нажимаем «ОК», чтобы изменения были приняты.

SMB Windows 10: настройка и как включить SMB1 и SMB2

После этого SMB-1 в Windows 10 будет включено, и проблемы с сетью возникнуть не должны. Я бы на всякий случай перезагрузил компьютер. Но если вы все равно не видите какой-то компьютер в сети, или есть проблемы с доступом, смотрим следующую главу.

Проверка настроек

Нам нужно посмотреть настройки общего доступа и есть ли они у вас вообще.

  1. В «Пуске» нажмите по шестеренке.

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Заходим в раздел «Сеть и Интернет».

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Тут же на первой странице (вкладка «Состояние») откройте «Свойства» того подключения, которое вы используете для коннекта с роутером. Если вы подключены по кабелю, то выбираем «Ethernet», если вы подключены по «Wi-Fi», то выбираема второе подключение. На старых версиях нужно открыть ссылку «Изменить свойства подключения».

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Убедитесь, чтобы тип сетевого профиля был как «Частный». Вернитесь обратно, нажав по стрелки влево.

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Пролистните чуть ниже и откройте «Центр управления сетями…». Этот раздел может также называться как «Параметры общего доступа». Поэтому можете ориентироваться по значку или найти раздел со словами «Общий доступ».

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Слева выбираем третий пункт для изменения параметров.

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Так как мы уже изменили текущий профиль на частный, то открываем его.

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Теперь открываем раздел «Все сети» и включаем сетевое обнаружение для папок. Шифрование должно стоять в нужной позиции, но если это не так, то включите 128-и битное шифрование. Обязательно отключите параметр, который будет запрашивать у вас пароль при заходе в общую папку или при запросе к этому компьютеру.

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. В самом конце сохраняем изменения.

Включение SMB2

Сначала давайте проверим статус SMBv2. Для это откройте «PowerShell» с правами админа, нажав ПКМ по кнопке «Пуск».

SMB Windows 10: настройка и как включить SMB1 и SMB2

Введите команду:

Get-SmbServerConfiguration | Select EnableSMB2Protocol

14

Если вы видите значение «True», то значит протокол работает. Если стоит значение «False», то включить параметр можно также с помощью команды:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

ПРИМЕЧАНИЕ! Таким же образом можно включить или выключить SMB1 – просто замените в команде одну цифру (2 на 1).

Далее кликаем по «Y» и на «Enter», чтобы подтвердить свои действия. Если же вы хотите отключить SMB2, то вместо «true» ставим «false». В конце не забываем перезагрузить систему.

Ничего не помогло, папку или компьютер не видно, ничего не работает

Если проблема остается, то есть несколько вариантов – от неправильных сетевых настроек до проблем с некоторыми службами в самой операционной системе. Все решения я уже описал в отдельной статье, и с ней вы можете ознакомиться по этой ссылке. То, что описано там, должно помочь.

  • Доступ к серверу linux из windows
  • Доступ к биос из windows 10
  • Доступ к разделам линукс из windows
  • Дополнительные средства обработки сигнала в windows 10 что это
  • Доступ к windows каталогу из linux