需求:
为公司每个有域帐号的员工创立一个个人文件夹。
此文件夹权限为员工本人完全控制和管理员完全控制。
映射到员工的磁盘Z盘为驱动器
解决:
三种方式:
一,手动设置
在共享服务器D盘建立文件夹Personalsharefile
共享权限Everyon可编辑。共享名可以加$隐藏。图1
本地安全如图2
主要是关闭权限继承,domain user只应用到当前文件夹,不继承。
选定多个用户,然后配置配置主文件夹如下。图3。
\192.168.1.160\PersonalShareFile\%username%
点应用后会自动在PSF文件夹下简历对应用户名的文件夹。
权限如下图
然后客户端就能看到
二,Powershell全自动
来源及参考:https://gallery.technet.microsoft.com/scriptcenter/PowerShell-script-to-832e08ed
脚本内容:
$Domain = "kaedeleo.com"
$ADServer = "dc01"
#文件服务器名或IP
$searchbase = "ou=人事部,ou=天越公司,DC=kaedeleo,DC=com"
#OU区域
$ShareFolderPhysicalPath="D:\PersonalShareFile"
#本机文件夹路径
$ShareFolderNetworkPath="PersonalShareFile"
#共享名,后面可以加$隐藏
$homeDrive = "Z"
#映射的磁盘,可以随便写一个非磁盘名字的来删除映射,比如"abc"
$FilenameType="surname"
#创立的私人文件夹的名字,这里用的surname,姓;也可以用displayname之类的。
if(!(Test-Path $ShareFolderPhysicalPath))
{
New-Item -Path $ShareFolderPhysicalPath -type directory
icacls $ShareFolderPhysicalPath /inheritance:r /grant:r ‘administrators:(OI)(CI)F‘ ‘system:(OI)(CI)F‘ ‘creator owner:(CI)(OI)F‘
}
New-SmbShare -name $ShareFolderNetworkPath -Path $ShareFolderPhysicalPath -FullAccess everyone
Import-Module ActiveDirectory
$ADUsers = Get-ADUser -server $ADServer -Filter -searchbase $searchbase -Properties
ForEach ($ADUser in $ADUsers)
{
New-Item -ItemType Directory -Path "\$ADServer\$ShareFolderNetworkPath\$($ADUser.$FilenameType)"
$UsersAm = "$Domain\$($ADUser.sAMAccountname)"
$FileSystemAccessRights = [System.Security.AccessControl.FileSystemRights]"FullControl"
$InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]::"ContainerInherit", "ObjectInherit"
$PropagationFlags = [System.Security.AccessControl.PropagationFlags]::None
$AccessControl =[System.Security.AccessControl.AccessControlType]::Allow
$NewAccessrule = New-Object System.Security.AccessControl.FileSystemAccessRule `
($UsersAm, $FileSystemAccessRights, $InheritanceFlags, $PropagationFlags, $AccessControl)
$userfolder = "\$ADServer\$ShareFolderNetworkPath\$($ADUser.$FilenameType)"
$currentACL = Get-ACL -path $userfolder
$currentACL.SetAccessRule($NewAccessrule)
Set-ACL -path $userfolder -AclObject $currentACL
$homeDirectory = "\$ADServer\$ShareFolderNetworkPath\$($ADUser.$FilenameType)"
Set-ADUser -server $ADServer -Identity $ADUser.sAMAccountname -Replace @{HomeDirectory=$homeDirectory}
Set-ADUser -server $ADServer -Identity $ADUser.sAMAccountname -Replace @{HomeDrive=$homeDrive}
}
pause
效果是
在DC01 的D盘建立PSF文件夹
共享设置权限为everyone完全
本地权限设置为一手动设置内的一致
在PSF建立OU范围内的以每个用户的姓为文件名的文件夹并映射到用户主文件夹
效果与手动是一致的
可以自定义更多东西,但是用户那个属性里一定要有东西,不然会变得很奇怪。。
三,Powershell+登录脚本
Powershell:
$domainname="kaedeleo.com"
$ShareFolderPhysicalPath="D:\PersonalShareFile"
$ShareFolderNetworkPath="PersonalShareFile"
if(!(Test-Path $ShareFolderPhysicalPath))
{
New-Item -Path $ShareFolderPhysicalPath -type directory
icacls $ShareFolderPhysicalPath /inheritance:r /grant:r ‘administrators:(OI)(CI)F‘ ‘system:(OI)(CI)F‘ "$domainname\domain users:F" ‘creator owner:(CI)(OI)F‘
}
New-SmbShare -name $ShareFolderNetworkPath -Path $ShareFolderPhysicalPath -FullAccess everyone
从上面的脚本中取一部分。
建立文件夹和共享和本地权限。
然后用组策略的登陆脚本来创建文件夹和影射磁盘驱动器。
@echo off
set patha=\192.168.1.160\PersonalShareFile
if exist "%patha%\%username%" goto netuse
md "%patha%\%username%"
:netuse
net use | find "X:" >nul
if errorlevel 1 net use X: "%patha%\%username%"
pause
这样做的好处是,只要做一个全局组策略的,每次新员工登陆就会自动创建。不需要像前两个再手动设置或者运行一下。
进阶需求:
权限枚举
文件屏蔽
配额管理
邮箱报警
原文地址:http://blog.51cto.com/xifanliang/2106488