中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助][補問問題]XCACLS安全性修改(用FOR組合和呼叫TXT設定)
作者:
标题: [求助][補問問題]XCACLS安全性修改(用FOR組合和呼叫TXT設定) 上一主题 | 下一主题
XZ
初级用户





积分 144
发帖 65
注册 2008-3-20
来自 Taiwan
状态 离线
『楼 主』:  [求助][補問問題]XCACLS安全性修改(用FOR組合和呼叫TXT設定)

需求 列出資架夾清單->列出群組->選擇安全性 -> 完成
我只能個別寫出來不會統合起來
請問要如何將下面的批次檔統合起來
謝謝
set ListFlodercount=100
set ListGroupcount=100
for /f "delims=" %%a in ('dir *. /b') do (set /a ListFlodercount+=1&&call set ListFloder%%ListFlodercount%%=%CD%\%%a&&call SET MaxFloderNumber=%%ListFlodercount%%)

for /f "skip=1 delims= " %%a in ('wmic group list brief') do (set /a ListGroupcount+=1&&call set ListGroup%%ListGroupcount%%=%%a&&call SET MaxGroupNumber=%%ListGroupcount%%)

echo.F  Full control
echo.M  Modify
echo.X  read & eXecute
echo.L  List folder contents
echo.R  Read
echo.W  Write
set access=
set /p access=Type F or M or X or L or R or W:

xcacls.vbs "ListFloder%%ListFlodercount%%" /g "ListGroup%%ListGroupcount%%":%access%
假設資料夾目錄為:
第一資料夾
第二資料夾
第三資料夾
第四資料夾


假定群組為:
A群組
B群組
C群組


假定需求:
第一資料夾 A群組 權限 R
第一資料夾 B群組 權限 W
第一資料夾 C群組 權限 F

第二資料夾 A群組 權限 R
第二資料夾 B群組 權限 R
第二資料夾 C群組 權限 F

第三資料夾 A群組 權限 W
第三資料夾 B群組 權限 W
第三資料夾 C群組 權限 F

第四資料夾 A群組 權限 F
第四資料夾 B群組 權限 F
第四資料夾 C群組 權限 F


XCACLS.vbs 說明
http://support.microsoft.com/kb/825751/zh-tw

[ Last edited by XZ on 2008-5-31 at 12:28 AM ]

2008-5-27 00:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mkd
初级用户





积分 109
发帖 30
注册 2007-9-5
状态 离线
『第 2 楼』:  


@echo off
for /d %%a in (*) do (
        for /f "skip=4 tokens=* delims=*" %%i in ('net localgroup') do (


                call cscript xcacls.vbs %%xxx%%%%xccess%%
               
                echo Folder:%%a
                echo  Group:%%i
                echo.
                echo.F  Full control
                echo.M  Modify
                echo.X  read ^& eXecute
                echo.L  List folder contents
                echo.R  Read
                echo.W  Write
                set xccess=
                set /p xccess=Type F or M or X or L or R or W:


                set xxx="%%a" /e /g "%%i":
                )
)
%access%
%a
%xccess%

   此帖被 +1 点积分    点击查看详情   
评分人:【 XZ 分数: +1  时间:2008-5-28 19:30


2008-5-27 16:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
XZ
初级用户





积分 144
发帖 65
注册 2008-3-20
来自 Taiwan
状态 离线
『第 3 楼』:  

感謝您
可以正常執行
但是否這個批次檔有一個問題,一個缺點

問題點:
要是某一群組不需要此資料夾的權限,無法跳過

缺點:
此方次效率不高


若用呼叫其他的TXT檔的方式然後自動進行設定是否可行?
如:
FloderSetup.txt
A群組,B群組,C群組
第一資料夾,R,W,F
第二資料夾,R,R,F
第三資料夾,W,W,F
第四資料夾,F,F,F


2008-5-27 20:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
XZ
初级用户





积分 144
发帖 65
注册 2008-3-20
来自 Taiwan
状态 离线
『第 4 楼』:  

接續上頭問題
對不起..各位前輩們 我只會這到這樣
請大家幫幫忙
如合自動的往下一個群組執行
因為這樣子只會修改 A群組的安全性 B群組..C群組之後不會執行
還有就是 安全性與群組資料夾在不同行 @@a 沒辦法代入下面這行指令
call cscript xcacls.vbs "%%f" /g "%COMPUTERNAME%%%g":%%s
還是我從頭開始就已經錯了ˇˇ
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION


dir /b *. > FloderList.txt
for /f " tokens=1 delims=," %%f in (FloderList.txt) do (
for /f " tokens=1 delims=," %%g in (GroupList.txt) do (
echo %%f-%%g
)
)
)

for /f "skip=1 tokens=2 delims=," %%s in (SecureList.txt) do (echo %%s)
)

rem call cscript xcacls.vbs "%%f" /g "%COMPUTERNAME%%%g":%%s
結果:
E:\zz>zz.bat
第一資料夾-A群組
第三資料夾-A群組
第二資料夾-A群組
第四資料夾-A群組
R
R
W
F
SecureList.txt
A群組,B群組,C群組
第一資料夾,R,W,F
第二資料夾,R,R,F
第三資料夾,W,W,F
第四資料夾,F,F,F
GroupList.txt
A群組,B群組,C群組
[ Last edited by XZ on 2008-5-27 at 10:10 PM ]

2008-5-27 21:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
XZ
初级用户





积分 144
发帖 65
注册 2008-3-20
来自 Taiwan
状态 离线
『第 5 楼』:  

拜讀論壇內許多文章
我現在能改道這樣
問題一:
For 中 a~z  只有26個
要是資料夾和群組加起來超過26個怎麼辦??

問題2:
要如何自動判斷需要用到幾個變數
要是資料夾的數目便少或便多
這樣子的架構只能修改到前三樣資料夾和群組

問題3:
此批處理有那些需要修改的地方
因為這個是我東湊西拼硬搭出來的
不清楚有無錯誤或會造成不良的結果

請再次協助 謝謝!

批處理:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

for /f " tokens=1-10 delims=," %%u in (GroupList.txt) do (
for /f "skip=1 tokens=1-15 delims=," %%a in (SecureList.txt) do (

echo========================================================
echo 資料夾                        群組                安全性
echo %%a                %%u                %%b
echo %%a                %%v                %%c
echo %%a                %%w                %%d

rem call cscript xcacls.vbs "資料夾" /g "群組":安全性 /e
rem call cscript xcacls.vbs "%%a" /g "%%u":%%b /e
rem call cscript xcacls.vbs "%%a" /g "%%v":%%c /e
rem call cscript xcacls.vbs "%%a" /g "%%w":%%d /e
)
)
結果:
E:\zz>zz
=======================================================
資料夾                  群組            安全性
第一資料夾              A群組           R
第一資料夾              B群組           W
第一資料夾              C群組           F
=======================================================
資料夾                  群組            安全性
第二資料夾              A群組           R
第二資料夾              B群組           R
第二資料夾              C群組           F
=======================================================
資料夾                  群組            安全性
第三資料夾              A群組           W
第三資料夾              B群組           W
第三資料夾              C群組           F
=======================================================
資料夾                  群組            安全性
第四資料夾              A群組           F
第四資料夾              B群組           F
第四資料夾              C群組           F

E:\zz>
備註:
SecureList.txt 內容
A群組,B群組,C群組
第一資料夾,R,W,F
第二資料夾,R,R,F
第三資料夾,W,W,F
第四資料夾,F,F,F
GroupList.txt 內容
A群組,B群組,C群組
[ Last edited by XZ on 2008-5-27 at 11:37 PM ]

2008-5-27 23:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mkd
初级用户





积分 109
发帖 30
注册 2007-9-5
状态 离线
『第 6 楼』:  


for /f "tokens=1-25 delims=," %%B in (SecureList.txt) do (
        for /f "skip=1 tokens=1-26 delims=," %%a in (SecureList.txt) do (
                cacls "%%~a" /t /e /p %%B%%b  %%C%%c  %%D%%d %%E%%e %%F%%f %%G%%g %%H%%h %%I%%i %%J%%j %%K%%k %%L%%l %%M%%m %%N%%n %%O%%o %%P%%p %%Q%%q %%R%%r %%S%%s %%T%%t %%U%%u %%V%%v %%W%%w %%X%%x %%Y%%y %%Z%%z
                )
        exit/b
)
SecureList.txt

  Quote:
A群組:,"B   群   組:",C群組:
第一資料夾,R,C,F
第二資料夾,R,R,F
第三資料夾,C,C,F
第四資料夾,F,F,F



   此帖被 +1 点积分    点击查看详情   
评分人:【 XZ 分数: +1  时间:2008-5-29 19:23


2008-5-28 14:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tao0610
高级用户

朦胧的世界


积分 579
发帖 218
注册 2006-10-24
状态 离线
『第 7 楼』:  

按你那个改了一下
@echo off & SETLOCAL ENABLEDELAYEDEXPANSION
:flag
for /f "%flag% delims=" %%a in (SecureList.txt) do (
  set str=%%a&&set str=!str:,= !&set num=1
  if "%flag%"=="" call :lp !str!&set flag=skip=1&goto flag
echo========================================================
echo 資料夾                  群組              安全性
  call :lp1 !str!
)
pause&exit


:lp1
set name=%1&shift
:lp
if not "%flag%"=="" (
  echo %name%              !Group%num%!               %1
  rem call cscript xcacls.vbs "%name%" /g "!Group%num%!":%1 /e
  ) else set Group%num%=%1
shift
if not "%1"=="" set/a num+=1&goto lp


   此帖被 +2 点积分    点击查看详情   
评分人:【 XZ 分数: +2  时间:2008-5-29 19:25





认识自己,降伏自己,改变自己
,才能改变别人!
2008-5-28 18:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
XZ
初级用户





积分 144
发帖 65
注册 2008-3-20
来自 Taiwan
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by mkd at 2008-5-28 02:15 PM:
[code]
for /f "tokens=1-25 delims=," %%B in (SecureList.txt) do (
        for /f "skip=1 tokens=1-26 delims=," %%a in (SecureList.txt) do (
                cacls "%%~a" /t /e /p %%B%%b  ...

感謝 隻所以不用CACAS.exe 因為它不支援 列表的權限..
不過我也學到了 原來只要這麼短就可以達到相同的需求=   ="
看來我要學的路還很遠^^

2008-5-29 19:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
XZ
初级用户





积分 144
发帖 65
注册 2008-3-20
来自 Taiwan
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by tao0610 at 2008-5-28 06:09 PM:
按你那个改了一下

[code]
@echo off & SETLOCAL ENABLEDELAYEDEXPANSION
:flag
for /f "%flag% delims=" %%a in (SecureList.txt) do (
  set str=%%a&&set str=!str:,= !& ...

只能說強!!功能達到
請問能大概解釋一下 這樣子寫法 好深奧 看不懂=  =
謝謝您 我再努力領悟中

2008-5-29 19:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
XZ
初级用户





积分 144
发帖 65
注册 2008-3-20
来自 Taiwan
状态 离线
『第 10 楼』:  

1.如何加入 將變更安全性失敗的資料夾顯示或輸出成TXT檔

2.如何呼叫 GUI的安全性而不是自定義安全性

因為單參數下
/g "Administrator":W
安全性表設定表 只會單獨勾起 "寫入" 一項
但是正常寫入權限需要勾起 "修改,讀取與執行,清單資料夾內容,讀取,寫入"五項

/g "Administrator":R
安全性表設定表 只會單獨勾起 "讀取" 一項
但是正常寫入權限需要勾起 "讀取與執行,清單資料夾內容,讀取"三項

安全性設定表:
全權控制
修改
讀取與執行
清單資料夾內容
讀取
寫入
特殊權限
XCACLS.VBS說明:
    /G user:GUI         Grant security permissions similar to Windows GUI
                       standard (non-advanced) choices.
   /G user:Perm;Spec   Grant specified user access rights.
                       (/G adds to existing rights for user)

                       User: If User has spaces in it, enclose it in quotes.
                             If User contains #machine#, it will replace
                             #machine# with the actual machine name if it is a
                             non-domain controller, and replace it with the
                             actual domain name if it is a domain controller.

                             New to 3.0: User can be a string representing
                             the actual SID, but MUST be lead by SID#
                             Example: SID#S-1-5-21-2127521184-160...
                                      (SID string shown has been shortened)
                                      (If any user has SID# then globally all
                                       matches must match the SID (not name)
                                       so if your intention is to apply changes
                                       to all accounts that match Domain\User
                                       then do not specify SID# as one of the
                                       users.)

                       GUI: Is for standard rights and can be:
                             Permissions...
                                    F  Full control
                                    M  Modify
                                    X  read and eXecute
                                    L  List folder contents
                                    R  Read
                                    W  Write
                             Note: If a ; is present, this will be considered
                             a Perm;Spec parameter pair.

                       Perm: Is for "Files Only" and can be:
                             Permissions...
                                    F  Full control
                                    M  Modify
                                    X  read and eXecute
                                    R  Read
                                    W  Write
                             Advanced...
                                    D  Take Ownership
                                    C  Change Permissions
                                    B  Read Permissions
                                    A  Delete
                                    9  Write Attributes
                                    8  Read Attributes
                                    7  Delete Subfolders and Files
                                    6  Traverse Folder / Execute File
                                    5  Write Extended Attributes
                                    4  Read Extended Attributes
                                    3  Create Folders / Append Data
                                    2  Create Files / Write Data
                                    1  List Folder / Read Data
                       Spec is for "Folder and Subfolders only" and has the
                       same choices as Perm.


2008-5-29 19:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
XZ
初级用户





积分 144
发帖 65
注册 2008-3-20
来自 Taiwan
状态 离线
『第 11 楼』:  

因為XCACLA.VBS無法像CACLS相同一次勾選預設部分
我將 "tao0610" 的程序加上了
  if %1==R Set %%1=XLR
  if %1==W Set %%1=MXLRW

希望能讓R和W能像CACLS一樣勾起預設的選項
但是依然無法置換掉 %1的值
請求各為協助
謝謝

:lp1
set name=%1&shift
:lp
if not "%flag%"=="" (
  echo %name%              !Group%num%!               %1
  if %1==R Set %%1=XLR
  if %1==W Set %%1=MXLRW

  call cscript xcacls.vbs "%name%" /P "!Group%num%!":%1; /e
  ) else set Group%num%=%1
shift
if not "%1"=="" set/a num+=1&goto lp

2008-5-31 00:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: