本节我们将学习用户与组的管理,并且有多种不同的方法。
⽤户账户概述
不同的⽤户身份拥有不同的权限
每个⽤户包含⼀个名称和⼀个密码
⽤户帐户拥有唯⼀的安全标识符
在Windows系统中,每个⽤户账户都有⼀个独特的安全标识符(Security Identifier,SID),它在系统内部⽤于控制对各种资源的访问权限。查看⽤户的SID可以通过⼏种不同的⽅法完成:
1. 使⽤命令提示符(CMD)
1. 打开命令提示符(可以在开始菜单搜索“cmd”或“命令提示符”)。
2. 输⼊以下命令来查看当前登录⽤户的SID:
whoami /user
3. 如果需要查看特定⽤户的SID,可以使⽤以下命令:
wmic useraccount where name='⽤户名' get sid
把 ⽤户名 替换成实际的Windows账户名。
2. 使⽤Windows PowerShell
1. 打开PowerShell(可以在开始菜单搜索“PowerShell”)。
2. 输⼊以下命令来查看所有⽤户的SID:
Get-WmiObject Win32_UserAccount | Select-Object Name,SID
3. 如果只需要查看特定⽤户的SID,可以使⽤:
powershell
复制代码
Get-WmiObject Win32_UserAccount | Where-Object {$_.Name -eq '⽤户名'} | Sele
ct-Object SID
同样,将 ⽤户名 替换为⽬标⽤户的账户名。
拓展知识(可以了解一下)
PowerShell和命令提示符(CMD)是Windows环境中两种常⽤的命令⾏界⾯,它们各⾃具有独特的特点和功能。虽然它们在某些基础命令上有重叠,但它们的设计⽬的、能⼒和⽤途⼤有不同。
1. 设计和⽬的
CMD(Command Prompt)是⼀个基于⽂本的命令⾏界⾯,主要⽤于执⾏简单的命令和批处理脚
本。它继承⾃早期的MS-DOS系统。
PowerShell 是⼀个跨平台的任务⾃动化和配置管理框架,包括⼀个命令⾏壳界⾯和脚本语⾔。它是为了解决更复杂的系统管理任务⽽设计的,集成了深层的.NET框架⽀持。
2. 功能和能⼒
CMD 提供的命令相对简单,主要⽤于⽂件操作、系统任务和简单的配置更改。它的命令和语法较为直观,易于学习。
PowerShell 提供了⼀个全⾯的脚本语⾔,⽀持复杂的逻辑、流程控制、函数等。它可以直接调
⽤.NET库的对象和⽅法,能够执⾏复杂的数据操作和系统管理任务。
3. 命令和脚本
CMD 使⽤的是传统的命令⾏语法,如 dir、copy、del 等。
PowerShell 使⽤了基于对象的命令(称为cmdlet),如 Get-ChildItem、Copy-Item、Remove-
Item 等。这些cmdlet 输出的是对象,可以通过管道传递给其他cmdlet进⾏进⼀步操作。
4. 扩展性和集成
CMD 的扩展性相对有限,主要依赖外部脚本或程序来扩展其功能。
PowerShell 可以⽆缝集成.NET框架,允许直接在脚本中创建和操作.NET对象,提供了强⼤的扩展
性和灵活性。此外,PowerShell模块和第三⽅库极⼤地扩展了其功能。
5. 错误处理
CMD 的错误处理相对简单,主要依赖错误代码。
PowerShell 提供了复杂的异常处理机制,可以捕获、处理和传递错误,与现代编程语⾔中的错误处理类似。
6. ⽤户和技术⽀持
CMD 虽然在很多系统和环境中仍被⼴泛使⽤,但微软已明确表示不会在CMD中引⼊新功能,其开
发重⼼已转向PowerShell。
PowerShell 被视为未来的⽅向,得到了微软的积极开发和⽀持,同时拥有⼀个活跃的社区和⼤量的在线资源。
CMD和PowerShell虽然都是Windows命令⾏界⾯,但它们与Windows内核的交互⽅式存在根本区别,主要由它们的架构和设计决定
a. 基本架构和设计
CMD:
直接性:CMD(命令提示符)主要是⼀个命令解释器,直接在⽤户空间运⾏,其与内核的交互主要是通过系统调⽤来执⾏⽂件操作、进程管理等任务。CMD的操作通常⽐较直接,对操作系统资源的控制相对简单。
传统接⼝:CMD继承⾃MS-DOS,许多其命令都是直接与硬件或低级系统服务进⾏交互的简单封装。
PowerShell:
基于.NET Framework:PowerShell建⽴在.NET Framework之上,使其能够利⽤.NET的强⼤功能,如内存管理、异常处理和安全性。PowerShell的命令(cmdlets)实际上是调⽤.NET Framework的类和⽅法,这些类和⽅法再与Windows内核进⾏交互。
对象导向:PowerShell处理的是对象,⽽⾮传统的⽂本输出。这意味着PowerShell cmdlets在执⾏操作时,实际上是创建和操纵.NET对象,然后这些对象可能与内核级的API交互。
b. 内核交互
CMD:
简单封装:CMD命令通常直接映射到系统的API调⽤上,例如⽂件操作命令(如copy、del等)直接调⽤相应的Win32 API,这些API与Windows内核进⾏交互。
效率:由于其简单直接的设计,对于简单任务,CMD在执⾏效率上可能略优于PowerShell。
PowerShell:
复杂调⽤:PowerShell通过.NET Framework间接调⽤内核API。这种间接层增加了额外的处理步骤,但也允许更复杂和灵活的操作。
安全和稳定:PowerShell的.NET基础提供了更好的错误处理和安全特性,这有助于保护系统不受恶意脚本和命令的影响。
执⾏效率:对于简单的系统命令,CMD可能在性能上略胜⼀筹,因为它直接执⾏系统调⽤,⽽没有额外的抽象层。
c. 性能和能⼒
执⾏效率:对于简单的系统命令,CMD可能在性能上略胜⼀筹,因为它直接执⾏系统调⽤,⽽没有额外的抽象层。
然⽽,对于需要复杂数据处理或系统管理的任务,PowerShell的强⼤功能和灵活性通常可以提供更好的效果。
功能强⼤:PowerShell能够执⾏更复杂的任务和⾃动化脚本,尤其是在需要详细的错误处理、⽇志记录或是与其他Windows管理⼯具集成时。
总的来说,CMD和PowerShell在与内核的交互⽅式、设计原则和使⽤场景上都有显著差异。PowerShell以其现代的设计和强⼤的功能成为系统管理员和⾼级⽤户的⾸选⼯具,⽽CMD则依旧适⽤于需要快速执⾏简单命令的场景。
3. 使⽤注册表编辑器
1. 打开注册表编辑器(在开始菜单搜索“regedit”或直接输入“注册表编辑器”)。
2. 导航到以下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
3. 在 ProfileList 下,你会看到多个以SID命名的⼦键。点击每个⼦键,查看 ProfileImagePat
h 条⽬,它显示了与该SID关联的⽤户的配置⽂件路径,通常包含⽤户名称。
以上⽅法中,使⽤命令提示符或PowerShell查看SID通常更直接且易于操作。注册表⽅法更为繁琐,且直接修改注册表有⻛险,需要谨慎处理。
这三种方法都可以找到用户的SID,下面我们学习一下用户的SID结构
SID 结构
S-1-5-21-18113568-1484407331-670320440-1001
S:这是SID的前缀,表示这是⼀个安全标识符(Security Identifier)。
1:这是SID的版本号。⽬前,Windows SID的版本号始终为1。
5:这是SID的“领域”标识符(也称为权威部分)。数字5代表NT权威机构,这是⼤多数Windows系
统使⽤的标准。
21-18113568-1484407331-670320440:这是域或本地计算机的唯⼀标识符,称为⼦权威部分或
者域标识符。这⼀部分的具体数字代表创建该SID的特定域或本地计算机。每个域或计算机在创建
时,系统会⽣成这样⼀个独特的数字序列,以确保全局的唯⼀性。
1001:这是相对标识符(Relative Identifier, RID)。这是分配给具体⽤户、组或其他安全主体的唯⼀编号。RID⽤于区分同⼀域/计算机内的不同⽤户或组。例如,常⻅的RID有:
500:表示域的管理员账户。
501:表示来宾账户。
1000以上的数字通常表示普通⽤户账户。
域标识符的作⽤:
唯⼀性:这串数字确保了在全⽹络或在多个系统中的唯⼀性。⽆论⽹络内有多少计算机或域,每个域或计算机的标识符都是不同的。
安全性:在权限和安全策略应⽤时,通过这个标识符可以精确地识别出数据或请求来⾃哪个域或计算机。这对于实施访问控制和权限管理⾄关重要。
管理:在⼤型⽹络环境中,管理者可以通过这个标识符来追踪和管理来⾃不同域的资源和⽤户⾏为 。
⽤户管理
当⼀台计算机需要提供给多⼈使⽤,或允许其他⼈通过⽹络访问这台计算机,并且需要为不同的使⽤者分配不同的权限,如关闭系统的权限,修改系统时间的权限,访问⽂件的权限(只读或是可修改),就需要创建多个⽤户帐户。
在服务器管理器中管理⽤户可以分为
创建⽤户
为⽤户重置密码
重命名⽤户
启⽤、禁⽤⽤户帐户
删除⽤户帐户
为⽤户设置权限
打开本地组策略编辑器 gpedit.msc 本地组策略
(一般虚拟机中是有的,下面解决办法如果物理机没有的话可加可不加,因为我们是在虚拟机中操作的)
Windows 搜索打开本地组策略编辑器
1. win+s 打开搜索快捷键
2. 输⼊编辑组策略或者gpedit
运⾏命令 打开 本地组策略编辑器
1. win+R 打开运⾏对话框
2. 输⼊gpedit.msc
CMD 或者powershell 打开 本地组策略编辑器
控制台⻚⾯ 输⼊ gpedit.msc
通过⽂件资源管理器打开 本地组策略编辑器
1. win+E 打开⽂件资源管理器
2. 地址栏中输⼊gpedit.msc
C:/Windows/System 32,找到gpedit.msc
控制⾯板打开 本地组策略编辑器
可能出现问题
解决⽅法
1.打开记事本,复制粘贴以下代码过去
这段批处理脚本主要⽤于⾃动安装在Windows系统中找到的特定更新包。
@echo off
pushd "%~dp0"
dir /