Foxpert Software Development & Consulting

Menu

Whitepapers
Downloads
Knowlbits
Guineu

2006-10Oct-27

Checking for privileges

Windows maintains two different security related information: permissions and privileges

Permissions apply to particular objects. They control if a user can read, write, delete, etc. a particular file, manage a certain printer, or access a specifc registry key. Permissions never apply to some abstract group, but always to a very specifc object. To manage permissions, Windows uses ACLs.

Privileges, on the other hand, are enforced system wide. They define if a user or group has the right to perform some kind of operation independed of the object. For example, a user might have the right to install any driver, debug any program, shutdown the entire system. You can't limit a user to only install a particular driver, debug a specific program, etc.

A user (called Token in Microsoft security speak) has a certain set of privileges. However, this doesn't mean that a privilege is enabled. A privilege that is assigned to a user can be enabled, disabled or removed. Disabled privileges can be enabled. Privileges that have been removed or never have been assigned cannot be added to the list of privileges for that user. If your application depends on a partiular privilege, such as installing a printer (SeLoadDriverPrivilege), you have to check if the privilege is available and enabled.

There are only a limited number of privileges defined in Windows. You cannot add your own ones:

SeCreateTokenPrivilege
SeAssignPrimaryTokenPrivilege
SeLockMemoryPrivilege
SeIncreaseQuotaPrivilege
SeUnsolicitedInputPrivilege
eMachineAccountPrivilege
SeTcbPrivilege
SeSecurityPrivilege
SeTakeOwnershipPrivilege
SeLoadDriverPrivilege
SeSystemProfilePrivilege
SeSystemtimePrivilege
SeProfileSingleProcessPrivilege
SeIncreaseBasePriorityPrivilege
SeCreatePagefilePrivilege
SeCreatePermanentPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeShutdownPrivilege
SeDebugPrivilege
SeAuditPrivilege
SeSystemEnvironmentPrivilege
SeChangeNotifyPrivilege
SeRemoteShutdownPrivilege
SeUndockPrivilege
SeSyncAgentPrivilege
SeEnableDelegationPrivilege
SeManageVolumePrivilege
SeImpersonatePrivilege
SeCreateGlobalPrivilege

To check whether a user has got a particular privilege, I wrote a little utility called HasPrivilege.prg.

Previous KnowlBits

RSS

February 2011 (2)

December 2010 (1)

October 2009 (2)

September 2009 (1)

August 2009 (4)

July 2009 (2)

June 2009 (2)

May 2009 (1)

April 2009 (1)

March 2009 (1)

August 2008 (1)

July 2008 (2)

May 2008 (1)

April 2008 (2)

January 2008 (2)

December 2007 (2)

November 2007 (2)

October 2007 (1)

September 2007 (1)

August 2007 (5)

July 2007 (4)

May 2007 (6)

March 2007 (3)

February 2007 (7)

January 2007 (6)

November 2006 (1)

October 2006 (3)

September 2006 (10)

June 2006 (2)

May 2006 (6)

April 2006 (1)


Impressum Kontakt Contact