4

У меня есть 3 группы Electricalgrp, Plumbinggrp и Payrollgrp, которым нужен доступ к подпапкам в сетевой папке с именем Data.

Общая папка Данные и подпапки:

 Data
  |
  +--Electrical
  +--Plumbing
  +--Payroll

По сути, это то, что я пытаюсь сделать:

  1. Общий доступ к данным ограничен только для чтения. Никому не нужно создавать файлы или папки в корневом каталоге общего доступа к данным .
  2. Electricalgrp должен иметь возможность создавать, удалять и изменять папки и файлы в папке Electrical, но не должен удалять папку Electrical .
  3. Plumbinggrp должен иметь возможность создавать, удалять и изменять папки и файлы в папке Plumbing, но не иметь возможности удалять папку Plumbing .
  4. Payrollgrp должен иметь возможность создавать, удалять и изменять папки и файлы в папке Payroll, но не должен удалять папку Payroll .

Я пробовал следующие разрешения общего ресурса и настройки безопасности NTFS:

Share              Permissions                    NTFS Security     Result

Data               Full control,Read,Change       Read              Works fine

Папки NTFS Security(отключенное наследование)

Folder        Group               NTFS Security                  Result

Electrical    Electricalgrp       Modify             NO GOOD, able to delete folder
Electrical    Plumbinggrp         Deny, Read         Works, denies access to folder
Electrical    Payrollgrp          Deny, Read         Works, denies access to folder

Я проделал то же самое с двумя другими папками, я просто изменил команду deny и изменил ее на соответствующие группы.

Все отлично работает, кроме той части, которая не позволяет группе удалить основную папку, членом которой они являются. Как мне это предотвратить?

2 ответа2

1

Вы можете предоставить пользователям возможность изменять доступ к своим подпапкам «верхнего уровня», но запретить им удалять (и, следовательно, переименовывать) папку, применяя следующие два набора разрешений:

Для вашей папки данных:

  • Запретить наследование разрешений
  • Грант СИСТЕМЫ и Администраторы Полный контроль
  • Предоставьте всем своим пользователям следующие разрешения, указав, что они применяются к: Только этой папке:

    • Папка перемещения / Выполнить файл
    • Список папок / чтение данных
    • Читать атрибуты
    • Читать расширенные атрибуты
    • Разрешения на чтение

Эти разрешения разрешают всем пользователям доступ на чтение к папке «Данные». Хотя они могут видеть содержимое папки, они не могут открывать подпапки, если им не предоставлены дополнительные разрешения (ниже).

Для каждой подпапки «верхнего уровня»:

Предоставьте желаемую группу чтения / записи:

  • Измените разрешения, указав, что они применяются только к подпапке и файлам.
  • Следующие разрешения, указывающие, что они применяются к: Только эта папка:
    • Папка перемещения / Выполнить файл
    • Список папок / чтение данных
    • Читать атрибуты
    • Читать расширенные атрибуты
    • Создание файлов / запись данных
    • Создать папки / Добавить данные
    • Разрешения на чтение

Эти разрешения предоставляют избранным пользователям традиционные разрешения на изменение подпапки, за двумя исключениями, которые они НЕ МОГУТ 1) переименовать или 2) удалить подпапку.

Для дополнительного подхода включите перечисление на основе доступа (если ваша папка находится на Windows Server), и когда пользователи откроют папку «Данные», они смогут видеть только те подпапки, к которым им предоставлен дальнейший доступ.

1

Ваш ответ заключается в разрешениях "Наследовать только", которые применяются только к подпапкам и файлам, а не к самому родительскому контейнеру. как описано в SS64:

наследование

Inherited folder permissions are given as:

 OI - Object inherit    - This folder and files. (no inheritance to subfolders)
 CI - Container inherit - This folder and subfolders.
 IO - Inherit only      - The ACE does not apply to the current file/directory

These can also be combined as folllows:
 (OI)(CI)      This folder, subfolders, and files.
 (OI)(CI)(IO)  Subfolders and files only. <<<!!!
     (CI)(IO)  Subfolders only.
 (OI)    (IO)  Files only.

Запустите этот сценарий от имени администратора, обратите внимание, что если вы изменили разрешения для отдельных подпапок или папки «Данные», то лучше всего их удалить, если сценарий создаст папки:

@echo off

rem Define the 'Data' folder path, with/without quotation:
set DesFol="X:\Example Path\Data"
set DesFol=%DesFol:"=%

rem If groups are global (domain groups), set this value to domain BIOS name (e.g MYDOMAIN in MYDOMAIN\Electricalgrp), otherwise, leave it blank:
set Dom=

rem Creates or claims the access to the folder:
if exist "%DesFol%" (
 takeown /f "%DesFol%"
) else (
 md "%DesFol%"
)

rem Removes potential inheritance of "Everyone" access + makes sure Admins have full access to subfolders + makes :
icacls "%DesFol%" /inheritance:r /grant:r SYSTEM:(CI)(OI)F Administrators:(CI)(OI)F Users:R /q

rem Create 'Electrical' subfolder and inherit full access to "SUBFOLDERS AND FILES ONLY":
md "%DesFol%\Electrical"
icacls "%DesFol%\Electrical" /grant %Dom%\Electricalgrp:(X,GR,RC,RD,RA,REA,AD,WD) /q
icacls "%DesFol%\Electrical" /grant %Dom%\Electricalgrp:(CI)(OI)(IO)M /q

rem Create 'Plumbing' subfolder and inherit full access to "SUBFOLDERS AND FILES ONLY":
md "%DesFol%\Plumbing"
icacls "%DesFol%\Plumbing" /grant %Dom%\Plumbinggrp:(X,GR,RC,RD,RA,REA,AD,WD) /q
icacls "%DesFol%\Plumbing" /grant %Dom%\Plumbinggrp:(CI)(OI)(IO)M /q

rem Create 'Payroll' subfolder and inherit full access to "SUBFOLDERS AND FILES ONLY":
md "%DesFol%\Payroll"
icacls "%DesFol%\Payroll" /grant %Dom%\Payrollgrp:(X,GR,RC,RD,RA,REA,AD,WD) /q
icacls "%DesFol%\Payroll" /grant %Dom%\Payrollgrp:(CI)(OI)(IO)M /q

Обновить:

Если честно, сейчас это в основном решение, предоставленное Twisty, я только что написал сценарий. Таким образом, он / она - тот, кто дал правильный ответ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .