home *** CD-ROM | disk | FTP | other *** search
- Check Security Descriptors (SD)
-
-
- In the Win32 Programmer's Reference, if you go to the Security overview, then
- choose the sub-topic "Allowing Access", you'll find the comment
-
- Note: It is fine to write code like this that builds security
- descriptors from scratch. It is, however, a good practice
- for people who write code that builds or manipulates
- security descriptors to first write code that explores the
- default security descriptors that Windows NT places on
- objects. For example, if Windows NT by default includes in
- a DACL an ACE granting the Local Logon SID certain access,
- it's good to know that, so that a decision not to grant any
- access to the Local Logon SID would be a conscious decision
-
- This comment is accurate, however, to begin with, this task of examining the
- SD is easier if there is sample code to start from. The purpose of the CHECK_SD
- sample is to provide sample code you can start from as you examine an SD.
- This sample only examines the SD on files, but the code can be modified to
- examine the SD on other objects.
-
- This sample is not a supported utility
-
- To run
- ------
-
- Type Check_sd to check the SD on the \\.\A: device
-
- Type Check_sd d:\a.fil to check the SD on the d:\a.fil
- file. In this case d: must be formatted NTFS,
- because only NTFS files have SD(s)
-
- Further notes
- -------------
-
- If you recompile with this define statement included:
-
- #define I_DO_NOT_WANT_THIS_CODE_TO_CLUTTER_THIS_PROGRAM_S_OUTPUT (1==0)
-
- and re-run the program, the program will display more output, including
- all the information you can access from the process Access Token, and the
- SD's of some sample objects.
-
- If you logon, run with the program built to produce the extra output as
- mentioned, save that output to a file, log off and re-run the program,
- and save the output of this second run to a different file, then you use
- WinDiff to observe how the local logon SID changes values for each session.
-
- Here is a sample test you could run to exercise DACLs involves using the
- SD_FLPPY sample in conjunction with the CHECK_SD sample:
-
- - Log on to a machine as a local Administrator
- - Do
- check_sd \\.\A: >out_bef.a
- check_sd \\.\B: >out_bef.b
- - Logoff
- - Log on the same machine as Guest on the local machine domain
- - Do
- sd_flppy
- - Try
- dir a: (observe access denied)
- dir b: (observe access denied)
- copy config.sys a:\ (get device not found)
- copy config.sys b:\ (get device not found)
- - Logoff
- - Log on the same machine as a local Administrator
- - Do
- check_sd \\.\A: >out_aft.a
- check_sd \\.\B: >out_aft.b
- - Browse the differences between out_bef.* and out_aft.*
-
- This test demonstrates that the ACLs that SD_FLPPY applies survive logoff.
- To demonstrate that the DACLs do not survive logoff, simply reboot, log back
- on as a local Administrator, and run the commands:
-
- check_sd \\.\A: >out_rbt.a
- check_sd \\.\B: >out_rbt.b
-
- to see the DACLs are again as they were.
-