Cho phép hoặc ngăn người dùng không phải quản trị viên khởi động lại/tắt Windows
Trong bài viết này, chúng tôi sẽ xem xét một số cách để quản lý quyền của người dùng không phải quản trị viên để khởi động lại hoặc tắt máy trạm hoặc máy chủ Windows. Theo mặc định, người dùng không có đặc quyền chỉ có thể khởi động lại và tắt các phiên bản Windows dành cho máy tính để bàn và không thể khởi động lại máy chủ lưu trữ Windows Server (các nút tắt và khởi động lại không khả dụng trong Menu Bắt đầu). Có thể cho phép người dùng không có đặc quyền quản trị viên cục bộ khởi động lại Windows Server không? Ngoài ra còn có một nhiệm vụ ngược lại - cách ngăn người dùng khởi động lại máy tính với Windows 10 hoặc 11, được sử dụng làm ki-ốt thông tin, bảng điều khiển điều phối, v.v.
Làm cách nào để Cho phép hoặc Ngăn tùy chọn Tắt máy/Khởi động lại trong Windows thông qua GPO?
Bạn có thể đặt quyền để khởi động lại hoặc tắt Windows bằng tham số Tắt hệ thốngtrong phần GPO Cấu hình máy tính -> Chính sách -> Cài đặt Windows -> Cài đặt bảo mật -> Chính sách cục bộ -> Chuyển nhượng quyền người dùng. Tùy chọn GPO này cho phép bạn chỉ định người dùng đăng nhập cục bộ nào có thể tắt hệ điều hành.
Xin lưu ý rằng quyền khởi động lại/tắt máy mặc định cho phiên bản máy tính để bàn Windows 10/11 và phiên bản Windows Server là khác nhau.
Mở Trình chỉnh sửa chính sách nhóm cục bộ (gpedit.msc) và điều hướng đến phần được chỉ định ở trên. Như bạn có thể thấy, các thành viên của nhóm cục bộ Quản trị viên, Người dùng và Người vận hành dự phòng có quyền tắt/khởi động lại máy tính đang chạy Windows 10 hoặc 11.
Trên Windows Server 2022/2019/2016, chỉ Quản trị viên hoặc Người vận hành dự phòng mới có thể tắt hoặc khởi động lại máy chủ. Điều đó là hợp lý, vì trong hầu hết các trường hợp, người dùng không phải quản trị viên không được có đặc quyền tắt máy chủ (thậm chí là vô tình). Chỉ cần tưởng tượng một máy chủ trang trại RDS thường bị tắt do người dùng vô tình nhấp vào nút “Tắt máy” trong menu Bắt đầu…
Trên bộ điều khiển miền Active Directory, quyền tắt Windows được ủy quyền cho:
quản trị viên
Toán tử dự phòng
Nhà điều hành máy chủ
Nhà khai thác in
Nếu người dùng không có quyền khởi động lại/tắt hệ điều hành thì sẽ xuất hiện lỗi khi chạy lệnh sau:
shutdown -r -t 0Access is denied.(5)Nếu bạn muốn cho phép một người dùng cụ thể (không có quyền quản trị viên) khởi động lại Windows Server của mình, bạn cần thêm tài khoản của họ vào chính sách này và cập nhật cài đặt GPO trên máy tính.
Bạn có thể cấp quyền tắt máy cục bộ theo cách thủ công bằng cách sử dụng công cụ ntrights kế thừa từ Bộ tài nguyên Windows Server 2003:
ntrights +r SeShutdownPrivilege -u a-d\j.smith
Để ngăn người dùng tắt hoặc khởi động lại Windows:
ntrights -r SeShutdownPrivilege -u a-d\j.smithHoặc ngược lại, bạn có thể ngăn người dùng máy trạm chạy phiên bản Windows 10/11 dành cho máy tính để bàn khởi động lại máy tính thực hiện một số loại chức năng máy chủ. Trong trường hợp này, chỉ cần xóa nhóm Người dùng khỏi chính sách cục bộ Tắt hệ thống.
Theo cách tương tự, bạn có thể ngăn chặn (hoặc cho phép) thao tác tắt/khởi động lại đối với người dùng không phải quản trị viên trên tất cả các máy tính trong Đơn vị tổ chức (OU) cụ thể của miền Active Directory bằng cách sử dụng GPO miền.
Tạo nhóm người dùng grpAllowRestartComputers trong AD, những người mà bạn muốn cấp quyền khởi động lại máy tính. Bạn có thể tạo một nhóm mới bằng phần đính vào ADUC (
dsa.msc) hoặc lệnh ghép ngắn New-ADGroup PowerShell. Thêm người dùng vào nhóm;
Mở Bảng điều khiển quản lý chính sách nhóm miền (
gpmc.msc). Chọn OU có các máy tính bạn muốn áp dụng chính sách và chọn Tạo GPO trong miền này và Liên kết nó tại đây;
Đặt tên GPO (gpoAllowReboot) và chỉnh sửa nó;
Điều hướng đến Cấu hình máy tính -> Chính sách -> Cài đặt Windows -> Cài đặt bảo mật -> Chỉ định quyền người dùng;
-
Mở tùy chọn Tắt, bật chính sách và thêm nhóm mục tiêu của bạn (
grpAllowRestartComputers) và tích hợp sẵn
Administratorsnhóm;
Cập nhật cài đặt GPO trên máy tính mục tiêu và kiểm tra cài đặt GPO kết quả bằng
rsop.mscsnap-in. Người dùng trong nhóm của bạn hiện có thể tắt hoặc khởi động lại máy chủ này;
Các tùy chọn tắt máy và khởi động lại hệ điều hành sẽ xuất hiện trong Start Menu của người dùng.
Bạn cũng có thể cấp quyền bắt đầu/dừng/khởi động lại dịch vụ cho người dùng không phải quản trị viên.
Cho phép Tắt máy/Khởi động lại từ xa mà không cần quyền của Quản trị viên
Bạn có thể cho phép một số người dùng không phải quản trị viên khởi động lại Windows Server của mình từ xa bằng cách sử dụng
shutdownlệnh mà không cấp cho họ đặc quyền quản trị viên cục bộ, quyền đăng nhập thông qua Máy tính Từ xa (RDP) hoặc quyền đăng nhập cục bộ (nếu phương thức đăng nhập này không được phép)
Để thực hiện, hãy thêm tài khoản người dùng vào tùy chọn Chính sách nhóm Buộc tắt máy từ hệ thống từ xa trong cùng phần GPO (Chỉ định quyền người dùng).
Theo mặc định, chỉ quản trị viên mới có thể tắt/khởi động lại máy chủ từ xa. Thêm tài khoản người dùng vào chính sách.
Bạn cũng có thể cấp SeRemoteShutdownPrivilege bằng công cụ dòng lệnh ntrights:
ntrights +r SeRemoteShutdownPrivilege -u a-d\j.smithSau đó, người dùng sẽ nhận được đặc quyền SeRemoteShutdown và có thể khởi động lại máy chủ từ xa bằng lệnh:
shutdown -m \\hamb-rds01 -r -f -t 0Hoặc sử dụng lệnh ghép ngắn Restart-Computer PowerShell:
Restart-Computer -ComputerName hamb-rds01 -ForceVERBOSE: Performing the operation "Enable the Remote shutdown access rights and restart the computer." on target ...Nếu WinRM (Quản lý từ xa của Windows) được bật trên máy tính từ xa, bạn có thể sử dụng WSman thay vì WMI để kết nối:
Restart-Computer -ComputerName hamb-rds01 -Protocol WSManNếu người dùng không có quyền kết nối với không gian tên WMI, lỗi sẽ xuất hiện:
Restart-Computer : Failed to restart the computer srv-rds1 with the following error message: The WS-Management servicecannot process the request. The WMI service returned an 'access denied' error. .Ngoài ra, bạn có thể sử dụng Quản trị vừa đủ Windows PowerShell (JEA) để cho phép người dùng chỉ chạy một số lệnh nhất định trên máy chủ từ xa.
Tắt (Ẩn) Tùy chọn Tắt máy hoặc Khởi động lại từ Windows?
Bạn có thể sử dụng Chính sách nhóm để ẩn các tùy chọn Tắt máy, Khởi động lại, Ngủ và Ngủ đông khỏi màn hình đăng nhập và Menu Bắt đầu. Tùy chọn GPO này được gọi là Xóa và ngăn truy cập vào các lệnh Tắt máy, Khởi động lại, Ngủ và Ngủ đông và nằm trong Cấu hình người dùng -> Mẫu quản trị -> Menu bắt đầu và Thanh tác vụ
Sau khi bạn bật chính sách này, người dùng sẽ chỉ có thể ngắt kết nối phiên hiện tại hoặc sử dụng
logoffyêu cầu. Các nút Tắt máy, Ngủ và Khởi động lại sẽ không khả dụng.
Bạn có thể sử dụng một số chỉnh sửa sổ đăng ký để chỉ ẩn một mục cụ thể khỏi menu Nguồn/Tắt máy trong Windows. Ví dụ: bạn chỉ muốn ẩn tùy chọn “Tắt máy” trong menu Bắt đầu nhưng vẫn giữ “Khởi động lại”.
Mở Trình chỉnh sửa sổ đăng ký (
regedit.exe);
Truy cập HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown;
Thay đổi tùy chọn Giá trị thành 1;
Thao tác này sẽ chỉ ẩn tùy chọn “Tắt máy” khỏi Menu Bắt đầu của Windows.
Bạn có thể đặt tùy chọn đăng ký này từ dấu nhắc lệnh:
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown" /v "value" /t REG_DWORD /d 1 /fHoặc sử dụng PowerShell:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown" -Name "value" -Value 1Ngoài ra, bạn có thể ẩn các tùy chọn khác trong Start Menu và màn hình đăng nhập Windows:
Chỉ ẩn tùy chọn Khởi động lại trong Windows:
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HideRestart " /v "value" /t REG_DWORD /d 1 /fẨn tùy chọn Ngủ đông khỏi Menu Bắt đầu trong Windows: R
EG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HideHibernate" /v "value" /t REG_DWORD /d 1 /fẨn Ngủ khỏi Menu Bắt đầu:
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HideSleep" /v "value" /t REG_DWORD /d 1 /fĐể tắt hoàn toàn nút Nguồn và xóa tùy chọn “Tắt hoặc đăng xuất ” khỏi menu WinX:
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HidePowerButton" /v "value" /t REG_DWORD /d 1 /f
Nếu các cài đặt này không hoạt động trên máy tính của bạn, hãy kiểm tra các khóa đăng ký tương tự trong HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start\.
Xin lưu ý rằng trong Windows Server 2019/2022, sau khi gán quyền khởi động lại cho người dùng, lỗi có thể xuất hiện:
You don’t have permission to shutdown or restart this computer.Trong trường hợp này, bạn cần bật tham số UAC “Kiểm soát tài khoản người dùng: Chạy tất cả quản trị viên trong Chế độ phê duyệt của quản trị viên ” trong GPO:
Làm cách nào để tìm ra ai đã khởi động lại/tắt máy chủ Windows?
Nếu bạn đã cấp quyền khởi động lại máy tính cho người dùng không phải quản trị viên, bạn có thể muốn biết ai đã khởi động lại Windows Server: người dùng hoặc một trong các quản trị viên.
Sử dụng Trình xem sự kiện (
eventvwr.msc) để tìm kiếm nhật ký tắt máy trong Windows. Chuyển đến Nhật ký Windows -> Hệ thống và lọc nhật ký hiện tại theo ID sự kiện 1074.
Bạn cũng có thể sử dụng bộ lọc sự kiện trong Trình xem sự kiện để xem nhật ký kết nối RDP.
Như bạn có thể thấy, có các sự kiện khởi động lại máy chủ trong nhật ký theo thứ tự thời gian. Mô tả sự kiện bao gồm thời gian khởi động lại, lý do và tài khoản người dùng đã khởi động lại máy chủ.
Log Name:SystemSource: User32
EventID: 1074
The process C:\Windows\system32\shutdown.exe (BE-BAK01) has initiated the restart of computer MUN-BAK01 on behalf of user corp\jsmith for the following reason: No title for this reason could be foundReason Code: 0x800000ff
Reason Code: 0x500ff
Shutdown Type: restart
Comment:
Bạn có thể nhận thông tin về các sự kiện tắt Windows gần đây bằng cách sử dụng cùng một ID sự kiện 1076:
The process C:\Program Files\VMware\VMware Tools\vmtoolsd.exe (MUN-BAK1) has initiated the shutdown of computer MUN-BAK1 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Legacy API shutdown
Reason Code: 0x80070000
Shutdown Type: shutdown
Comment:Sử dụng tập lệnh PowerShell đơn giản sau đây để liệt kê mười sự kiện khởi động lại và tắt máy tính gần đây nhất. Danh sách này chứa tên của người dùng và các quy trình bắt đầu khởi động lại.
Get-EventLog -LogName System |
where {$_.EventId -eq 1074} |select-object -first 10 |
ForEach-Object {
$rv = New-Object PSObject | Select-Object Date, User, Action, process, Reason, ReasonCode
if ($_.ReplacementStrings[4]) {
$rv.Date = $_.TimeGenerated
$rv.User = $_.ReplacementStrings[6]
$rv.Process = $_.ReplacementStrings[0]
$rv.Action = $_.ReplacementStrings[4]
$rv.Reason = $_.ReplacementStrings[2]
$rv
}
} | Select-Object Date, Action, Reason, User, Process |ft












