Skip to main content
Xsec

Active Directory multi-sites, network shares and user rights management

Published on 30 min read

Updated on

Part 2 of 3
In this series52 min read in total
  1. Installing a Windows Server with AD DS Role (Domain Controller)
  2. Active Directory multi-sites, network shares and user rights management
  3. Apply quota on network shared directories

This lab takes a freshly installed domain controller and turns it into a complete corporate directory: three sites, six departments, compartmentalised network shares, drives mounted automatically at logon, and profiles that follow the user from machine to machine.

Installing the AD DS role is the prerequisite and is covered in Installing a Windows Server with AD DS Role. We pick up right after the first reboot of the SDE.LOCAL domain controller.

SummaryWhat you will be able to do by the end
  • Translate a company org chart into organizational units, groups and accounts.
  • Apply the AGDLP model, the official Microsoft method for granting rights without ever putting a user directly on a folder.
  • Publish a hidden network share and secure it with explicit NTFS permissions.
  • Automatically mount the right network drives depending on the user’s site.
  • Move the home folder and the Windows profile onto the server.
  • Validate the whole configuration from a client joined to the domain.

The context: three sites, one directory

Active Directory multi-site topology Three connected sites in Chassignieu, Virieu and Blandin, each with a Windows server and its departments. ACTIVE DIRECTORY LABS MULTI-SITE TOPOLOGY 3 SITES · 1 DOMAIN Chassignieu HQ SRV-CHA AD DS · DOMAIN CONTROLLER DIR ADMIN TECH Virieu SRV-VIR WINDOWS SERVER ADMIN TECH Blandin SRV-BLA WINDOWS SERVER ADMIN TECH

The company has 3 sites, each with one Windows server:

  • SRV-CHA in Chassignieu, the headquarters, carrying the AD DS role and therefore acting as the domain controller.
  • SRV-VIR in Virieu, a file server.
  • SRV-BLA in Blandin, a file server.

Each site contains 2 departments, Administrative and Technical. The headquarters contains a third one, Management.

All 3 servers belong to the same SDE.LOCAL domain: there is a single directory, hence a single place to create accounts and groups. What stays local to each site is the data, not the identities.

DefinitionFile server, not domain controller

SRV-VIR and SRV-BLA are plain domain members. They host shares, but they store no copy of the directory. A user in Blandin therefore always authenticates against SRV-CHA, and reads their files on SRV-BLA.

Three requirements follow from this organization, and they drive everything else in this lab:

  1. Compartmentalise: a technician in Virieu must not see the Management folders, nor even know they exist.
  2. Share in common: some folders must stay reachable from all sites, from a single location.
  3. Make the user mobile: their documents and their desktop must follow them, whichever machine they log on to.

The first requirement is the tricky one. So before clicking anywhere in the console, we need the rule that decides who reaches what.

The method: the AGDLP model

The natural temptation is to put a user straight onto a folder: right-click, Security, Add, PDG, Full Control. It works on day one and becomes unmanageable on day two. Every arrival, departure or transfer forces you to reopen every affected folder to edit its access control list, and you can never simply answer the question “what does this user have access to?”.

The AGDLP model solves this by inserting two levels of groups between the account and the folder:

LetterActive Directory objectWhat it representsExample in this lab
AAccountthe user’s accountPDG
GGlobal groupwho the person is, their departmentGG-CHA-DIR
DLDomain Local groupwhich right on which resourceGL-SRV-CHA-DATA-MANAGEMENT-FC
PPermissionthe NTFS entry actually appliedFull Control on the Management folder

The chain reads left to right: the account goes into a global group, the global group goes into a domain-local group, and that last one, and only that one, ever appears on the Security tab of a folder.

The AGDLP chain for one user
PDG → GG-CHA-DIR → GL-SRV-CHA-DATA-MANAGEMENT-FC → Full Control on \\SRV-CHA\DATA-CHA$\Management
A G DL P

The benefit shows up as soon as something changes:

  • A new hire in Management? One single action, add them to GG-CHA-DIR. They instantly inherit every Management folder.
  • A new folder to secure? One single domain-local group to create, then nest into the relevant global groups. No account is touched.
  • An audit? The members of a domain-local group answer “who reaches this folder”, the memberships of a global group answer “what does this person reach”.
ExplanationWhy two different group scopes

A global group can only contain accounts from its own domain, but it can be granted rights on any machine in the domain, or even in a trusted domain. A domain-local group is the opposite: it accepts members from several domains, but it only grants rights on resources of its own domain. The two scopes are complementary: the global one describes the organization, the local one describes the resource. Nesting them lets either side change without ever touching the other.

The model has a cost: it multiplies objects. With nine folders to protect and two possible right levels, you quickly reach a dozen or so domain-local groups. They are only usable if their names can be read without documentation.

A naming convention that reads itself

Each name encodes everything needed to know what the group is for, without opening the console.

For global groups, two segments are enough, since they only describe people:

SegmentExampleMeaning
GGGGglobal group, it holds accounts
siteCHAChassignieu, Virieu (VIR) or Blandin (BLA)
departmentDIRManagement, Administrative (ADM) or Technical (TECH)

Which gives GG-CHA-DIR, GG-VIR-ADM, GG-BLA-TECH, and so on.

For domain-local groups, the resource and the right level must be described as well:

SegmentExampleMeaning
GLGLdomain-local group, it carries a right
serverSRV-CHAmachine physically hosting the folder
shareDATAname of the network share on that machine
folderADM-COMMONthe exact subfolder targeted
rightFCFull Control, or R for Read

Which gives GL-SRV-CHA-DATA-ADM-COMMON-R: read access to the Adm-Common folder of the DATA share hosted by SRV-CHA.

ImportantOne group per (folder, right level) pair

A single folder can carry two domain-local groups: one in FC for those who produce the content, one in R for those who only need to read it. This is the only way to grant two different right levels on the same folder without ever duplicating a permission by hand.

With that convention in place, the full directory plan can now be read at a glance.

The plan to build

Organizational units

Organizational units (OU) are containers that mirror the org chart inside the directory. Here, one level per site, then one level per department.

File tree

Each department OU holds its global group and the accounts that belong to it. The domain-local groups live in their own sub-OU (here GL-Direction) so they never get mixed up with the objects that describe people.

WarningAn OU grants nothing

Placing an account in the Management OU opens absolutely nothing for it. OUs serve two purposes: applying group policies (GPO) to a precise scope, and delegating administration (for example letting the Virieu helpdesk reset passwords for its own site only). Access rights travel exclusively through the AGDLP chain.

Shares and their domain-local groups

On the data side, each server exposes a DATA share split into subfolders, plus two technical shares covered later: DBASE for home folders and PROFILS for roaming profiles.

File tree

The split follows two complementary logics. Folders suffixed Common all live on SRV-CHA and are reachable from the three sites: this is the pooling point. Folders suffixed with a town name live on their own site’s server: this is the partitioning, which keeps data local to the users who work with it.

The table below sums up the target to build, one domain-local group per (folder, right level) pair:

FolderServerFull Control groupRead group
DATA-CHA\ManagementSRV-CHAGL-SRV-CHA-DATA-MANAGEMENT-FCnone
DATA-CHA\Adm-CommonSRV-CHAGL-SRV-CHA-DATA-ADM-COMMON-FCGL-SRV-CHA-DATA-ADM-COMMON-R
DATA-CHA\Tech-CommonSRV-CHAGL-SRV-CHA-DATA-TECH-COMMON-FCnone
DATA-CHA\Adm-ChassignieuSRV-CHAGL-SRV-CHA-DATA-ADM-CHASSIGNIEU-FCGL-SRV-CHA-DATA-ADM-CHASSIGNIEU-R
DATA-CHA\Tech-ChassignieuSRV-CHAGL-SRV-CHA-DATA-TECH-CHASSIGNIEU-FCnone
DATA-VIR\Adm-VirieuSRV-VIRGL-SRV-VIR-DATA-ADM-VIRIEU-FCGL-SRV-VIR-DATA-ADM-VIRIEU-R
DATA-VIR\Tech-VirieuSRV-VIRGL-SRV-VIR-DATA-TECH-VIRIEU-FCnone
DATA-BLA\Adm-BlandinSRV-BLAGL-SRV-BLA-DATA-ADM-BLANDIN-FCGL-SRV-BLA-DATA-ADM-BLANDIN-R
DATA-BLA\Tech-BlandinSRV-BLAGL-SRV-BLA-DATA-TECH-BLANDIN-FCnone
NoteWhy only administrative folders get a Read group

Administrative folders hold documents other departments need to consult without editing them (procedures, forms, internal memos). Technical folders only serve their own department, so a single right level is enough. Adapt that column to your own organization, the principle stays the same.

Create the directory objects

The target is set. We now build it in the exact order of the AGDLP chain: containers first, then the global groups (G), then the accounts (A), and finally the domain-local groups (DL). All four steps happen in the same console, Active Directory Users and Computers.

Step 1: create the organizational units

OUs come first, because everything else, groups and accounts alike, has to be created inside one of them.

  1. Open the Active Directory Users and Computers console

    On the SRV-CHA domain controller, open the Server Manager Tools menu and launch Active Directory Users and Computers. This is the console where nearly all of steps 1 to 4 take place.

    Server Manager Tools menu with Active Directory Users and Computers highlighted

  2. Create the top-level OU

    In the console tree, right-click the SDE.LOCAL domain, then select New followed by Organizational Unit. Right-clicking an existing OU instead creates a sub-OU: that is how you get the site then department hierarchy.

    Right-click menu on the domain showing New then Organizational Unit

  3. Name the OU and clear the protection

    Give the OU a name that matches the site or department, then confirm with OK.

    Uncheck the box Protect container from accidental deletion

    Tip

    Clearing Protect container from accidental deletion only makes sense in a lab, where the tree is rebuilt often. In production, leave that box ticked: it prevents an accidental deletion that would take every object in the OU with it.

  4. Repeat for the whole tree

    Repeat until you have the 3 site OUs, their 7 department sub-OUs, and the GL-Direction sub-OU meant for the domain-local groups.

The containers exist and they are empty. The global groups go in first, because they will receive the accounts created right after.

Step 2: create the global groups (the G)

A global group represents one department on one site. It carries no right: it only gathers people who, by definition, share the same access needs.

  1. Create the group inside the department OU

    Inside the department’s OU, right-click and select New then Group. Creating the group from the target OU avoids having to move it afterwards.

    Right-click menu on an OU showing New then Group

  2. Name the group and pick the Global scope

    Type the group name using the GG-<site>-<department> convention, set the scope to Global with a Security type, and click OK.

    New Object Group dialog with Global scope selected

    ImportantSecurity, not Distribution

    The Distribution type only serves mail distribution lists: such a group cannot receive rights. Only a Security group owns a SID usable in an access control list. Picking the wrong type here produces an AGDLP chain that looks correct but never grants anything.

  3. Repeat for the 7 departments

    By the end of this step you have GG-CHA-DIR, GG-CHA-ADM, GG-CHA-TECH, GG-VIR-ADM, GG-VIR-TECH, GG-BLA-ADM and GG-BLA-TECH.

Those groups are still empty, so the accounts that will populate them come next.

Step 3: create the user accounts (the A)

The account is the only object the user really handles: it is what they log on with. Everything else in the chain is invisible to them.

  1. Create the account inside the department OU

    Right-click the same department OU, then select New followed by User.

    Right-click menu on an OU showing New then User

  2. Fill in the identity and the logon name

    Fill in the full name and the user logon name, then click Next. The logon name is the account’s technical identifier: it must be unique across the domain and stay stable over time, unlike the full name which can change.

    New Object User dialog with the full name and logon name

  3. Set the password

    Confirm the password and, for this lab, enable Password never expires before continuing.

    Set a password that complies with your security policy

    Warning

    Password never expires saves time in a lab but does not transfer to production. The consistent option there is User must change password at next logon, which guarantees the administrator does not know the final secret.

  4. Confirm the creation

    Review the account summary and click Finish to create the user.

    New user summary page with the Finish button

Accounts and global groups are in place: the left half of the AGDLP chain (A and G) is ready. Its right half, the one that describes resources, is still missing.

Step 4: create the domain-local groups (the DL)

A domain-local group is the mirror image of a global group: it does not describe people, it describes a right on a precise resource. It is the only object that will later appear on the Security tab of a folder.

FC stands for Full Control, R stands for Read. These suffixes are only a naming convention: they apply nothing by themselves, the actual right is granted in step 7.

The DATA-CHA share holds one subfolder per scope (common or per-site, administrative or technical), and each one will be secured by its own domain-local group or groups.

DATA-CHA folder showing its subfolders in File Explorer

  1. Create the group in the dedicated OU

    Inside the GL-Direction OU, right-click and choose New then Group.

    Right-click menu in the GL-Direction OU showing New then Group

  2. Name the group and pick the Domain local scope

    Name the group with the GL-SRV-<site>-DATA-... convention that encodes the target folder and right level, set the scope to Domain local, and click OK.

    New Object Group dialog with the Domain local scope selected

    ExplanationWhy Domain local and not Global

    A global group cannot contain other global groups coming from a different domain, which would block any move to a multi-domain forest. A domain-local group, on the other hand, accepts global groups from any trusted domain. Choosing that scope here keeps open the option of opening this folder to a subsidiary one day without touching a single ACL.

  3. Check the result

    The new domain-local group now appears in the GL-Direction OU.

    GL-Direction OU containing the new domain-local group

  4. Repeat for every row of the table

    Go back to the table in the previous section and create one group per filled cell, 13 domain-local groups in total.

Publish and secure the shares

All four links of the chain now exist as objects, but none of them is connected to the others, and above all no folder is reachable over the network yet. The next three steps therefore happen on the file server side: publish the folders, nest the groups, then apply the permissions.

Step 5: publish the DATA share

An NTFS permission is useless as long as the folder cannot be reached from a client. It has to be published as an SMB share first. This step is also the right moment to understand why Windows stacks two permission systems.

LayerWhere it is setSetting used hereRole
Share (SMB)Sharing tab, Permissions buttonEveryone, Full Controlcoarse filter, it lets everything through
NTFSSecurity tabdomain-local groups onlyreal filter, it decides who gets in

A user’s effective access is the intersection of both layers: the most restrictive one always wins. Opening the share layer wide therefore weakens nothing, and it concentrates all the rights logic in one place, NTFS. That is what makes the configuration readable and auditable: a single tab to consult to know who reaches what.

  1. Open the folder properties

    On the local disk, right-click the DATA-CHA folder and open its Properties.

    Right-click Properties on the DATA-CHA folder

  2. Go through Advanced Sharing

    On the Sharing tab, click Advanced Sharing. The Share button just above is a simplified wizard that can neither hide the share nor control its permissions precisely.

    Sharing tab with the Advanced Sharing button

  3. Name the share and hide it

    Tick Share this folder, enter the share name DATA-CHA$ so the $ keeps it hidden, then open Permissions.

    Advanced Sharing dialog with the share name DATA-CHA$

    NoteWhat the dollar sign really does

    A share whose name ends with $ does not show up in the list returned by network browsing. It stays perfectly reachable for anyone who knows its \\SRV-CHA\DATA-CHA$ path. It is a convenience and discretion measure, not a security measure: security is the NTFS permissions of step 7.

  4. Open the share layer

    Grant Full Control to Everyone at the share level, since the NTFS permissions will do the real filtering, and click OK.

    Share permissions dialog granting Full Control to Everyone

  5. Note down the network path

    Back on the Sharing tab, the folder is now shared at \\Srv-cha\data-cha$; close the dialog. Write that path down, it will be reused as is in the logon scripts.

    Sharing tab showing the network path of DATA-CHA$

  6. Find the subfolders to secure

    Reopening the share shows the subfolders that will each receive their domain-local group.

    LGs will be applied in these subfolders

Repeat the operation on SRV-VIR and SRV-BLA to publish DATA-VIR$ and DATA-BLA$.

Hide what is not accessible

With no further setting, a user opening \\SRV-CHA\DATA-CHA$ sees the full list of subfolders, Management included, and gets an access denied when clicking it. The compartmentalisation works, but it leaks the org chart. Access-based enumeration (ABE) fixes exactly that by filtering the listing itself.

  1. Open File and Storage Services

    In Server Manager, open File and Storage Services.

    Enable access-based enumeration

  2. Open the share properties

    Under Shares, right-click the DATA-CHA$ share and open its Properties.

    Shares list with DATA-CHA$ Properties selected in Server Manager

  3. Enable enumeration

    In the Settings section, tick the enumeration option and confirm.

    Check Enable access-based enumeration

    Tip

    ABE is set per share, not per folder. Enable it on DATA-VIR$ and DATA-BLA$ too, otherwise the site partitioning stays visible from the other sites.

The folders are published and ready to filter. What remains is wiring the links of the chain together.

Step 6: wire the AGDLP chain

Two nestings are enough, and their order barely matters as long as both are done: without the first one the user is attached to nothing, without the second one their group leads to no resource.

From the account to the global group (A to G)

  1. Open the global group properties

    Right-click the global group (here GG-CHA-DIR) and open its Properties.

    Right-click Properties on the GG-CHA-DIR group

  2. Add the user as a member

    On the Members tab, click Add, enter the user name, resolve it with Check Names, and click OK.

    Members tab with the Select Users dialog adding a user

    Tip

    Check Names is not just an interface courtesy: as long as the typed text is not underlined, the object has not been resolved in the directory and validation will fail. It is also the fastest way to catch a typo in a group name.

  3. Confirm the membership

    The user now appears in the group’s member list; click OK to save.

    Members tab listing the added user

From the global group to the domain-local group (G to DL)

  1. Reopen the global group properties

    Open the properties of the same global group again.

    Right-click Properties on the GG-CHA-DIR group

  2. Switch to the Member Of tab

    Switch to the Member Of tab and click Add. The Members tab lists what the group contains, the Member Of tab lists what contains the group: the second one is the right one here, since the global group goes into the domain-local group.

    Member Of tab with the Add button

  3. Point at the domain-local group

    Enter the domain-local group name, resolve it with Check Names, and click OK.

    Select Groups dialog entering the domain-local group name

  4. Confirm the nesting

    The global group is now a member of the domain-local group; click OK.

    Member Of tab showing the domain-local group membership

ImportantA global group can join several domain-local groups

That is in fact the common case: GG-CHA-ADM will be a member of GL-SRV-CHA-DATA-ADM-COMMON-FC for its common folder, and of GL-SRV-CHA-DATA-ADM-CHASSIGNIEU-FC for its site folder. A user accumulates the rights of every domain-local group reachable from their global groups.

The chain is wired end to end, but it still leads nowhere: no domain-local group appears in any folder’s access control list yet. That is the last link, the P.

Step 7: apply the NTFS permissions (the P)

Two mechanisms combine here, and they explain why the procedure is long.

The first one is inheritance: by default a subfolder automatically receives its parent’s permissions. Since C:\DATA-CHA itself inherits from the disk root, the built-in Users group is present there, which would give every domain account read access to Management. That inheritance has to be broken.

The second one is converting inherited permissions into explicit ones: when disabling inheritance, Windows offers to copy the existing entries onto the folder. Take that option, then delete the ones you do not want. It is safer than plain removal, which would leave the folder with no ACL at all and therefore unreachable even for administrators.

Full procedure: disable inheritance then grant the domain-local group
  1. Open the subfolder properties

    Right-click the subfolder (here Direction) and open its Properties.

    Right-click Properties on the Direction subfolder

  2. Open the advanced security settings

    On the Security tab, click Advanced. The simplified Security tab can neither manage inheritance nor show precisely where each permission comes from.

    Security tab with the Advanced button

  3. Disable inheritance

    Click Disable inheritance, then choose to convert the inherited permissions into explicit entries.

    Advanced security settings with the Block Inheritance prompt

  4. Remove the overly broad entries

    Remove the inherited Users and CREATOR OWNER entries so only the intended group keeps access.

    Allow access only to GG-Management members

    WarningNever remove SYSTEM or Administrators

    SYSTEM is the account Windows services run under, including backup, indexing and antivirus. Administrators is your way back in if a change locks you out of the folder. Removing either turns a reversible mistake into an incident.

  5. Add the domain-local group

    With only System and Administrators left, click Add to grant the group.

    Advanced security settings after removing the inherited entries

  6. Select the principal

    Click Select a principal, enter the domain-local group name, resolve it, and click OK.

    Permission entry selecting the domain-local group as principal

    Important

    This is the only moment in the whole lab where a group name is typed into an access control list, and that name always starts with GL-. If you catch yourself typing a GG- or a user name here, the AGDLP chain is being short-circuited.

  7. Grant the right level

    Assign Full Control to the group and confirm with OK. For a group suffixed -R, pick Read and execute, List folder contents and Read instead.

    Permission entry granting Full Control to the group

  8. Check the final list

    The domain-local group now holds Full Control on the folder alongside System and Administrators; click OK.

    Advanced security settings listing the group with Full Control

Repeat this procedure for every row of the permission table. In the end, each folder exposes a short, readable list: SYSTEM, Administrators, and one or two GL- groups.

The data is compartmentalised. What remains is making it reachable effortlessly for the user, who should not have to memorise a single UNC path.

Making the data reachable from the workstation

Three mechanisms complete each other, all set from the same Profile tab of the user account, plus one script for the dynamic part.

LetterContentPathSet by
X:the user’s personal folder\\SRV-<site>\DBASE-<site>$\%USERNAME%Profile tab, Home folder section
Y:common share, identical for everyone\\SRV-CHA\DATA-CHA$logon script
Z:the user’s own site share\\SRV-<site>\DATA-<site>$logon script

The home folder

The home folder is a personal directory hosted on the server, where the user keeps their documents. Storing it remotely rather than on the workstation brings two guarantees: it is included in the server backups, and it stays available if the machine fails.

1. Publish the DBASE share
  1. Open the folder properties

    Right-click the DBASE-CHA folder on the local disk and open its Properties.

    Right-click Properties on the DBASE-CHA folder

  2. Open Advanced Sharing

    On the Sharing tab, click Advanced Sharing.

    Sharing tab with the Advanced Sharing button for DBASE-CHA

  3. Name the hidden share

    Tick Share this folder and set the share name to DBASE-CHA$, then open Permissions.

    The $ symbol hides the directory

  4. Open the share layer

    Grant Full Control to Everyone at the share level and click OK.

    Share permissions dialog granting Full Control to Everyone

  5. Confirm Advanced Sharing

    Confirm the share name in Advanced Sharing with OK.

    Advanced Sharing dialog with the share name DBASE-CHA$

  6. Note down the network path

    The Sharing tab now shows the folder shared at \\Srv-cha\dbase-cha$; close the dialog.

    Sharing tab showing the network path of DBASE-CHA$

2. Attach the home folder to the account
  1. Open the account properties

    In Active Directory Users and Computers, right-click the user (here PDG, the CEO account) and open its Properties.

    Right-click Properties on the PDG user account

  2. Fill in the home folder

    On the Profile tab, under Home folder, select Connect, choose a drive letter, and enter the share path.

    Paste the network share path.
%USERNAME% creates a folder named after each user

    TipThe %USERNAME% variable does all the work

    Typing \\Srv-cha\dbase-cha$\%USERNAME% tells Active Directory to create the subfolder named after the account and to automatically grant rights exclusive to its owner. You can therefore paste the exact same path into the properties of every account on the site, without ever creating a folder by hand.

The network drives

The home folder is mounted by Active Directory itself. The DATA shares, however, depend on the user’s site: a logon script stored in the domain’s NETLOGON share takes care of them.

CHA_script.cmd
net use Y: \\SRV-CHA\DATA-CHA$
Note

A single line here, because both the common folders and the Chassignieu site folders live inside DATA-CHA. A headquarters user therefore mounts 2 drives in total (X: and Y:) instead of 3.

VIR_script.cmd
net use Y: \\SRV-CHA\DATA-CHA$
net use Z: \\SRV-VIR\DATA-VIR$
BLA_script.cmd
net use Y: \\SRV-CHA\DATA-CHA$
net use Z: \\SRV-BLA\DATA-BLA$

Concretely, for a user attached to Blandin:

  • X: points to \\SRV-BLA\DBASE-BLA$\USER_NAME, their personal space.
  • Y: points to \\SRV-CHA\DATA-CHA$, the common share hosted at headquarters. Thanks to ABE and the NTFS permissions, they only see the folders they hold at least read access on.
  • Z: points to \\SRV-BLA\DATA-BLA$, their own site share, filtered the same way.
ExplanationWhy a script rather than a manual mapping

A manually mapped drive lives on a single workstation and disappears at the first reinstall. The script lives in NETLOGON, a share automatically replicated to every domain controller: it runs at each logon, on any machine in the domain. Changing a share path then means editing one single file.

1. Create the scripts in NETLOGON
  1. Open the NETLOGON share

    Browse to the domain’s NETLOGON share (here through \\127.0.0.1\netlogon) where logon scripts are stored.

    NETLOGON share opened in File Explorer

  2. Show file name extensions

    On the View tab, enable file name extensions so the script can be renamed correctly. Without this, a file named CHA_script.cmd is actually CHA_script.cmd.txt and will never run.

    Check File name extensions

  3. Rename the file to .cmd

    Rename the text file to a .cmd script and confirm the extension change.

    Rename prompt confirming the change to a .cmd extension

  4. Write the net use commands

    Edit the script in Notepad and add the net use command that maps the site’s drive. Create one file per site, following the three tabs above.

    Logon script opened in Notepad with a net use command

2. Assign the script to the account
  1. Open the account properties

    Right-click the user account and open its Properties.

    Right-click Properties on the PDG user account

  2. Fill in the logon script

    On the Profile tab, set Logon script to the matching .cmd file and click OK. Type the file name only, with no path: Windows looks for it inside NETLOGON.

    Profile tab with the logon script set

Roaming profiles

The data is now reachable from any workstation, but the working environment is still local: desktop, favourites, application preferences. Roaming profiles complete the setup by storing that profile on the server and copying it down to the machine at each logon.

The mechanics are identical to the home folder: publish a share, then point the account at it.

1. Publish the PROFILS share
  1. Open the folder properties

    Right-click the PROFILS-CHA folder on the local disk and open its Properties.

    Right-click Properties on the PROFILS-CHA folder

  2. Open Advanced Sharing

    On the Sharing tab, click Advanced Sharing.

    Sharing tab with the Advanced Sharing button for PROFILS-CHA

  3. Name the hidden share

    Tick Share this folder, set the share name to PROFILS-CHA$, and open Permissions.

    Advanced Sharing dialog with the share name PROFILS-CHA$

  4. Open the share layer

    Grant Full Control to Everyone at the share level and click OK.

    Share permissions dialog granting Full Control to Everyone

  5. Note down the network path

    The folder is now shared at \\Srv-cha\profils-cha$; close the dialog.

    Sharing tab showing the network path of PROFILS-CHA$

2. Attach the profile to the account
  1. Open the account properties

    Right-click the user account and open its Properties.

    Right-click Properties on the PDG user account

  2. Fill in the profile path

    On the Profile tab, set Profile path to the share followed by %USERNAME%, then click OK.

    Profile tab with the roaming profile path set

    NoteThe .V6 suffix appears on its own

    Windows actually creates a USER_NAME.V6 folder on the share, the number matching the profile format version. Do not type it yourself in the field: just enter \\Srv-cha\profils-cha$\%USERNAME% and the system appends the suffix at the first logon.

Everything is configured on the server side. The only proof that counts is a real logon from a client machine.

Verify and recap

Warning

You must be a local administrator of the machine to join the domain.

The first user test

Join a client to the SDE.LOCAL domain, reboot it, then log on with a domain account, ADM1B for instance. Then work through the list below, which replays the AGDLP chain in reverse and pinpoints the failing link immediately.

To checkExpected resultWhat it validates
Logon with the domain accountthe session opensthe account exists and the machine joined the domain
X: present in File Explorerempty personal folderhome folder and DBASE share
Y: and Z: presentdrives mountedNETLOGON script assigned to the account
Contents of Y:only the authorised foldersABE, NTFS permissions and the AGDLP chain
Creating a file in an FC foldersuccessFull Control domain-local group applied
Creating a file in an R folderdeniedRead domain-local group applied
Changing the desktop then logging on to another machinethe desktop followsroaming profile

If one of them fails, the table below covers the most frequent causes.

SymptomLikely causeWhere to look
The user sees every folder in the shareABE not enabled on that shareServer Manager, share properties
The user sees no folder at allglobal group not nested, or domain-local group missing from the ACLMember Of tab of the GG, Security tab of the folder
Access denied despite NTFS Full Controlshare layer more restrictive than NTFSSharing tab, Advanced Sharing, Permissions
Drive Y: does not show upscript not assigned, wrong name, or hidden .txt extensionProfile tab of the account, contents of NETLOGON
Rights unchanged after editing a groupthe session’s Kerberos token is still cachedlog off then back on, or klist purge
The profile does not followpath missing %USERNAME%, or PROFILS share unreachableProfile tab, manual test of \\SRV-CHA\profils-cha$
TipThe access token is computed at logon

Group memberships are not re-read continuously: they are frozen into the Kerberos token when the user logs on. Adding someone to a group while they are working therefore changes nothing until they log off and back on. This is by far the top source of false negatives during testing.

The complete chain, end to end

For a Management user, everything just built fits on one line:

From logon to file access
PDG (account, Management OU)
> member of GG-CHA-DIR (global group, Management OU)
> member of GL-SRV-CHA-DATA-MANAGEMENT-FC (domain-local group, GL-Direction OU)
> NTFS Full Control on \\SRV-CHA\DATA-CHA$\Management
> visible in Y: thanks to ABE and the logon script

Each link has a single responsibility, and each one can change without touching the others: that is exactly what keeps this configuration sustainable over time.

The infrastructure works, but nothing yet stops a single user from filling up the share. That is the subject of the next article in the series: Apply quota on network shared directories.

Use with an AI

Actions