Link to home
Start Free TrialLog in
Avatar of MRowan75
MRowan75Flag for Afghanistan

asked on

Set permissions by file name/Inherit Ownership MS Server 2008

Kind of a two part question here. Need to find a way to :

1.) set permissions on folders based on folder name. Scenario - I have hundreds of site based folders, and inside of each one of these folders are four folders, each with the same name

Example

Sites -

   -Site 1
        -Folder A
        -Folder B
        -Folder C
   -Site 2
        -Folder A
        -Folder B
        -Folder C
 and so on.

   I'm trying to find a way to set a permission on every folder under 'sites' named 'Folder A'. I've tried using an XCacl VbScript, but it errors out. Wondering if I am running into ownership issues, as folders are created by different people, which leads to

2) Does anyone know of a way to do a bulk change of folder ownership, so I can set ownership on a parent folder and have all child folders inherit the ownership? I know the chown command works for linux, but havent been able to find anything for MS.
Avatar of George Khairallah
George Khairallah
Flag of United States of America image

This is a quick script that I usually use to fix permissions on user folders (it's written in Kix, can be easily converted to VB). You would have to modify it to fit your folder structure, but it should put you on the right track.

Break ON
; 
; Change this to the base path where your directory is. so, in this case, the user folders would be here: d:\students\%USERNAME%
Global $BasePath $BasePath = 'D:\Students' 
; Replace this with your NetBIOS domain name. (This is used for domain\user notation) 
Global $Domain $Domain = 'YOUROMDAIN'
;-------------------------------------------------------------------

Dim $fh $fh = FreeFileHandle
$ = Open($fh, @SCRIPTDIR + "\users.txt")

$UserName = ReadLine($fh)
Do
	Trim($UserName)
	Shell '%COMSPEC% /c icacls ' + $BasePath + '\' + $UserName + ' /t /c /l /grant ' + $Domain + '\' + $UserName + ':(OI)(CI)F'
	Shell '%COMSPEC% /c icacls ' + $BasePath + '\' + $UserName + ' /setowner ' + $Domain + '\' + $UserName
	$UserName = ReadLine($fh)
Until @ERROR = -1
$ = Close($fh)

Open in new window

Avatar of MRowan75

ASKER

Thanks. I was able to use icacls to set ownership on all files. Still dealing with the issue of trying to set permissions on all folders named 'settings', as opposed to drilling down to each individual folder. For example,

C:\Sites\Site1\Settings
C:\Sites\Site2\Settings
C:\Sites\Site3\Settings ect.

I have about 700 'site#' folders, and need to edit permissions on every "site#\settings folder". Is there a command or tool that will find all folders named 'settings' within the Sites top level to allow me to do this without manually typing the command 700 times? I'm getting the impression there isn't and I have a long day/week of typing ahead of me...
are the Site# all under C:\Sites?
You just want to be able to go through the folder C:\Sites\SiteX through C:\Sites\SitesY and change the permissions on the "Settings" folder in each of them?
Yes, that is what I am looking for.
ASKER CERTIFIED SOLUTION
Avatar of George Khairallah
George Khairallah
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial